Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into Kungfu

This commit is contained in:
Aurorablade
2016-04-22 21:45:18 -04:00
198 changed files with 7925 additions and 5103 deletions
@@ -738,7 +738,7 @@
"aoj" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 28},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main)
"aok" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main)
"aol" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/security/podbay)
"aom" = (/obj/machinery/door/poddoor/four_tile_ver{id_tag = "secpodbay"},/obj/structure/spacepoddoor,/turf/simulated/floor/engine,/area/security/podbay)
"aom" = (/obj/machinery/door/poddoor/multi_tile/four_tile_ver{id_tag = "secpodbay"},/obj/structure/spacepoddoor,/turf/simulated/floor/engine,/area/security/podbay)
"aon" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/range)
"aoo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/range)
"aop" = (/obj/structure/rack{pixel_y = 2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = 2; pixel_y = -2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Firing Range"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/security/range)
@@ -1327,7 +1327,7 @@
"azA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/starboard)
"azB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/starboard)
"azC" = (/obj/structure/flora/kirbyplants,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay)
"azD" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/three_tile_ver{id_tag = "mechpodbay"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop)
"azD" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/multi_tile/three_tile_ver{id_tag = "mechpodbay"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop)
"azE" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay)
"azF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard)
"azG" = (/obj/structure/closet/crate/medical,/obj/item/stack/cable_coil,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard)
@@ -8448,7 +8448,7 @@
"dgy" = (/obj/structure/extinguisher_cabinet,/turf/simulated/wall/r_wall,/area/hallway/secondary/entry{name = "Arrivals"})
"dgz" = (/turf/simulated/floor/engine,/area/hallway/secondary/entry{name = "Arrivals"})
"dgA" = (/obj/machinery/firealarm,/turf/simulated/wall/r_wall,/area/hallway/secondary/entry{name = "Arrivals"})
"dgB" = (/obj/machinery/door/poddoor/four_tile_hor{id_tag = "escapepodbay"},/obj/structure/spacepoddoor{dir = 4; icon_state = "n_beam"; tag = ""},/turf/simulated/floor/engine,/area/hallway/secondary/entry{name = "Arrivals"})
"dgB" = (/obj/machinery/door/poddoor/multi_tile/four_tile_hor{id_tag = "escapepodbay"},/obj/structure/spacepoddoor{dir = 4; icon_state = "n_beam"; tag = ""},/turf/simulated/floor/engine,/area/hallway/secondary/entry{name = "Arrivals"})
"dgC" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard)
"dgD" = (/obj/machinery/camera{c_tag = "Quartermaster's Office"; dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/engine,/area/hallway/secondary/entry{name = "Arrivals"})
"dgE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboard)
+39 -38
View File
@@ -231,7 +231,7 @@
"aew" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/carpet,/area/security/hos)
"aex" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos)
"aey" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/blue/hollow,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/security/podbay)
"aez" = (/obj/structure/spacepoddoor{luminosity = 3},/obj/machinery/door/poddoor/four_tile_ver{id_tag = "secpodbay"; layer = 3.1; req_access_txt = "71"},/turf/simulated/floor/engine,/area/security/podbay)
"aez" = (/obj/structure/spacepoddoor{luminosity = 3},/obj/machinery/door/poddoor/multi_tile/four_tile_ver{id_tag = "secpodbay"; layer = 3.1; req_access_txt = "71"},/turf/simulated/floor/engine,/area/security/podbay)
"aeA" = (/turf/simulated/wall/r_wall,/area/security/range)
"aeB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/item/device/radio/intercom/department/security{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/evidence)
"aeC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/evidence)
@@ -2447,7 +2447,7 @@
"aVc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall,/area/hydroponics)
"aVd" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aVe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/hydroponics)
"aVf" = (/obj/machinery/power/apc{dir = 1; name = "Hydroponics APC"; pixel_y = 24},/obj/structure/table,/obj/machinery/reagentgrinder,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aVf" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/camera{c_tag = "Hydroponics Storage"; network = list("SS13")},/obj/structure/closet/crate/hydroponics/prespawned,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aVg" = (/obj/machinery/chem_master,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aVh" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aVi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/library)
@@ -2521,19 +2521,19 @@
"aWy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aWz" = (/mob/living/simple_animal/hostile/retaliate/goat,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aWA" = (/obj/machinery/door/window/eastright{tag = "icon-right"; name = "Hydroponics Delivery"; icon_state = "right"; dir = 2; req_access_txt = "35"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWB" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/camera{c_tag = "Hydroponics Pasture"; network = list("SS13")},/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/grass,/area/hydroponics)
"aWB" = (/obj/structure/table,/obj/item/weapon/book/manual/hydroponics_pod_people,/obj/item/weapon/paper/hydroponics,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWC" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/turf/simulated/floor/grass,/area/hydroponics)
"aWD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/grass,/area/hydroponics)
"aWE" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/portable_atmospherics/hydroponics/soil,/turf/simulated/floor/grass,/area/hydroponics)
"aWF" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/crate/hydroponics/prespawned,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWG" = (/obj/structure/table,/obj/item/weapon/watertank,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWH" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWF" = (/obj/machinery/power/apc{dir = 1; name = "Hydroponics APC"; pixel_y = 24},/obj/structure/table,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWG" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/camera{c_tag = "Hydroponics Pasture"; network = list("SS13")},/obj/machinery/portable_atmospherics/hydroponics/soil,/turf/simulated/floor/grass,/area/hydroponics)
"aWH" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/hydroponics)
"aWJ" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/structure/closet/secure_closet/hydroponics,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWL" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall,/area/hydroponics)
"aWM" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWN" = (/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWN" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aWO" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aWP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall,/area/library)
"aWQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light{dir = 8},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/library)
@@ -2552,7 +2552,7 @@
"aXd" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/unary/vent_pump,/obj/effect/decal/warning_stripes/yellow/hollow,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/escapepodbay)
"aXe" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/engine,/area/escapepodbay)
"aXf" = (/obj/machinery/light,/turf/simulated/floor/engine,/area/escapepodbay)
"aXg" = (/obj/structure/spacepoddoor{luminosity = 3},/obj/machinery/door/poddoor/four_tile_ver{id_tag = "escapepodbay"; layer = 3.1; req_one_access_txt = "13"},/turf/simulated/floor/engine,/area/escapepodbay)
"aXg" = (/obj/structure/spacepoddoor{luminosity = 3},/obj/machinery/door/poddoor/multi_tile/four_tile_ver{id_tag = "escapepodbay"; layer = 3.1; req_one_access_txt = "13"},/turf/simulated/floor/engine,/area/escapepodbay)
"aXh" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/arrival/station)
"aXi" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"aXj" = (/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/entry)
@@ -2627,11 +2627,11 @@
"aYA" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "asteroid"; tag = "icon-asteroid (NORTH)"},/turf/simulated/floor/plasteel{tag = "icon-siding2 (NORTH)"; icon_state = "siding2"; dir = 1},/turf/simulated/floor/plasteel{tag = "icon-siding1 (NORTH)"; icon_state = "siding1"; dir = 1},/area/hydroponics)
"aYB" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Hydroponics Pasture"; req_access_txt = "35"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYD" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYE" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/camera{c_tag = "Hydroponics Storage"; network = list("SS13")},/obj/structure/table,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYD" = (/obj/machinery/atmospherics/binary/valve{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYE" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/obj/item/weapon/watertank,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/closet/secure_closet/hydroponics,/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYH" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/obj/machinery/light,/obj/machinery/atmospherics/binary/valve{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"aYI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/library)
"aYJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/library)
"aYK" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/library)
@@ -2713,7 +2713,7 @@
"bai" = (/mob/living/simple_animal/cow{name = "Betsy"},/turf/simulated/floor/grass,/area/hydroponics)
"baj" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/grass,/area/hydroponics)
"bak" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hydroponics)
"bal" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor/plasteel,/area/hydroponics)
"bal" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"bam" = (/obj/machinery/bookbinder{pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/wood,/area/library)
"ban" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library)
"bao" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library)
@@ -2785,14 +2785,14 @@
"bbC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/flora/ausbushes/fullgrass,/obj/machinery/portable_atmospherics/hydroponics/soil,/turf/simulated/floor/grass,/area/hydroponics)
"bbD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/portable_atmospherics/hydroponics/soil,/mob/living/simple_animal/chicken{name = "Commander Clucky"},/turf/simulated/floor/grass,/area/hydroponics)
"bbE" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/grass,/area/hydroponics)
"bbF" = (/obj/machinery/botany/editor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bbG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bbH" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"bbF" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"bbG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"bbH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"bbI" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bbJ" = (/obj/machinery/vending/hydroseeds,/obj/machinery/camera{c_tag = "Hydroponics North"; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bbK" = (/obj/machinery/biogenerator,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bbL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; name = "Hydroponics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bbM" = (/obj/machinery/floodlight,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bbJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"bbK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/hydroponics)
"bbL" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/hydroponics)
"bbM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"bbN" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/wood,/area/library)
"bbO" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor/wood,/area/library)
"bbP" = (/turf/simulated/floor/carpet,/area/library)
@@ -2860,11 +2860,11 @@
"bcZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics Pasture"; req_access_txt = "28"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bda" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/kitchen)
"bdb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/kitchen)
"bdc" = (/obj/machinery/light{dir = 8},/obj/machinery/botany/extractor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bdc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment,/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; name = "Hydroponics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/botany/extractor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bdd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "green"},/area/hydroponics)
"bde" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "green"},/area/hydroponics)
"bdf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "green"},/area/hydroponics)
"bdg" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/floodlight,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bdf" = (/obj/machinery/botany/editor,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bdg" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/seed_extractor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bdh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"bdi" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"bdj" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/wood,/area/library)
@@ -3187,7 +3187,7 @@
"bjo" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"bjp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bjq" = (/obj/machinery/processor,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"bjr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"bjr" = (/obj/machinery/biogenerator,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bjs" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bjt" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"bju" = (/turf/simulated/wall,/area/hallway/primary/starboard/east)
@@ -3273,7 +3273,7 @@
"bkW" = (/obj/structure/table/woodentable,/obj/item/weapon/kitchen/utensil/fork,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bkX" = (/obj/effect/landmark/start{name = "Chef"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bkY" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/requests_console{department = "Kitchen"; name = "Kitchen Requests Console"; departmentType = 2; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"bkZ" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bkZ" = (/obj/machinery/camera{c_tag = "Hydroponics North"; network = list("SS13")},/obj/machinery/vending/hydroseeds,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"bla" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"blb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 16},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east)
"blc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east)
@@ -6473,7 +6473,7 @@
"cuy" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab)
"cuz" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"cuA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"cuB" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/three_tile_ver{id_tag = "mechpodbay"; layer = 3.1; req_access_txt = "70"},/turf/simulated/floor/engine,/area/engine/mechanic_workshop)
"cuB" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/multi_tile/three_tile_ver{id_tag = "mechpodbay"; layer = 3.1; req_access_txt = "70"},/turf/simulated/floor/engine,/area/engine/mechanic_workshop)
"cuC" = (/obj/machinery/door_control{desc = "A remote control-switch for the pod doors."; id = "mechpodbay"; name = "Pod Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "70"},/turf/simulated/floor/engine,/area/engine/mechanic_workshop)
"cuD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/engine,/area/engine/mechanic_workshop)
"cuE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/engine,/area/engine/mechanic_workshop)
@@ -7180,7 +7180,7 @@
"cId" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cIe" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cIf" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/item/weapon/book/manual/sop_medical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/medbreak)
"cIg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"cIg" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"cIh" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
"cIi" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
"cIj" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
@@ -7733,7 +7733,7 @@
"cSK" = (/obj/machinery/light/spot,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"cSL" = (/obj/machinery/light/small{dir = 8},/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/storage/secure)
"cSM" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"cSN" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"cSN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"cSO" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering)
"cSP" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/engine/engineering)
"cSQ" = (/obj/machinery/field/generator{anchored = 1; state = 2},/turf/simulated/floor/plating/airless,/area/space)
@@ -8025,7 +8025,7 @@
"cYq" = (/turf/simulated/floor/plating{icon_state = "platingdmg3"},/area/maintenance/asmaint2)
"cYr" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/turf/simulated/wall/r_wall,/area/maintenance/turbine)
"cYs" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 5; tag = "icon-intact-y (NORTHWEST)"},/turf/simulated/wall/r_wall,/area/maintenance/turbine)
"cYt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"cYt" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"cYu" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreencorner"},/area/medical/virology)
"cYv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plating,/area/maintenance/turbine)
"cYw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine)
@@ -8074,8 +8074,8 @@
"cZn" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cZo" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"cZp" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted{dir = 1},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"cZq" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/hydroponics)
"cZr" = (/obj/machinery/seed_extractor,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"cZq" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/floodlight,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"cZr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "green"},/area/hydroponics)
"cZs" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine)
"cZt" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine)
"cZu" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine)
@@ -8427,7 +8427,7 @@
"dgc" = (/obj/machinery/door/airlock/glass{name = "Pod Bay"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/abandoned)
"dgd" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/plating,/area/shuttle/abandoned)
"dge" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall/interior{tag = "icon-swall_f10"; icon_state = "swall_f10"},/area/shuttle/abandoned)
"dgf" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/two_tile_ver{id_tag = "whiteshippoddoor"; layer = 3.1},/turf/simulated/shuttle/plating,/area/shuttle/abandoned)
"dgf" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/multi_tile/two_tile_ver{id_tag = "whiteshippoddoor"; layer = 3.1},/turf/simulated/shuttle/plating,/area/shuttle/abandoned)
"dgg" = (/obj/machinery/door_control{id = "whiteshippoddoor"; name = "Pod Door Control"; pixel_y = -24},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/abandoned)
"dgh" = (/obj/structure/table,/obj/item/weapon/screwdriver,/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/abandoned)
"dgi" = (/obj/structure/table,/obj/item/device/radio,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/abandoned)
@@ -8722,6 +8722,7 @@
"dlL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/prison/cell_block/A)
"dlM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison/cell_block/A)
"dlN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/prison/cell_block/C)
"dlO" = (/obj/machinery/light{dir = 8},/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
"dlP" = (/obj/structure/stool/bed,/obj/machinery/flasher{id = "Cell 5"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/prison/cell_block/B)
"dlQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/power/treadmill{dir = 4},/obj/structure/cable/yellow,/obj/machinery/treadmill_monitor{id = "Cell 5"; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison/cell_block/B)
"dlR" = (/obj/structure/stool/bed,/obj/machinery/flasher{id = "Cell 4"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/prison/cell_block/A)
@@ -8850,17 +8851,17 @@ bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbi
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaNhaNmaNiaODaOEaOFaOGaOHaOIaOJaOKaOLaOMaONaOOaKzaKBaOPaMoaOQaORaOSaOTaOSaOUaKHaOVaMqaOWaOXaOYaOXaOZaPaaPbaPcaPdaPdaPdaPdaPdaPdaPeaPfaMvbikaLRaPgaNHaPhaNJaPiaLRbikaJGaJLaJMaPjaPkaPlaPmaPnaJMaGvaIKaPoaPoaKPaPpaMHaKSaPqaKSaMHaPraKWaPsaPsaIKaPtazUaPuazIaKbaEeaPvaPvaPvaPvaPwaPxaPyaPzaPAaPBaPBaPBaPCaPBaPDaPEaPFaPGaPHaPEaPIaPJazxayGayGayGayGayGayGayGayGayGayGayGayGaBMayGayGayGayGayHaDxaOiazvaabazvayHaPLaPMaPNaPOaPPaPQaPRaPRaPRaPRaPSaPTaPUaPVaPWaPXaPWaPYaPWaPWaPZaQaaQbaQbaQcaQdaQeaQeaQeaQeaQeaQeaQeaQeaQeabLadbbikbikbikbikbikbikbikaaabdBaQfbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaONaQgaQhaQiaOMaQjaOFaQjaOFaQjaOFaQjaOMaQkaQlaKzaKBaQmaMoaQnaQoaQpaQqaQraQsaKHaQtaMqaQuaQvaQwaQxaQyaKHaQzaPdaPdaPdaPdaPdaPdaPdaPeaQAaMvaabaLRaQBaQCaQDaQEaQFaLRaabaJGaJLaJMaQGaQHaQIaQJaQKaJMaGvaIKaIKaIKaIKaQLaLXaJOaLYaJOaLXaQMaIKaIKaIKaIKaQNaQOaQPazIaMKaQQaQRaQRaQRaQSaQTaQUaQVaQWaQXaQVaQYaQZaRaaQVaRbaRcaRdaReaRfaMeaRgaRhaRiaRjaRjaRhaRkaRlaRlaRlaRlaRlaRmaRnaRlaRoaRpaRqaRraRsaRvaRuaTkaRwaRxaRwaRyaRzayHayGaRAaRBaRCaRDaREaRFaRGaRHaRIaRJaRIaRKaRLaRMaRNaROaRPaRQaRRaRSaRTaRUaQdaRVaRWaRXaRYaRZaSaaSbaScaSdaprbikbikbikbikbikbikbikaaabfmbifbieaQfbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaSfaOFaOFaNjaOMaQjaOFaQjaSgaQjaOFaQjaOMaQkaQlaKzaKBaShaMoaMoaSiaSjaSkaSjaMoaKHaKHaKHaKHaSlaSmaSnaSoaKHaSpaSqaSraPdaPdaSsaPdaStaSuaSvaMvbikaLRaLRaSwaSxaSwaLRaLRbikaJGaJLaJMaSyaSzaSAaQJaSBaJMaGvaIKaJNaJOaSCaNRaLXaJOaLYaJOaLXaNTaSDaIKaIKaIKaSEaSFaSGaSHaSIaSJamKamKaSKaSLaSMaSNaMcaSOaMQaMcaSPaMcaSQaMcaSRaSSaSTaSUaSVaTeaSXaSYaSZaTaaTbaTcaTdaTbaTbaUjaTbaSYaTfaSYaOvaTgaSYaThaTiaTjaTmaTlaToaTnaTqaTpaWIaTraOuaTsaTtaTuaTvaTwaTxaTyaTzaRHaTAaTBaRIaTCaTDaTEaTFaROaTGaRQaRRaRSaTHaTIaQdaTJaTKaTKaTLaScaScaScaScaSdaprbikbikbikbikbikbikaaabfmbigbijbihbieaQfbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaONaTMaTNaQiaOMaQjaOFaQjaOFaQjaOFaQjaOMaQkaQlaKzaKBaTOaTPaTQaTRaTSaTSaJraTTaTUaTVaTWaTXaTYaTZaMqcoCaKHaUbaUcaUdaUeaUfaUgaUhaUiaUZaUkaMvbikaabbikaUlaUmaUlbikaabbikaCuaJLaJMaUnaUoaUpaUqaUraJMaGvaIKaUsaUtaKPaUuaUvaKSaUwaKSaUxaUyaUzaIKaUAaUBaUCaUDaUEaUFaUGaUHbikbikaSKaUIaUJaUKaMcaULaUMaMQaMQaUNaMQaMQaMQaUOaMeaUPaMeaUQaURaMeaUSaMeaUTaUUaUVaUWaUXaUYaUTbwNaVaaVbaVcaVbaVbaVbaVbaVdaWLaVbaVeaYEaVfaVgaVbaVhayHaRDaViaTvaVjaVkaVlaVmaVnaVoaVpaVqaRIaVraVsaVtaVuaVvaTGaRQaRRaRSaRTaVwaQdaVxaTKaTKaTLaScaScaScaScaSdaprbikbikbikbikbikbikbdBblqbjMbmKbjMbqQbdBbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaVyaVzaNiaODaOMaOFaVAaVBaOFaOFaVCaVAaOMaONaVDaKzaKBaVEaVFaVGaVHaVGaVGaVGaVGaVGaVIaJraKHaVJaVKaVJaKHaKHaVLaVMaVLaMuaMuaMuaMuaVLaVNaVOaMvaVPaVQaVQaVRaVSaVRaVQaVQaVTaVUaVVaJMaVWaJMaVXaVYaVZaJMaWaaIKaIKaIKaIKaWbaWcaWdaWeaWdaWcaWbaIKaIKaWfaUDaUDaUDaUDaWgaWhaWiaWjaWkaSKaWlaUJaWmaMcaMcaMcaMcaMcaMcaMcaMeaMeaUOaWnaWoaWpaWqaWraWsaWuaWtaUTaWvaWwaWxaWyaWzaUTaWAaWBaWCaWDaWCaWEaWFaWGaWHaYFaWJaWKaYGaWMaWNaVbaWOaRtaWPaWQaWRaVjbtTcvIaVmaWTaRIaWUaWVaWWaWXaWYaTFaTFaRIaRIaRQaRRaRSaTHaWZaQdaXaaXbaXcaXdaXeaXfaScaScaXgaprbikbikbikbikbikaaabfmbqRbmKbmKbmKbqSbieaQfbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaVyaNiaNjaNiaNiaNkaNlaNiaNiaNjaVzaXhaCuaXiaVEaInaXjaXjaXkaXjaXlaDEaXmaXnaJraXoaXpaXqaXqaXraXsaXqaXtaXqaXqaXqaXuaXqaXqaXvaXwaXxaXyaXzaXAaXyaXBaXyaXyaXyaXyaXCaXDaXEaXqaXqaXFaXGaXHaXIaXJaXKaXLaXMaXRaXPaXPaXPaXPaXPaXPaXPaXQaXWaXXaXSaXTaXUaXVaXYaZHaXZaUDaUDaYaaYbaYcaYbaYcaYdaYeaYfaYgaYhaYiaMeaYkbBvaYmaYlaYnaYnaYoaYpaYqaYraUTaYsaYtaYuaYuaYvaUTaYwaYxaYyaYzaYAaYAaYBaYCaYDbbHaYHcIgbjrcYtcSNaVbaVhaKsaRDaYIaYJaYJaYKaYLaYJaYMaRIaYNaYOaRIaYPaYQaTFaYRaRIaYSaYTaYUaRSaQbaQbaQdaYVaQeaYWaYXaQeaQeaQeaQeaQeabLadbbikbikbikbikbqUbqTbqVbmKbmKbrUbthbmKbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaInaYYaKzaKzaKzaKzaKzaKzaYYaInaMlaCuaYZaZaaInaZbaZcaZdaZdaZeaDEaZfaXnaZgaZhaXpaZiaZjaZkaZlaZlaZmaZnaZnaZnaZoaZpaZpaZqaZraZsaZlaZlaZtaZpaZvaZwaZxaZxaZyaZzaZAaZuaZuaZuaZBaXGaXHaXIaXJaXJaXJaXJaZCaXJaXJaXJaXJaXJaXJaZDaZEaZNaZFaZGaZJaZIaZLaZKaZMaZNaZNaZNaZOaZPaZPaZPaZQaYiaYiaYiaZRaZSaYiaMebbsaZUaYnaYnaZVaYnaZWaZXaYqaZYaUTaZZbaababbacbadaUTbaebafbagbahbaibajaVbbakbalcZqaVbaVbaVbaVeaVbaVbaVhayHaRDbamaTvaTvaTvbanaTvbaoaRIaRIaRIaRIaRIaRIaRIbapaRIaRSaRSaRRaRSbaqbaraQbbasbatbaubavbawbaxbaybazbaAbikbikbikbikaaabtibtjbtibtibtibtkbtibtlbtibtjbtiaQfbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabaabaLyaCuaInaGdaKzbaBbaCbaDbaEaKzaGdaInaInaCubaFaVEaInbaGbaHaZdaZdaZeaDEbaIaXnaJraZhaXpaXqbaJbaKbaLbaLbaMbaNbaObaLbaPbaLbaQbaLbaRbaSbaLbaLbaWbaLbaLbaUbaVbaLbaWbaXbaYbaZaXqaXqbbabbbbbcbbdbbebbfbbebbgbbhbbgbbgbbgbbgbbgbbgbbibbjbbkbbkbbkbbkbblbbkbbmbbnbbkbbkbbobbpbbqbbqbbqbbqbbqbbqbbqbbraYiaYiaMebcTbbtbbubbvbbvbbwbbxaZXaYqbbyaUTaUTaUTaUTaUTbbzaUTbbAbbBbbCbbDaWCbbEaVbbbFbbGcZrbbIbbJbbKbbLbbMaVbaVhaHYaRDbbNbbOaTvbbPbbQaTvbbRbbRaRDbbSbbTbbUaQbbbVbbWbbXaRSaRSbbYbbZaQbbcaaQbbcbbatbccbcdbcebatbatbcfbaAbikbikbikbikbqUbtmbwlbutbwmbtmbmKbutbwmbtmbwlbutbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabaabaDEaInaYYaKzaKBaJraJraKCaKzaYYaKzbcgbchbcibcjaInbckbckaXkbckaXlaDEbclaXnaJraDEbcmbcmbcnbcobcobcobcobcobcobcpbcqbcobcobcobcobcobcobcrbcsbctbctbcubctbcvbcwbcxbcvbcvbcybczbcAbcmbcBbcBbcCbcCbcCbcDbcDbcDbcDbcDbcDbcDbcDbcEbcFbcFbcGbcFbcHbcHbcHbcHbcIbcJbcHbcEbcKbcKbcKbcKbcKbcKbcKbcKbcLbcLbcLaMebcMbcNbcObcObcObcObcPbcQbcRbmwbcUaZTbcVbcWbcXbcYaUTaUTbcZbdabdbbdabdaaVbbdcbdddcnbdebdebdebdfbdgaVbbdhbdiaRDbdjaTvbbPbbPbbQbbPaTvbdkaRDbdlbdmbdnaQbaRSbdobdpbdqbdqbdrbdsbdtbdubdvbdwbdxbdybdzbavbatbatbdAbaAbikbikbikbikbqUbwnbmKbutbBQbtmbmKbutbBQbtmbmKbFmbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaONaTMaTNaQiaOMaQjaOFaQjaOFaQjaOFaQjaOMaQkaQlaKzaKBaTOaTPaTQaTRaTSaTSaJraTTaTUaTVaTWaTXaTYaTZaMqcoCaKHaUbaUcaUdaUeaUfaUgaUhaUiaUZaUkaMvbikaabbikaUlaUmaUlbikaabbikaCuaJLaJMaUnaUoaUpaUqaUraJMaGvaIKaUsaUtaKPaUuaUvaKSaUwaKSaUxaUyaUzaIKaUAaUBaUCaUDaUEaUFaUGaUHbikbikaSKaUIaUJaUKaMcaULaUMaMQaMQaUNaMQaMQaMQaUOaMeaUPaMeaUQaURaMeaUSaMeaUTaUUaUVaUWaUXaUYaUTbwNaVaaVbaVcaVbaVbaVbaVbaVdaWLaVbaVeaVfaWFaWBaVbaVhayHaRDaViaTvaVjaVkaVlaVmaVnaVoaVpaVqaRIaVraVsaVtaVuaVvaTGaRQaRRaRSaRTaVwaQdaVxaTKaTKaTLaScaScaScaScaSdaprbikbikbikbikbikbikbdBblqbjMbmKbjMbqQbdBbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaVyaVzaNiaODaOMaOFaVAaVBaOFaOFaVCaVAaOMaONaVDaKzaKBaVEaVFaVGaVHaVGaVGaVGaVGaVGaVIaJraKHaVJaVKaVJaKHaKHaVLaVMaVLaMuaMuaMuaMuaVLaVNaVOaMvaVPaVQaVQaVRaVSaVRaVQaVQaVTaVUaVVaJMaVWaJMaVXaVYaVZaJMaWaaIKaIKaIKaIKaWbaWcaWdaWeaWdaWcaWbaIKaIKaWfaUDaUDaUDaUDaWgaWhaWiaWjaWkaSKaWlaUJaWmaMcaMcaMcaMcaMcaMcaMcaMeaMeaUOaWnaWoaWpaWqaWraWsaWuaWtaUTaWvaWwaWxaWyaWzaUTaWAaWGaWCaWDaWCaWEaWHaYDaWNaYFaWJaWKaYGaWMaYEaVbaWOaRtaWPaWQaWRaVjbtTcvIaVmaWTaRIaWUaWVaWWaWXaWYaTFaTFaRIaRIaRQaRRaRSaTHaWZaQdaXaaXbaXcaXdaXeaXfaScaScaXgaprbikbikbikbikbikaaabfmbqRbmKbmKbmKbqSbieaQfbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaVyaNiaNjaNiaNiaNkaNlaNiaNiaNjaVzaXhaCuaXiaVEaInaXjaXjaXkaXjaXlaDEaXmaXnaJraXoaXpaXqaXqaXraXsaXqaXtaXqaXqaXqaXuaXqaXqaXvaXwaXxaXyaXzaXAaXyaXBaXyaXyaXyaXyaXCaXDaXEaXqaXqaXFaXGaXHaXIaXJaXKaXLaXMaXRaXPaXPaXPaXPaXPaXPaXPaXQaXWaXXaXSaXTaXUaXVaXYaZHaXZaUDaUDaYaaYbaYcaYbaYcaYdaYeaYfaYgaYhaYiaMeaYkbBvaYmaYlaYnaYnaYoaYpaYqaYraUTaYsaYtaYuaYuaYvaUTaYwaYxaYyaYzaYAaYAaYBaYCaYHbbFbalbbHbbGbbJaVgaVbaVhaKsaRDaYIaYJaYJaYKaYLaYJaYMaRIaYNaYOaRIaYPaYQaTFaYRaRIaYSaYTaYUaRSaQbaQbaQdaYVaQeaYWaYXaQeaQeaQeaQeaQeabLadbbikbikbikbikbqUbqTbqVbmKbmKbrUbthbmKbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaInaYYaKzaKzaKzaKzaKzaKzaYYaInaMlaCuaYZaZaaInaZbaZcaZdaZdaZeaDEaZfaXnaZgaZhaXpaZiaZjaZkaZlaZlaZmaZnaZnaZnaZoaZpaZpaZqaZraZsaZlaZlaZtaZpaZvaZwaZxaZxaZyaZzaZAaZuaZuaZuaZBaXGaXHaXIaXJaXJaXJaXJaZCaXJaXJaXJaXJaXJaXJaZDaZEaZNaZFaZGaZJaZIaZLaZKaZMaZNaZNaZNaZOaZPaZPaZPaZQaYiaYiaYiaZRaZSaYiaMebbsaZUaYnaYnaZVaYnaZWaZXaYqaZYaUTaZZbaababbacbadaUTbaebafbagbahbaibajaVbaVbbbKbbLaVbaVbbakbbMbakaVbaVhayHaRDbamaTvaTvaTvbanaTvbaoaRIaRIaRIaRIaRIaRIaRIbapaRIaRSaRSaRRaRSbaqbaraQbbasbatbaubavbawbaxbaybazbaAbikbikbikbikaaabtibtjbtibtibtibtkbtibtlbtibtjbtiaQfbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabaabaLyaCuaInaGdaKzbaBbaCbaDbaEaKzaGdaInaInaCubaFaVEaInbaGbaHaZdaZdaZeaDEbaIaXnaJraZhaXpaXqbaJbaKbaLbaLbaMbaNbaObaLbaPbaLbaQbaLbaRbaSbaLbaLbaWbaLbaLbaUbaVbaLbaWbaXbaYbaZaXqaXqbbabbbbbcbbdbbebbfbbebbgbbhbbgbbgbbgbbgbbgbbgbbibbjbbkbbkbbkbbkbblbbkbbmbbnbbkbbkbbobbpbbqbbqbbqbbqbbqbbqbbqbbraYiaYiaMebcTbbtbbubbvbbvbbwbbxaZXaYqbbyaUTaUTaUTaUTaUTbbzaUTbbAbbBbbCbbDaWCbbEaVbbdfbdcbdgbbIbkZbjrcSNcIgaVbaVhaHYaRDbbNbbOaTvbbPbbQaTvbbRbbRaRDbbSbbTbbUaQbbbVbbWbbXaRSaRSbbYbbZaQbbcaaQbbcbbatbccbcdbcebatbatbcfbaAbikbikbikbikbqUbtmbwlbutbwmbtmbmKbutbwmbtmbwlbutbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabaabaDEaInaYYaKzaKBaJraJraKCaKzaYYaKzbcgbchbcibcjaInbckbckaXkbckaXlaDEbclaXnaJraDEbcmbcmbcnbcobcobcobcobcobcobcpbcqbcobcobcobcobcobcobcrbcsbctbctbcubctbcvbcwbcxbcvbcvbcybczbcAbcmbcBbcBbcCbcCbcCbcDbcDbcDbcDbcDbcDbcDbcDbcEbcFbcFbcGbcFbcHbcHbcHbcHbcIbcJbcHbcEbcKbcKbcKbcKbcKbcKbcKbcKbcLbcLbcLaMebcMbcNbcObcObcObcObcPbcQbcRbmwbcUaZTbcVbcWbcXbcYaUTaUTbcZbdabdbbdabdaaVbcYtbdddcnbdebdebdecZrcZqaVbbdhbdiaRDbdjaTvbbPbbPbbQbbPaTvbdkaRDbdlbdmbdnaQbaRSbdobdpbdqbdqbdrbdsbdtbdubdvbdwbdxbdybdzbavbatbatbdAbaAbikbikbikbikbqUbwnbmKbutbBQbtmbmKbutbBQbtmbmKbFmbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbdCbdDaJrbdEbdFbdGbdHbdIbdJbdHbdKbdLbdHbdHbdMbdNbdObdPbdQbdQbdQbdRbdQbdSbdTaDEbdUbdVbdWbcobdXbdYbdZbeabebbecbedbeebefbegbehbeibcobejbekbctbelbembenbcvbeobepbeqbcvberbesbetberberberbeuaXJaXObcDbikbikbikbikbikbikbikbcEbevbewbexbeybezbeAbeBbeCbeDbeEbeFbcEbikbikbikbikbikbikbikbcKbeGaYibeHaMebeIbcNbmwbmwbmwbmwbmwbeJbeKbmwbmwbmwbnMbeMbeMbeNbeObePbeQbeRbeSbeTbeUaVbbeVbeWdlHbeYbeYbeXbeZbfaaVbaVhayHaRDbfbbfcaTvbbPbbQaTvbfdbfdaRDaRDbfeaRDaQbbffbbWbbZbfgbfgbfhbbZaQbaQbaQbbfibatbfjbfjbfkbfjbatbflbaAaabbikbikaabbdBbtmbmKbutbBQbtmbmKbutbBQbtmbmKbutbdBbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbdCbfnbfobfnbfnbfnbfnbfnbfnbfobfnbfnbfpaJrbfqbfrbfsaJrbftaJrbfubfvbfwbfxbfyaDEbdVbdVbfzbcobfAbecbecbecbecbecbedbfBbecbecbecbfCbcobejbfDbctbfEbfFbfGbcvbfHbfIbfJbcvbfKbfLbfMbfNbfObesbeuaXJaXObcDbikbikbikbikbcEbcEbcEbcEbfPbfQbfRbfSbfTbfUbfVbfWbfXbfYbfZbcEbcEbcEbcEbikbikbikbikbcKbeGaYibgabgbbgcbgdbgebgfbgcbggbghbgibgjbgkbglbmwbeLbgmbeMbgnbgobeMbgpbgqbgrbgsbeMbgtbgubgvdlHbeYbeYbeXbgwbgxaVbaVhaKsaRDbdjaTvbbPbbPbbQbbPaTvaTvbgybgzaTvbgAaQbbgBbgCbgDbfgbfgbgEbgDbgFaQbbgGbgHbatbgIbgIbgJbgIbatbdAbaAbgKbaAbaAbaAbqUbtmbmKbutbGVbtmbmKbutbGVbtmbmKbutbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaCuaCuaInaInaInaInaInaInaInaInaInaCuaDEbgLbgMbgNbgNbgNbgNbgNbgNbgObgNbgNbgNaDEbdVbejbgPbcobgQbecbecbgRbgSbgTbgUbgRbecbecbecbgVbcobejbekbctbgWbgXbgYbcvbgZbhabhbbcvbhcbhdbhebhfbhgbesbhhbhiaXObcDbcDbhjbcEbcEbcEbhkbhlbhmbhnbhobhobhpbhqbhobhrbhobhsbhtbhubhvbhwbhxbcEbcEbcEbhjbcKbcKbeGaYiaYiaMebhybhzbgkbhAbmwbhBbhCbmwbhDbhEbglbmwbnMbeMbeMbhFbcSbhHbhIbhJbhKbhLbeMbhMbgubhNdlHbeYbeYbhObhPbhQaVbaVhayHaRDbhRbhSbhTbbPbbQbhUaTvaTvbhVaTvbhWbhXaQbbhYbhZbiabfgbfgbibbiabicaQbbidbgHbatbatbatbavbatbatbKnbIzbPfbNjbiibPfddJbmKbmKbmKbmKbmKbmKbmKbmKbmKbmKbutbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikblsbltbltblubltbltbltblvbltbltbmPaabaInaLAaJtbilbgNbimbinbiobipbiqbirbisbitbgNbiubivbiwbixbcobiybecbecbgRbgTbizbiAbgRbecbecbiBbiCbcobejbekbctbctbiDbctbcvbiEbiFbiGbcvbiHbhfbiIbhfbiJbesbeubiKaXOaXPaXPbiLbiMbiNbcEbiObfRbiPbhobhobiQbiRbiSakybiSbiUbiVbiWbiXbiYbiZbjabcEbjbbiMbjcbjdbjebeGaYiaYibjfbmwbjgbmwbmwbmwbjhbjibmwbhDbjjbglbmwbeLbeMbeMbjkbBDbjmbjnbjobjpbhLbjqaVbdlJdlIdlKbeYbeYbeXbhPbjsaVbbjtbjuaRDbjvaRDaRDbjwbbQbjxbjyaTvbjzbjAaWSbjBbdvbjCbjDbjEbjFbjFbjGbjHbjIbdvbjJbjKbatbjLbatbavbatbatddAbaAbaAbaAbaAbgKbqUddBbmKbutbwmbtmbmKbutbwmbtmbmKddCbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikblsbohbptbojbpwbpwbqWbpwbpwbpwbqWblubjNaInaKzaKBbfqbgNbimbjObjPbimbjQbjRbjSbjTbgNbjUaFmbjWbcsbcobjXbjYbjZbkabkbbkcbkdbkebkebkebkfbkgbcobejbivbkhbkibkjbkkbcvbcvbcvbcvbcvbklbkmbknbkobkpbesbeubiKaXJaXJaXJbkqbkrbksbktbkubkvbhobkwbkxbkybkzbkAbkBbkCbkDbkEbkFbkGbkubkHbkIbkJbkKbkMbkLbkObkObkPaYibkQaMebmwbkRbkSbglbmwbkTbkUbmwbkVbkWbglbmwbnMbeMbeMbeMbeNbeMbkXbeMbjpbhLbkYaVbbkZbhNbeXbeYbeYbeXbhPblaaVbblbblcbldbleblfblgblhblibljbljbljbljbljbljblkbllblmbfgbfgbfgbfgbfgbfgblnbloblpbgHbatbatbatbavbatbatddDbgKblrblrblrbaAbwmbtmbmKbutbBQbtmbmKbutbBQbtmbmKbutbwmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikblsbohbptbojbpwbpwbqWbpwbpwbpwbqWblubjNaInaKzaKBbfqbgNbimbjObjPbimbjQbjRbjSbjTbgNbjUaFmbjWbcsbcobjXbjYbjZbkabkbbkcbkdbkebkebkebkfbkgbcobejbivbkhbkibkjbkkbcvbcvbcvbcvbcvbklbkmbknbkobkpbesbeubiKaXJaXJaXJbkqbkrbksbktbkubkvbhobkwbkxbkybkzbkAbkBbkCbkDbkEbkFbkGbkubkHbkIbkJbkKbkMbkLbkObkObkPaYibkQaMebmwbkRbkSbglbmwbkTbkUbmwbkVbkWbglbmwbnMbeMbeMbeMbeNbeMbkXbeMbjpbhLbkYaVbdlObhNbeXbeYbeYbeXbhPblaaVbblbblcbldbleblfblgblhblibljbljbljbljbljbljblkbllblmbfgbfgbfgbfgbfgbfgblnbloblpbgHbatbatbatbavbatbatddDbgKblrblrblrbaAbwmbtmbmKbutbBQbtmbmKbutbBQbtmbmKbutbwmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbqYbqXbqXbqXbqXbqXbqXbqXbqXbqXbqXbqZbraaGdbraaJrbfqbgNblwbimblxblxblxblybimblzbgNblAblBbjWblCblCblCblCblDblCblEbecblFblGblHblHblIblJbcoblKblLblMblNblOblPblQblRblSblRblTblTblTblTblTblUberbeublVblWblXblYblZbmabmbbmcbmdbkBbmebmfbmgbmgbmgbmgbmhbmgbmibmjbmkbmlbmebmmbmnbcEbmobmpbmqbkNbmsbmtaYiaYibjfbmwbnCbmwbmwbmwaRebmwbmwbmvbmvbmwbmwbmxbeMbeMbmybmzbeMbeMbeMbmAbmBbmCaVbbgxbhNbeXbeXbeXbeXbhPbmDaVbbmEbmFbmFbmGbmFbmHbbPbbPbbPbbPbmIbbPbbPbbPbmJblobfgbfgbfgbfgbfgbfgbfgblnbloblpbgHbatbfjbfjbfkbfjbatddEbaAbmLbmMbmNbaAbBQbtmbmKbutbBQbtmbmKbutbBQbtmbmKbutbBQbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbrcbrbbrebrdbrfbrfbrgbrfbrfbrfbrgbluaInaInaKzbrVbcjbmQbimbmRblxblxblxblybmRbimbgNbmSbmTbjWblCbmUbmVbmWbmXblCbmYbmZbnabcobnbbncbndbnebcobejbnfbngbngbnhbngbngbngbngbnibnjbnjbnjbnkbnjbnlbnmbnnbnobnpbnqbnqbnqbnqbnqbnqbnrbnsbnrbmgbmgbntbnubnvbnwbnxbnybntbnzbmgbnAbnBbnAbnAbnAbnAbnAbnAbnAbmtaYiaYiaMebnEbnDcakbnGbmwbnFbmwbnIbnHbnJbmwbpjaUTbnKbnLaUTaUTczObnNddybnNaUTaUTaVbbnObnPbnQbnQbnQbnQbnPbnRaVbbnSbmFbmFbmGbnTaRDbnUbnVbnWbnXbnYbnZboabobbocaQbbodaRSboebfgbfgboeaRSbofaQbbogbgHbatbgIbgIbgJbgIbatddDbgKblrblrblrbaAbGVbtmbmKbutbGVbtmbmKbutbGVbtmbmKbutbGVbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbrcbltbltblubltbltbltblvbltbltbtnaabaInboibdFbokbgNbjObjObjObimbolbombonboobgNbopboqbjWblCborblCbosbotblCboubovbowbcobnbbncbndbiCbcobejbnfbngboxboybozboAboBbngboCboDboEboFbnmbnmbnmbnmboGboHboIbnqboJboKboLboMboNboOboPboQbmgboRbnvboSboTboUboTboSbnvboVbmgboWboXboYboZbpabpbbpcbpdbnAbpebpfbpfbpgaMeaMeaMeaMebphbjfbphbpiaMeaURaMeaMeaUTaUTaUTaUTbplbpkbpkbpkbpkbpmbpJaVbbakbpnbakbpobpobakbpnbakaVbbnSbmFbmFbppbnTaRDaRDaRDaRDaRDbjvaRDaRDaRDaRDaQbbpqaQcaQcaQcaQcaQcaQcaQbaQbbprbpsbatbatbatbavbatbatddAbaAbaAbaAbaAbgKbqUddFbmKbmKbmKbmKbmKbmKbmKbmKbmKddGbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+71 -14
View File
@@ -507,6 +507,18 @@
"jM" = (/obj/item/weapon/soap/syndie,/obj/structure/mopbucket,/obj/machinery/light{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership)
"jN" = (/obj/structure/table/woodentable,/obj/item/pizzabox,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
"jO" = (/obj/structure/table/woodentable,/obj/item/toy/nuke,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership)
"jP" = (/turf/unsimulated/wall/abductor{icon_state = "alien21"},/area/abductor_ship)
"jQ" = (/turf/unsimulated/wall/abductor{icon_state = "alien20"},/area/abductor_ship)
"jR" = (/turf/unsimulated/wall/abductor{icon_state = "alien23"},/area/abductor_ship)
"jS" = (/turf/unsimulated/wall/abductor{icon_state = "alien22"},/area/abductor_ship)
"jT" = (/turf/unsimulated/wall/abductor{icon_state = "alien24"},/area/abductor_ship)
"jU" = (/turf/unsimulated/wall/abductor{icon_state = "alien16"},/area/abductor_ship)
"jV" = (/obj/machinery/abductor/experiment{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"jW" = (/turf/unsimulated/wall/abductor{icon_state = "alien17"},/area/abductor_ship)
"jX" = (/obj/machinery/abductor/pad{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"jY" = (/obj/machinery/abductor/console{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"jZ" = (/turf/unsimulated/wall/abductor{icon_state = "alien19"},/area/abductor_ship)
"ka" = (/turf/unsimulated/wall/abductor{icon_state = "alien18"},/area/abductor_ship)
"kb" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"kc" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/mugwort,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"kd" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
@@ -525,12 +537,35 @@
"kq" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"kr" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"ks" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/syndicate_mothership)
"kt" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"ku" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kv" = (/obj/machinery/abductor/console{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kw" = (/turf/unsimulated/wall/abductor{icon_state = "alien14"},/area/abductor_ship)
"kx" = (/turf/unsimulated/floor/abductor,/area/abductor_ship)
"ky" = (/obj/machinery/computer/camera_advanced/abductor{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kz" = (/turf/unsimulated/wall/abductor{icon_state = "alien15"},/area/abductor_ship)
"kA" = (/obj/structure/closet/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kB" = (/turf/simulated/floor/bluegrid,/area/tdome/arena_source)
"kC" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena_source)
"kD" = (/obj/machinery/computer/camera_advanced/abductor{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kE" = (/turf/unsimulated/wall/abductor{icon_state = "alien12"},/area/abductor_ship)
"kF" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kG" = (/obj/structure/table/abductor,/obj/item/weapon/retractor/alien,/obj/item/weapon/hemostat/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kH" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kI" = (/obj/machinery/optable/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kJ" = (/obj/item/flag/wiz,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"kK" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad)
"kL" = (/obj/effect/landmark{name = "Syndicate-Commando"; tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad)
"kM" = (/turf/unsimulated/wall/abductor{icon_state = "alien13"},/area/abductor_ship)
"kN" = (/obj/structure/table/abductor,/obj/item/weapon/storage/box/alienhandcuffs,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kO" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kP" = (/obj/effect/landmark/abductor/agent{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kQ" = (/turf/unsimulated/wall/abductor{icon_state = "alien10"},/area/abductor_ship)
"kR" = (/obj/structure/table/abductor,/obj/item/weapon/paper/abductor,/obj/item/weapon/scalpel/alien,/obj/item/weapon/cautery/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kS" = (/turf/unsimulated/wall/abductor{icon_state = "alien11"},/area/abductor_ship)
"kT" = (/obj/machinery/camera{pixel_x = 10; network = list("Thunderdome"); c_tag = "Thunderdome Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena_source)
"kU" = (/turf/unsimulated/wall/abductor{icon_state = "alien6"},/area/abductor_ship)
"kV" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"kW" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/wizard_station)
"kX" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/wizard_station)
"kY" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHEAST)"; icon_state = "fakewindows"; dir = 5},/area/wizard_station)
@@ -543,6 +578,12 @@
"lf" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"lg" = (/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad)
"lh" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad)
"li" = (/turf/unsimulated/wall/abductor{icon_state = "alien7"},/area/abductor_ship)
"lj" = (/obj/structure/stool/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lk" = (/obj/structure/table/abductor,/obj/item/weapon/surgicaldrill/alien,/obj/item/weapon/circular_saw/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"ll" = (/turf/unsimulated/wall/abductor{icon_state = "alien9"},/area/abductor_ship)
"lm" = (/turf/unsimulated/wall/abductor{icon_state = "alien8"},/area/abductor_ship)
"ln" = (/turf/unsimulated/wall/abductor{icon_state = "alien2"},/area/abductor_ship)
"lo" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
"lp" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
"lq" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)"; icon_state = "fakewindows2"; dir = 1},/area/wizard_station)
@@ -553,17 +594,33 @@
"lv" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"lw" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "syndicate_elite"; name = "Side Hull Door"; opacity = 0; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"lx" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{id_tag = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad)
"ly" = (/turf/unsimulated/wall/abductor,/area/abductor_ship)
"lz" = (/turf/unsimulated/wall/abductor{icon_state = "alien4"},/area/abductor_ship)
"lA" = (/turf/unsimulated/wall/abductor{icon_state = "alien3"},/area/abductor_ship)
"lB" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source)
"lC" = (/turf/unsimulated/wall,/area/tdome/arena_source)
"lD" = (/obj/machinery/igniter,/turf/simulated/floor/plasteel,/area/tdome/arena_source)
"lE" = (/obj/machinery/light/spot,/turf/simulated/floor/plasteel,/area/tdome/arena_source)
"lF" = (/turf/unsimulated/wall/abductor{icon_state = "alien5"},/area/abductor_ship)
"lG" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
"lH" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station)
"lI" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station)
"lJ" = (/obj/machinery/computer/pod{id_tags = list("syndicate_elite"); name = "Hull Door Control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"lK" = (/obj/machinery/computer/syndicate_elite_shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"lL" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lM" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lN" = (/obj/machinery/abductor/console{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lO" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lP" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lQ" = (/obj/machinery/abductor/console{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lR" = (/obj/machinery/computer/camera_advanced/abductor{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lS" = (/obj/machinery/computer/camera_advanced/abductor{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lT" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lU" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lV" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"lW" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source)
"lX" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source)
"lY" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"ma" = (/obj/effect/decal/cleanable/molten_item,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
"mb" = (/turf/unsimulated/wall/fakeglass,/area/wizard_station)
"mc" = (/obj/item/trash/chips,/obj/machinery/light/spot,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
@@ -1511,21 +1568,21 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNDAGRGPFvFvFvGPGSDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKDKDAaNDAGTFvFvGPFvFvGUDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDuaNEMDxDyDyDzEIDKDKDAaNDAGVFvFvFvFvFvGWDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtaNaNDtDAGXGYGZDuaNaNaNaNaNDIDKDKDAaNEMDwHaHbHcHbHdDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwDAHeHfDADwDwDwDwDuaNEfDKDKDAaNaNEMDwHgHhHiDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHjHjHjHkHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAHlHmHnDAHoFvFvHpDAHqHrHsHpDwGaDKDKDAaNaNaNHtHuHvHwHtaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHxHyHyHyHyHzHjHjHjHjHjHjHjHjHkHjHjHjHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHAFvFvFvHBFvFvFvFvHCFvFvFvFvHCDKDKDKDAaNaNEMDwDwHDDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHxHyHyHyHyHzHjHEHFHGHFHHHIHJHJHJHIHHHJHHHJHKHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDAHLdacZDAGVFvFvGWDAHOHPHQGWDwEIDKDKDAaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHRHyHyHyHyHSHjHJHTHTHTHTHTHJHJHJHTHTHTHTHTHUHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDwDwGZHVHWDADwDwDwDwEnaNDIDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHRHXHYHYHyHyHZHJHJHJIaHJHJHJHJHJHJHJIaHJHJHJHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNEMDAGXIbDAEnaNaNaNaNaNEfDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjQjPjSjRjTaNaNaNjQjPjSjRjTaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtaNaNDtDAGXGYGZDuaNaNaNaNaNDIDKDKDAaNEMDwHaHbHcHbHdDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjUjWjVjYjXkajZaNjUjWktkvkukajZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwDAHeHfDADwDwDwDwDuaNEfDKDKDAaNaNEMDwHgHhHiDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHjHjHjHkHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkwkykxkxkxkAkzaNkwkDkxkxkxkAkzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAHlHmHnDAHoFvFvHpDAHqHrHsHpDwGaDKDKDAaNaNaNHtHuHvHwHtaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHxHyHyHyHyHzHjHjHjHjHjHjHjHjHkHjHjHjHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkEkGkFkIkHkNkMaNkEkGkOkIkPkNkMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHAFvFvFvHBFvFvFvFvHCFvFvFvFvHCDKDKDKDAaNaNEMDwDwHDDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHxHyHyHyHyHzHjHEHFHGHFHHHIHJHJHJHIHHHJHHHJHKHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkQkRkxkxkxkAkSaNkQkRkxkxkxkAkSaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDAHLdacZDAGVFvFvGWDAHOHPHQGWDwEIDKDKDAaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHRHyHyHyHyHSHjHJHTHTHTHTHTHJHJHJHTHTHTHTHTHUHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkUlikVlkljlmllaNkUlikVlkljlmllaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDwDwGZHVHWDADwDwDwDwEnaNDIDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHRHXHYHYHyHyHZHJHJHJIaHJHJHJHJHJHJHJIaHJHJHJHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNlylnlAlzlFaNaNaNlylnlAlzlFaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNEMDAGXIbDAEnaNaNaNaNaNEfDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNHjHjHjHjHjHjHjHjHJHTHTHTHTHTHJHJHJHTHTHTHTHTHJHjHjHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwEnaNDtDxDyDyDzGaDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNHjdHdHdHdHdHHjIdIeIeIeIeIeIeIeIeIeIeIeIeIeIfHjdIdIdIdIdIHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjHjHjIhIhIhIhIhjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaIhIhIhIhIhHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKFkDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIkIkIkIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIoIoIoIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDMIqDMDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIrIkIrIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIsIoIsIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAItDKDKDKIuDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIkIvIkIkIlImjcjcjcjcjcIwIxIwjcjcjcjcjcInIlIoIoIyIoIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIrIkIrIkIlImjcjcjcjcjcIwIzIwjcjcjcjcjcInIlIoIsIoIsIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNIADKDKDKIBDNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIkIkIkIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIoIoIoIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfICDKDKDKIDEfaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNHjdHdHdHdHdHHjIdIeIeIeIeIeIeIeIeIeIeIeIeIeIfHjdIdIdIdIdIHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjQjPjSjRjTaNaNaNjQjPjSjRjTaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjHjHjIhIhIhIhIhjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaIhIhIhIhIhHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjUjWlLlNlMkajZaNjUjWlOlQlPkajZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKFkDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIkIkIkIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIoIoIoIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkwlRkxkxkxkAkzaNkwlSkxkxkxkAkzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDMIqDMDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIrIkIrIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIsIoIsIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkEkGlTkIlUkNkMaNkEkGlVkIlYkNkMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAItDKDKDKIuDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIkIvIkIkIlImjcjcjcjcjcIwIxIwjcjcjcjcjcInIlIoIoIyIoIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkQkRkxkxkxkAkSaNkQkRkxkxkxkAkSaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIrIkIrIkIlImjcjcjcjcjcIwIzIwjcjcjcjcjcInIlIoIsIoIsIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkUlikVlkljlmllaNkUlikVlkljlmllaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNIADKDKDKIBDNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjIiIjIkIkIkIkIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIoIoIoIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNlylnlAlzlFaNaNaNlylnlAlzlFaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfICDKDKDKIDEfaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNHjHjHjIEIEIEIEIEjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaIEIEIEIEIEHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwIFIGIHIIIJDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNHjIKIKIKIKIKHjIdIeIeIeIeIeIeIeIeIeIeIeIeIeIfHjILILILILILHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDxDyDzDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNHjHjHjHjHjHjHjIMINININININIOIPIQINININININIMHjHjHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+1 -1
View File
@@ -824,7 +824,7 @@
"pS" = (/obj/machinery/power/apc{dir = 8; name = "Mining Station Podbay APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/engine,/area/mine/podbay)
"pT" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/engine,/area/mine/podbay)
"pU" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/engine,/area/mine/podbay)
"pV" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/three_tile_ver{id_tag = "minepodbay"; req_one_access_txt = "48;70"},/turf/simulated/floor/engine,/area/mine/podbay)
"pV" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/multi_tile/three_tile_ver{id_tag = "minepodbay"; req_one_access_txt = "48;70"},/turf/simulated/floor/engine,/area/mine/podbay)
"pW" = (/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/turf/simulated/wall/r_wall,/area/mine/explored)
"pX" = (/obj/effect/glowshroom,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"pY" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned)
+33
View File
@@ -188,3 +188,36 @@
// teehee no one will find these here
#define MFOAM_ALUMINUM 1
#define MFOAM_IRON 2
//Human Overlays Indexes/////////
#define MUTANTRACE_LAYER 1
#define TAIL_UNDERLIMBS_LAYER 2
#define LIMBS_LAYER 3
#define MARKINGS_LAYER 4
#define UNDERWEAR_LAYER 5
#define MUTATIONS_LAYER 6
#define DAMAGE_LAYER 7
#define UNIFORM_LAYER 8
#define ID_LAYER 9
#define SHOES_LAYER 10
#define GLOVES_LAYER 11
#define EARS_LAYER 12
#define SUIT_LAYER 13
#define GLASSES_LAYER 14
#define BELT_LAYER 15 //Possible make this an overlay of somethign required to wear a belt?
#define SUIT_STORE_LAYER 16
#define BACK_LAYER 17
#define TAIL_LAYER 18 //bs12 specific. this hack is probably gonna come back to haunt me
#define HAIR_LAYER 19 //TODO: make part of head layer?
#define HEAD_ACCESSORY_LAYER 20
#define FHAIR_LAYER 21
#define FACEMASK_LAYER 22
#define HEAD_LAYER 23
#define COLLAR_LAYER 24
#define HANDCUFF_LAYER 25
#define LEGCUFF_LAYER 26
#define L_HAND_LAYER 27
#define R_HAND_LAYER 28
#define TARGETED_LAYER 29 //BS12: Layer for the target overlay from weapon targeting system
#define FIRE_LAYER 30 //If you're on fire
#define TOTAL_LAYERS 30
+1 -1
View File
@@ -56,7 +56,7 @@ var/global/list/special_roles = list(
// ROLE_MONKEY = /datum/game_mode/monkey, Sooner or later these are going to get ported
// ROLE_GANG = /datum/game_mode/gang,
ROLE_SHADOWLING = /datum/game_mode/shadowling,
// ROLE_ABDUCTOR = /datum/game_mode/abduction,
ROLE_ABDUCTOR = /datum/game_mode/abduction,
// ROLE_HOG_GOD = /datum/game_mode/hand_of_god,
// ROLE_HOG_CULTIST = /datum/game_mode/hand_of_god,
ROLE_RAIDER = /datum/game_mode/heist,
+2 -1
View File
@@ -23,4 +23,5 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse
"Xeno"
)
var/list/datum/map_template/map_templates = list()
var/list/map_templates = list()
var/list/mineral_turfs = list()
+1
View File
@@ -29,3 +29,4 @@ var/global/list/deliverybeacontags = list() //list of all tags associated with
var/global/list/beacons = list()
var/global/list/shuttle_caller_list = list() //list of all communication consoles and AIs, for automatic shuttle calls when there are none.
var/global/list/tracked_implants = list() //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented...
var/global/list/abductor_equipment = list() //list of all abductor equipment
+8
View File
@@ -69,6 +69,14 @@
#define ui_borg_radio "EAST-1:28,SOUTH+1:7"
#define ui_borg_intents "EAST-2:26,SOUTH:5"
//Upper-middle right (alerts)
#define ui_alert1 "EAST-1:28,CENTER+5:27"
#define ui_alert2 "EAST-1:28,CENTER+4:25"
#define ui_alert3 "EAST-1:28,CENTER+3:23"
#define ui_alert4 "EAST-1:28,CENTER+2:21"
#define ui_alert5 "EAST-1:28,CENTER+1:19"
//Gun buttons
#define ui_gun1 "EAST-2:26,SOUTH+2:7"
#define ui_gun2 "EAST-1:28,SOUTH+3:7"
+400
View File
@@ -0,0 +1,400 @@
//A system to manage and display alerts on screen without needing you to do it yourself
//PUBLIC - call these wherever you want
/mob/proc/throw_alert(category, type, severity, obj/new_master)
/* Proc to create or update an alert. Returns the alert if the alert is new or updated, 0 if it was thrown already
category is a text string. Each mob may only have one alert per category; the previous one will be replaced
path is a type path of the actual alert type to throw
severity is an optional number that will be placed at the end of the icon_state for this alert
For example, high pressure's icon_state is "highpressure" and can be serverity 1 or 2 to get "highpressure1" or "highpressure2"
new_master is optional and sets the alert's icon state to "template" in the ui_style icons with the master as an overlay.
Clicks are forwarded to master */
if(!category)
return
var/obj/screen/alert/alert
if(alerts[category])
alert = alerts[category]
if(new_master && new_master != alert.master)
WARNING("[src] threw alert [category] with new_master [new_master] while already having that alert with master [alert.master]")
clear_alert(category)
return .()
else if(alert.type != type)
clear_alert(category)
return .()
else if(!severity || severity == alert.severity)
if(alert.timeout)
clear_alert(category)
return .()
else //no need to update
return 0
else
alert = new type
if(new_master)
var/old_layer = new_master.layer
new_master.layer = FLOAT_LAYER
alert.overlays += new_master
new_master.layer = old_layer
alert.icon_state = "template" // We'll set the icon to the client's ui pref in reorganize_alerts()
alert.master = new_master
else
alert.icon_state = "[initial(alert.icon_state)][severity]"
alert.severity = severity
alerts[category] = alert
if(client && hud_used)
hud_used.reorganize_alerts()
alert.transform = matrix(32, 6, MATRIX_TRANSLATE)
animate(alert, transform = matrix(), time = 2.5, easing = CUBIC_EASING)
if(alert.timeout)
spawn(alert.timeout)
if(alert.timeout && alerts[category] == alert && world.time >= alert.timeout)
clear_alert(category)
alert.timeout = world.time + alert.timeout - world.tick_lag
return alert
// Proc to clear an existing alert.
/mob/proc/clear_alert(category)
var/obj/screen/alert/alert = alerts[category]
if(!alert)
return 0
alerts -= category
if(client && hud_used)
hud_used.reorganize_alerts()
client.screen -= alert
qdel(alert)
/obj/screen/alert
icon = 'icons/mob/screen_alert.dmi'
icon_state = "default"
name = "Alert"
desc = "Something seems to have gone wrong with this alert, so report this bug please"
mouse_opacity = 1
var/timeout = 0 //If set to a number, this alert will clear itself after that many deciseconds
var/severity = 0
var/alerttooltipstyle = ""
/obj/screen/alert/MouseEntered(location,control,params)
openToolTip(usr, src, params, title = name, content = desc, theme = alerttooltipstyle)
/obj/screen/alert/MouseExited()
closeToolTip(usr)
//Gas alerts
/obj/screen/alert/oxy
name = "Choking (No O2)"
desc = "You're not getting enough oxygen. Find some good air before you pass out! \
The box in your backpack has an oxygen tank and breath mask in it."
icon_state = "oxy"
/obj/screen/alert/too_much_oxy
name = "Choking (O2)"
desc = "There's too much oxygen in the air, and you're breathing it in! Find some good air before you pass out!"
icon_state = "too_much_oxy"
/obj/screen/alert/nitro
name = "Choking (No N)"
desc = "You're not getting enough nitrogen. Find some good air before you pass out!"
icon_state = "nitro"
/obj/screen/alert/too_much_nitro
name = "Choking (N)"
desc = "There's too much nitrogen in the air, and you're breathing it in! Find some good air before you pass out!"
icon_state = "too_much_nitro"
/obj/screen/alert/not_enough_co2
name = "Choking (No CO2)"
desc = "You're not getting enough carbon dioxide. Find some good air before you pass out!"
icon_state = "not_enough_co2"
/obj/screen/alert/too_much_co2
name = "Choking (CO2)"
desc = "There's too much carbon dioxide in the air, and you're breathing it in! Find some good air before you pass out!"
icon_state = "too_much_co2"
/obj/screen/alert/not_enough_tox
name = "Choking (No Plasma)"
desc = "You're not getting enough plasma. Find some good air before you pass out!"
icon_state = "not_enough_tox"
/obj/screen/alert/tox_in_air
name = "Choking (Plasma)"
desc = "There's highly flammable, toxic plasma in the air and you're breathing it in. Find some fresh air. \
The box in your backpack has an oxygen tank and gas mask in it."
icon_state = "tox_in_air"
//End gas alerts
/obj/screen/alert/fat
name = "Fat"
desc = "You ate too much food, lardass. Run around the station and lose some weight."
icon_state = "fat"
/obj/screen/alert/hungry
name = "Hungry"
desc = "Some food would be good right about now."
icon_state = "hungry"
/obj/screen/alert/starving
name = "Starving"
desc = "You're severely malnourished. The hunger pains make moving around a chore."
icon_state = "starving"
/obj/screen/alert/hot
name = "Too Hot"
desc = "You're flaming hot! Get somewhere cooler and take off any insulating clothing like a fire suit."
icon_state = "hot"
/obj/screen/alert/hot/robot
desc = "The air around you is too hot for a humanoid. Be careful to avoid exposing them to this enviroment."
/obj/screen/alert/cold
name = "Too Cold"
desc = "You're freezing cold! Get somewhere warmer and take off any insulating clothing like a space suit."
icon_state = "cold"
/obj/screen/alert/cold/robot
desc = "The air around you is too cold for a humanoid. Be careful to avoid exposing them to this enviroment."
/obj/screen/alert/lowpressure
name = "Low Pressure"
desc = "The air around you is hazardously thin. A space suit would protect you."
icon_state = "lowpressure"
/obj/screen/alert/highpressure
name = "High Pressure"
desc = "The air around you is hazardously thick. A fire suit would protect you."
icon_state = "highpressure"
/obj/screen/alert/blind
name = "Blind"
desc = "You can't see! This may be caused by a genetic defect, eye trauma, being unconscious, \
or something covering your eyes."
icon_state = "blind"
/obj/screen/alert/high
name = "High"
desc = "Whoa man, you're tripping balls! Careful you don't get addicted... if you aren't already."
icon_state = "high"
/obj/screen/alert/drunk //Not implemented
name = "Drunk"
desc = "All that alcohol you've been drinking is impairing your speech, motor skills, and mental cognition. Make sure to act like it."
icon_state = "drunk"
/obj/screen/alert/embeddedobject/Click()
if(isliving(usr))
var/mob/living/carbon/human/M = usr
return M.help_shake_act(M)
/obj/screen/alert/asleep
name = "Asleep"
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"
/obj/screen/alert/weightless
name = "Weightless"
desc = "Gravity has ceased affecting you, and you're floating around aimlessly. You'll need something large and heavy, like a \
wall or lattice, to push yourself off if you want to move. A jetpack would enable free range of motion. A pair of \
magboots would let you walk around normally on the floor. Barring those, you can throw things, use a fire extinguisher, \
or shoot a gun to move around via Newton's 3rd Law of Motion."
icon_state = "weightless"
/obj/screen/alert/fire
name = "On Fire"
desc = "You're on fire. Stop, drop and roll to put the fire out or move to a vacuum area."
icon_state = "fire"
/obj/screen/alert/fire/Click()
if(isliving(usr))
var/mob/living/L = usr
return L.resist()
//ALIENS
/obj/screen/alert/alien_tox
name = "Plasma"
desc = "There's flammable plasma in the air. If it lights up, you'll be toast."
icon_state = "alien_tox"
alerttooltipstyle = "alien"
/obj/screen/alert/alien_fire
// This alert is temporarily gonna be thrown for all hot air but one day it will be used for literally being on fire
name = "Too Hot"
desc = "It's too hot! Flee to space or at least away from the flames. Standing on weeds will heal you."
icon_state = "alien_fire"
alerttooltipstyle = "alien"
/obj/screen/alert/alien_vulnerable
name = "Severed Matriarchy"
desc = "Your queen has been killed, you will suffer movement penalties and loss of hivemind. A new queen cannot be made until you recover."
icon_state = "alien_noqueen"
alerttooltipstyle = "alien"
//BLOBS
/obj/screen/alert/nofactory
name = "No Factory"
desc = "You have no factory, and are slowly dying!"
icon_state = "blobbernaut_nofactory"
alerttooltipstyle = "blob"
//SILICONS
/obj/screen/alert/nocell
name = "Missing Power Cell"
desc = "Unit has no power cell. No modules available until a power cell is reinstalled. Robotics may provide assistance."
icon_state = "nocell"
/obj/screen/alert/emptycell
name = "Out of Power"
desc = "Unit's power cell has no charge remaining. No modules available until power cell is recharged. \
Recharging stations are available in robotics, the dormitory bathrooms, and the AI satellite."
icon_state = "emptycell"
/obj/screen/alert/lowcell
name = "Low Charge"
desc = "Unit's power cell is running low. Recharging stations are available in robotics, the dormitory bathrooms, and the AI satellite."
icon_state = "lowcell"
//Need to cover all use cases - emag, illegal upgrade module, malf AI hack, traitor cyborg
/obj/screen/alert/hacked
name = "Hacked"
desc = "Hazardous non-standard equipment detected. Please ensure any usage of this equipment is in line with unit's laws, if any."
icon_state = "hacked"
/obj/screen/alert/locked
name = "Locked Down"
desc = "Unit has been remotely locked down. Usage of a Robotics Control Console like the one in the Research Director's \
office by your AI master or any qualified human may resolve this matter. Robotics may provide further assistance if necessary."
icon_state = "locked"
/obj/screen/alert/newlaw
name = "Law Update"
desc = "Laws have potentially been uploaded to or removed from this unit. Please be aware of any changes \
so as to remain in compliance with the most up-to-date laws."
icon_state = "newlaw"
timeout = 300
//MECHS
/obj/screen/alert/low_mech_integrity
name = "Mech Damaged"
desc = "Mech integrity is low."
icon_state = "low_mech_integrity"
//GHOSTS
//TODO: expand this system to replace the pollCandidates/CheckAntagonist/"choose quickly"/etc Yes/No messages
/obj/screen/alert/notify_cloning
name = "Revival"
desc = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!"
icon_state = "template"
timeout = 300
/obj/screen/alert/notify_cloning/Click()
if(!usr || !usr.client) return
var/mob/dead/observer/G = usr
G.reenter_corpse()
/obj/screen/alert/notify_jump
name = "Body created"
desc = "A body was created. You can enter it."
icon_state = "template"
timeout = 300
var/atom/jump_target = null
var/attack_not_jump = null
/obj/screen/alert/notify_jump/Click()
if(!usr || !usr.client) return
if(!jump_target) return
var/mob/dead/observer/G = usr
if(!istype(G)) return
if(attack_not_jump)
jump_target.attack_ghost(G)
else
var/turf/T = get_turf(jump_target)
if(T && isturf(T))
G.loc = T
//OBJECT-BASED
/obj/screen/alert/restrained/buckled
name = "Buckled"
desc = "You've been buckled to something. Click the alert to unbuckle unless you're handcuffed."
/obj/screen/alert/restrained/handcuffed
name = "Handcuffed"
desc = "You're handcuffed and can't act. If anyone drags you, you won't be able to move. Click the alert to free yourself."
/obj/screen/alert/restrained/legcuffed
name = "Legcuffed"
desc = "You're legcuffed, which slows you down considerably. Click the alert to free yourself."
/obj/screen/alert/restrained/Click()
if(isliving(usr))
var/mob/living/L = usr
return L.resist()
// PRIVATE = only edit, use, or override these if you're editing the system as a whole
// Re-render all alerts - also called in /datum/hud/show_hud() because it's needed there
/datum/hud/proc/reorganize_alerts()
var/list/alerts = mymob.alerts
var/icon_pref
if(!hud_shown)
for(var/i = 1, i <= alerts.len, i++)
mymob.client.screen -= alerts[alerts[i]]
return 1
for(var/i = 1, i <= alerts.len, i++)
var/obj/screen/alert/alert = alerts[alerts[i]]
if(alert.icon_state == "template")
if(!icon_pref)
icon_pref = ui_style2icon(mymob.client.prefs.UI_style)
alert.icon = icon_pref
switch(i)
if(1)
. = ui_alert1
if(2)
. = ui_alert2
if(3)
. = ui_alert3
if(4)
. = ui_alert4
if(5)
. = ui_alert5 // Right now there's 5 slots
else
. = ""
alert.screen_loc = .
mymob.client.screen |= alert
return 1
/mob
var/list/alerts = list() // contains /obj/screen/alert only // On /mob so clientless mobs will throw alerts properly
/obj/screen/alert/Click(location, control, params)
if(!usr || !usr.client)
return
var/paramslist = params2list(params)
if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat
usr << "<span class='boldnotice'>[name]</span> - <span class='info'>[desc]</span>"
return
if(master)
return usr.client.Click(master, location, control, params)
/obj/screen/alert/Destroy()
..()
severity = 0
master = null
screen_loc = ""
return QDEL_HINT_QUEUE
+1 -19
View File
@@ -125,24 +125,6 @@
mymob.throw_icon.name = "throw"
mymob.throw_icon.screen_loc = ui_drop_throw
mymob.oxygen = new /obj/screen()
mymob.oxygen.icon = 'icons/mob/screen1_alien.dmi'
mymob.oxygen.icon_state = "oxy0"
mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_alien_oxygen
mymob.toxin = new /obj/screen()
mymob.toxin.icon = 'icons/mob/screen1_alien.dmi'
mymob.toxin.icon_state = "tox0"
mymob.toxin.name = "toxin"
mymob.toxin.screen_loc = ui_alien_toxin
mymob.fire = new /obj/screen()
mymob.fire.icon = 'icons/mob/screen1_alien.dmi'
mymob.fire.icon_state = "fire0"
mymob.fire.name = "fire"
mymob.fire.screen_loc = ui_alien_fire
mymob.healths = new /obj/screen()
mymob.healths.icon = 'icons/mob/screen1_alien.dmi'
mymob.healths.icon_state = "health0"
@@ -173,6 +155,6 @@
mymob.client.screen = list()
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, nightvisionicon, mymob.pullin, alien_plasma_display, mymob.pullin) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.healths, nightvisionicon, mymob.pullin, alien_plasma_display, mymob.pullin) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other
mymob.client.screen += mymob.client.void
+1 -21
View File
@@ -24,26 +24,6 @@
src.adding += using
move_intent = using
mymob.oxygen = new /obj/screen()
mymob.oxygen.icon = 'icons/mob/screen1_alien.dmi'
mymob.oxygen.icon_state = "oxy0"
mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_alien_oxygen
mymob.toxin = new /obj/screen()
mymob.toxin.icon = 'icons/mob/screen1_alien.dmi'
mymob.toxin.icon_state = "tox0"
mymob.toxin.name = "toxin"
mymob.toxin.screen_loc = ui_alien_toxin
mymob.fire = new /obj/screen()
mymob.fire.icon = 'icons/mob/screen1_alien.dmi'
mymob.fire.icon_state = "fire0"
mymob.fire.name = "fire"
mymob.fire.screen_loc = ui_alien_fire
mymob.healths = new /obj/screen()
mymob.healths.icon = 'icons/mob/screen1_alien.dmi'
mymob.healths.icon_state = "health0"
@@ -68,6 +48,6 @@
mymob.client.screen = list()
mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, nightvisionicon, mymob.pullin) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += list( mymob.zone_sel, mymob.healths, nightvisionicon, mymob.pullin) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other
mymob.client.screen += mymob.client.void
+1 -13
View File
@@ -30,18 +30,6 @@
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_borg_health
mymob.oxygen = new /obj/screen()
mymob.oxygen.icon = 'icons/mob/screen1_bot.dmi'
mymob.oxygen.icon_state = "oxy0"
mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_oxygen
mymob.fire = new /obj/screen()
mymob.fire.icon = 'icons/mob/screen1_bot.dmi'
mymob.fire.icon_state = "fire0"
mymob.fire.name = "fire"
mymob.fire.screen_loc = ui_fire
mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = 'icons/mob/screen1_bot.dmi'
mymob.pullin.update_icon(mymob)
@@ -49,7 +37,7 @@
mymob.client.screen = list()
mymob.client.screen += list(mymob.oxygen, mymob.fire, mymob.healths, mymob.pullin)
mymob.client.screen += list(mymob.healths, mymob.pullin)
mymob.client.screen += adding + other
mymob.client.screen += mymob.client.void
return
+4 -1
View File
@@ -127,6 +127,9 @@ datum/hud/New(mob/owner)
corgi_hud()
reload_fullscreen()
persistant_inventory_update()
mymob.update_action_buttons()
reorganize_alerts()
//Triggered when F12 is pressed (Unless someone changed something in the DMF)
/mob/verb/button_pressed_F12(var/full = 0 as null)
@@ -192,7 +195,7 @@ datum/hud/New(mob/owner)
hud_used.hidden_inventory_update()
hud_used.persistant_inventory_update()
update_action_buttons()
//hud_used.reorganize_alerts()
hud_used.reorganize_alerts()
else
to_chat(usr, "\red Inventory hiding is currently only supported for human mobs, sorry.")
+1 -37
View File
@@ -358,42 +358,12 @@
mymob.throw_icon.alpha = ui_alpha
src.hotkeybuttons += mymob.throw_icon
mymob.oxygen = new /obj/screen()
mymob.oxygen.icon = ui_style
mymob.oxygen.icon_state = "oxy0"
mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_oxygen
mymob.pressure = new /obj/screen()
mymob.pressure.icon = ui_style
mymob.pressure.icon_state = "pressure0"
mymob.pressure.name = "pressure"
mymob.pressure.screen_loc = ui_pressure
mymob.toxin = new /obj/screen()
mymob.toxin.icon = ui_style
mymob.toxin.icon_state = "tox0"
mymob.toxin.name = "toxin"
mymob.toxin.screen_loc = ui_toxin
mymob.internals = new /obj/screen/internals()
mymob.internals.icon = ui_style
mymob.internals.icon_state = "internal0"
mymob.internals.name = "internal"
mymob.internals.screen_loc = ui_internal
mymob.fire = new /obj/screen()
mymob.fire.icon = ui_style
mymob.fire.icon_state = "fire0"
mymob.fire.name = "fire"
mymob.fire.screen_loc = ui_fire
mymob.bodytemp = new /obj/screen()
mymob.bodytemp.icon = ui_style
mymob.bodytemp.icon_state = "temp1"
mymob.bodytemp.name = "body temperature"
mymob.bodytemp.screen_loc = ui_temp
mymob.healths = new /obj/screen()
mymob.healths.icon = ui_style
mymob.healths.icon_state = "health0"
@@ -406,12 +376,6 @@
mymob.healthdoll.name = "health doll"
mymob.healthdoll.screen_loc = ui_healthdoll
mymob.nutrition_icon = new /obj/screen()
mymob.nutrition_icon.icon = ui_style
mymob.nutrition_icon.icon_state = "nutrition0"
mymob.nutrition_icon.name = "nutrition"
mymob.nutrition_icon.screen_loc = ui_nutrition
mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = ui_style
mymob.pullin.update_icon(mymob)
@@ -454,7 +418,7 @@
mymob.client.screen = list()
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.healthdoll, mymob.nutrition_icon, mymob.pullin, mymob.gun_setting_icon, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach )
mymob.client.screen += list(mymob.throw_icon, mymob.zone_sel, mymob.internals, mymob.healths, mymob.healthdoll, mymob.pullin, mymob.gun_setting_icon, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach )
mymob.client.screen += src.adding + src.hotkeybuttons
mymob.client.screen += mymob.client.void
inventory_shown = 0
+1 -37
View File
@@ -126,42 +126,12 @@
mymob.throw_icon.alpha = ui_alpha
src.hotkeybuttons += mymob.throw_icon
mymob.oxygen = new /obj/screen()
mymob.oxygen.icon = ui_style
mymob.oxygen.icon_state = "oxy0"
mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_oxygen
mymob.pressure = new /obj/screen()
mymob.pressure.icon = ui_style
mymob.pressure.icon_state = "pressure0"
mymob.pressure.name = "pressure"
mymob.pressure.screen_loc = ui_pressure
mymob.toxin = new /obj/screen()
mymob.toxin.icon = ui_style
mymob.toxin.icon_state = "tox0"
mymob.toxin.name = "toxin"
mymob.toxin.screen_loc = ui_toxin
mymob.internals = new /obj/screen/internals()
mymob.internals.icon = ui_style
mymob.internals.icon_state = "internal0"
mymob.internals.name = "internal"
mymob.internals.screen_loc = ui_internal
mymob.fire = new /obj/screen()
mymob.fire.icon = ui_style
mymob.fire.icon_state = "fire0"
mymob.fire.name = "fire"
mymob.fire.screen_loc = ui_fire
mymob.bodytemp = new /obj/screen()
mymob.bodytemp.icon = ui_style
mymob.bodytemp.icon_state = "temp1"
mymob.bodytemp.name = "body temperature"
mymob.bodytemp.screen_loc = ui_temp
mymob.healths = new /obj/screen()
mymob.healths.icon = ui_style
mymob.healths.icon_state = "health0"
@@ -174,12 +144,6 @@
mymob.healthdoll.name = "health doll"
mymob.healthdoll.screen_loc = ui_healthdoll
mymob.nutrition_icon = new /obj/screen()
mymob.nutrition_icon.icon = ui_style
mymob.nutrition_icon.icon_state = "nutrition0"
mymob.nutrition_icon.name = "nutrition"
mymob.nutrition_icon.screen_loc = ui_nutrition
mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = ui_style
mymob.pullin.update_icon(mymob)
@@ -223,7 +187,7 @@
mymob.client.screen = list()
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.healthdoll, mymob.nutrition_icon, mymob.pullin, mymob.gun_setting_icon, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach )
mymob.client.screen += list(mymob.throw_icon, mymob.zone_sel, mymob.internals, mymob.healths, mymob.healthdoll, mymob.pullin, mymob.gun_setting_icon, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach )
mymob.client.screen += src.adding + src.hotkeybuttons
mymob.client.screen += mymob.client.void
+1 -20
View File
@@ -6,12 +6,6 @@
return
/datum/hud/proc/corgi_hud(u)
mymob.fire = new /obj/screen()
mymob.fire.icon = 'icons/mob/screen1_corgi.dmi'
mymob.fire.icon_state = "fire0"
mymob.fire.name = "fire"
mymob.fire.screen_loc = ui_fire
mymob.healths = new /obj/screen()
mymob.healths.icon = 'icons/mob/screen1_corgi.dmi'
mymob.healths.icon_state = "health0"
@@ -23,21 +17,8 @@
mymob.pullin.update_icon(mymob)
mymob.pullin.screen_loc = ui_construct_pull
mymob.oxygen = new /obj/screen()
mymob.oxygen.icon = 'icons/mob/screen1_corgi.dmi'
mymob.oxygen.icon_state = "oxy0"
mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_oxygen
mymob.toxin = new /obj/screen()
mymob.toxin.icon = 'icons/mob/screen1_corgi.dmi'
mymob.toxin.icon_state = "tox0"
mymob.toxin.name = "toxin"
mymob.toxin.screen_loc = ui_toxin
mymob.client.screen = list()
mymob.client.screen += list(mymob.fire, mymob.healths, mymob.pullin, mymob.oxygen, mymob.toxin)
mymob.client.screen += list(mymob.healths, mymob.pullin)
/datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen1_Midnight.dmi')
+1 -27
View File
@@ -150,13 +150,6 @@
src.adding += using
action_intent = using
//Cell
mymob:cells = new /obj/screen()
mymob:cells.icon = 'icons/mob/screen1_robot.dmi'
mymob:cells.icon_state = "charge-empty"
mymob:cells.name = "cell"
mymob:cells.screen_loc = ui_toxin
//Health
mymob.healths = new /obj/screen()
mymob.healths.icon = 'icons/mob/screen1_robot.dmi'
@@ -186,25 +179,6 @@
mymob:lamp_button.name = "Toggle Headlamp"
mymob:lamp_button.screen_loc = ui_borg_lamp
//Temp
mymob.bodytemp = new /obj/screen()
mymob.bodytemp.icon_state = "temp0"
mymob.bodytemp.name = "body temperature"
mymob.bodytemp.screen_loc = ui_temp
mymob.oxygen = new /obj/screen()
mymob.oxygen.icon = 'icons/mob/screen1_robot.dmi'
mymob.oxygen.icon_state = "oxy0"
mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_oxygen
mymob.fire = new /obj/screen()
mymob.fire.icon = 'icons/mob/screen1_robot.dmi'
mymob.fire.icon_state = "fire0"
mymob.fire.name = "fire"
mymob.fire.screen_loc = ui_fire
mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = 'icons/mob/screen1_robot.dmi'
mymob.pullin.update_icon(mymob)
@@ -220,7 +194,7 @@
mymob.client.screen = list()
mymob.client.screen += list(mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.gun_setting_icon, mymob:lamp_button) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += list(mymob.zone_sel, mymob.hands, mymob.healths, mymob.pullin, mymob.gun_setting_icon, mymob:lamp_button) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other
mymob.client.screen += mymob.client.void
return
+2 -3
View File
@@ -182,9 +182,8 @@
if (istype(location, /turf/simulated))
location.add_blood_floor(M)
if("fire")
if (!(RESIST_COLD in M.mutations))
M.take_organ_damage(0, power)
to_chat(M, "Aargh it burns!")
M.take_organ_damage(0, power)
to_chat(M, "Aargh it burns!")
M.updatehealth()
add_fingerprint(user)
return 1
+1 -1
View File
@@ -40,7 +40,7 @@ var/global/datum/controller/process/npcai/npcai_master
simple_animal_list -= M
if(ticker.current_state == GAME_STATE_FINISHED && !saved_voice)
var/mob/living/carbon/human/interactive/M = pick(snpc_list)
var/mob/living/carbon/human/interactive/M = safepick(snpc_list)
if(M)
M.saveVoice()
saved_voice = 1
+1 -1
View File
@@ -266,7 +266,7 @@
blacklist = null
whitelist = list(/obj/item/device,/obj/item/weapon/card,/obj/item/weapon/cartridge,/obj/item/weapon/cautery,/obj/item/weapon/stock_parts/cell,/obj/item/weapon/circuitboard,
/obj/item/weapon/aiModule,/obj/item/weapon/airalarm_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/circular_saw,
/obj/item/weapon/cloaking_device,/obj/item/weapon/crowbar,/obj/item/weapon/disk,/obj/item/weapon/firealarm_electronics,/obj/item/weapon/hand_tele,
/obj/item/weapon/crowbar,/obj/item/weapon/disk,/obj/item/weapon/firealarm_electronics,/obj/item/weapon/hand_tele,
/obj/item/weapon/hand_labeler,/obj/item/weapon/hemostat,/obj/item/weapon/mop,/obj/item/weapon/locator,/obj/item/weapon/minihoe,
/obj/item/stack/packageWrap,/obj/item/weapon/pen,/obj/item/weapon/pickaxe,/obj/item/weapon/pinpointer,
/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/retractor,/obj/item/weapon/rsf,/obj/item/weapon/rsp,/obj/item/weapon/scalpel,
@@ -0,0 +1,15 @@
/datum/icon_snapshot
var/name
var/icon
var/icon_state
var/list/overlays
/datum/icon_snapshot/proc/makeImg()
if(!icon || !icon_state)
return
var/obj/temp = new
temp.icon = icon
temp.icon_state = icon_state
temp.overlays = overlays.Copy()
var/icon/tempicon = getFlatIcon(temp) // TODO Actually write something less heavy-handed for this
return tempicon
+95
View File
@@ -58,6 +58,7 @@
var/datum/changeling/changeling //changeling holder
var/datum/vampire/vampire //vampire holder
var/datum/nations/nation //nation holder
var/datum/abductor/abductor //abductor holder
var/antag_hud_icon_state = null //this mind's ANTAG_HUD should have this icon_state
var/datum/atom_hud/antag/antag_hud = null //this mind's antag HUD
@@ -345,6 +346,26 @@
sections["shadowling"] = text
/** Abductors **/
text = "Abductor"
if(ticker.mode.config_tag == "abductor")
text = uppertext(text)
text = "<i><b>[text]</b></i>: "
if(src in ticker.mode.abductors)
text += "<b>Abductor</b>|<a href='?src=\ref[src];abductor=clear'>human</a>"
text += "|<a href='?src=\ref[src];common=undress'>undress</a>|<a href='?src=\ref[src];abductor=equip'>equip</a>"
else
text += "<a href='?src=\ref[src];abductor=abductor'>Abductor</a>|<b>human</b>"
if(current && current.client && (ROLE_ABDUCTOR in current.client.prefs.be_special))
text += "|Enabled in Prefs"
else
text += "|Disabled in Prefs"
sections["Abductor"] = text
/** SILICON ***/
if (istype(current, /mob/living/silicon))
@@ -898,6 +919,7 @@
if(vampire)
vampire.remove_vampire_powers()
qdel(vampire)
vampire = null
ticker.mode.update_vampire_icons_removed(src)
to_chat(current, "<FONT color='red' size = 3><B>You grow weak and lose your powers! You are no longer a vampire and are stuck in your current form!</B></FONT>")
log_admin("[key_name(usr)] has de-vampired [key_name(current)]")
@@ -1068,6 +1090,28 @@
message_admins("[key_name_admin(usr)] has thralled [current].")
log_admin("[key_name(usr)] has thralled [current].")
else if(href_list["abductor"])
switch(href_list["abductor"])
if("clear")
to_chat(usr, "Not implemented yet. Sorry!")
//ticker.mode.update_abductor_icons_removed(src)
if("abductor")
if(!ishuman(current))
to_chat(usr, "<span class='warning'>This only works on humans!</span>")
return
make_Abductor()
log_admin("[key_name(usr)] turned [current] into abductor.")
ticker.mode.update_abductor_icons_added(src)
if("equip")
var/gear = alert("Agent or Scientist Gear","Gear","Agent","Scientist")
if(gear)
var/datum/game_mode/abduction/temp = new
temp.equip_common(current)
if(gear=="Agent")
temp.equip_agent(current)
else
temp.equip_scientist(current)
else if (href_list["silicon"])
switch(href_list["silicon"])
if("unmalf")
@@ -1372,6 +1416,57 @@
// fail |= !ticker.mode.equip_traitor(current, 1)
fail |= !ticker.mode.equip_revolutionary(current)
/datum/mind/proc/make_Abductor()
var/role = alert("Abductor Role ?","Role","Agent","Scientist")
var/team = input("Abductor Team ?","Team ?") in list(1,2,3,4)
var/teleport = alert("Teleport to ship ?","Teleport","Yes","No")
if(!role || !team || !teleport)
return
if(!ishuman(current))
return
ticker.mode.abductors |= src
var/datum/objective/experiment/O = new
O.owner = src
objectives += O
var/mob/living/carbon/human/H = current
H.set_species("Abductor")
switch(role)
if("Agent")
H.mind.abductor.agent = 1
if("Scientist")
H.mind.abductor.scientist = 1
H.mind.abductor.team = team
var/list/obj/effect/landmark/abductor/agent_landmarks = new
var/list/obj/effect/landmark/abductor/scientist_landmarks = new
agent_landmarks.len = 4
scientist_landmarks.len = 4
for(var/obj/effect/landmark/abductor/A in landmarks_list)
if(istype(A,/obj/effect/landmark/abductor/agent))
agent_landmarks[text2num(A.team)] = A
else if(istype(A,/obj/effect/landmark/abductor/scientist))
scientist_landmarks[text2num(A.team)] = A
var/obj/effect/landmark/L
if(teleport=="Yes")
switch(role)
if("Agent")
H.mind.abductor.agent = 1
L = agent_landmarks[team]
H.loc = L.loc
if("Scientist")
H.mind.abductor.scientist = 1
L = agent_landmarks[team]
H.loc = L.loc
// check whether this mind's mob has been brigged for the given duration
// have to call this periodically for the duration to work properly
/datum/mind/proc/is_brigged(duration)
+2
View File
@@ -1210,6 +1210,8 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/obj/item/weapon/pen,
/obj/item/weapon/pen/blue,
/obj/item/weapon/pen/red,
/obj/item/weapon/stamp/denied,
/obj/item/weapon/stamp/granted,
/obj/item/weapon/folder/blue,
/obj/item/weapon/folder/red,
/obj/item/weapon/folder/yellow,
+8
View File
@@ -618,6 +618,14 @@ var/list/ghostteleportlocs = list()
name = "\improper Hyperspace"
icon_state = "shuttle"
//Abductors
/area/abductor_ship
name = "\improper Abductor Ship"
icon_state = "yellow"
requires_power = 0
has_gravity = 1
lighting_use_dynamic = 0
/area/wizard_station
name = "\improper Wizard's Den"
icon_state = "yellow"
+6 -7
View File
@@ -271,10 +271,7 @@
|| locate(/obj/machinery/computer/cloning, get_step(src, EAST)) \
|| locate(/obj/machinery/computer/cloning, get_step(src, WEST)))
var/mob/dead/observer/ghost = occupant.get_ghost()
if(ghost)
to_chat(ghost, "<span class='ghostalert'>Your corpse has been placed into a cloning scanner. Return to your body if you want to be cloned!</span> (Verbs -> Ghost -> Re-enter corpse)")
to_chat(ghost, sound('sound/effects/genetics.ogg'))
occupant.notify_ghost_cloning(source = src)
return
/obj/machinery/dna_scannernew/proc/go_out()
@@ -926,7 +923,7 @@
return 1
if (bufferOption == "createInjector")
if (src.injector_ready || waiting_for_user_input)
if(injector_ready && !waiting_for_user_input)
var/success = 1
var/obj/item/weapon/dnainjector/I = new /obj/item/weapon/dnainjector
@@ -939,14 +936,16 @@
selectedbuf=buf.dna.SE
else
selectedbuf=buf.dna.UI
var/blk = input(usr,"Select Block","Block") in all_dna_blocks(selectedbuf)
var/blk = input(usr,"Select Block","Block") as null|anything in all_dna_blocks(selectedbuf)
success = setInjectorBlock(I,blk,buf)
else
I.buf = buf
waiting_for_user_input=0
waiting_for_user_input = 0
if(success)
I.forceMove(src.loc)
I.name += " ([buf.name])"
if(connected)
I.damage_coeff = connected.damage_coeff
src.injector_ready = 0
spawn(300)
src.injector_ready = 1
+1 -1
View File
@@ -776,7 +776,7 @@ var/list/sacrificed = list()
if (cultist.handcuffed)
cultist.handcuffed.loc = cultist.loc
cultist.handcuffed = null
cultist.update_inv_handcuffed()
cultist.update_handcuffed()
if (cultist.legcuffed)
cultist.legcuffed.loc = cultist.loc
cultist.legcuffed = null
+26
View File
@@ -448,3 +448,29 @@ proc/get_nt_opposed()
else
message_admins("[M] ([M.key] has been converted into [role_type] with an active antagonist jobban for said role since no ghost has volunteered to take their place.")
to_chat(M, "<span class='biggerdanger'>You have been converted into [role_type] with an active jobban. Any further violations of the rules on your part are likely to result in a permanent ban.</span>")
/datum/game_mode/proc/printplayer(datum/mind/ply, fleecheck)
var/text = "<br><b>[ply.key]</b> was <b>[ply.name]</b> the <b>[ply.assigned_role]</b> and"
if(ply.current)
if(ply.current.stat == DEAD)
text += " <span class='boldannounce'>died</span>"
else
text += " <span class='greenannounce'>survived</span>"
if(fleecheck && ply.current.z > ZLEVEL_STATION)
text += " while <span class='boldannounce'>fleeing the station</span>"
if(ply.current.real_name != ply.name)
text += " as <b>[ply.current.real_name]</b>"
else
text += " <span class='boldannounce'>had their body destroyed</span>"
return text
/datum/game_mode/proc/printobjectives(datum/mind/ply)
var/text = ""
var/count = 1
for(var/datum/objective/objective in ply.objectives)
if(objective.check_completion())
text += "<br><b>Objective #[count]</b>: [objective.explanation_text] <span class='greenannounce'>Success!</span>"
else
text += "<br><b>Objective #[count]</b>: [objective.explanation_text] <span class='boldannounce'>Fail.</span>"
count++
return text
@@ -0,0 +1,456 @@
/datum/game_mode
var/abductor_teams = 0
var/list/datum/mind/abductors = list()
var/list/datum/mind/abductees = list()
/datum/game_mode/abduction
name = "abduction"
config_tag = "abduction"
recommended_enemies = 2
required_players = 15
required_players_secret = 15
var/max_teams = 4
abductor_teams = 1
var/list/datum/mind/scientists = list()
var/list/datum/mind/agents = list()
var/list/datum/objective/team_objectives = list()
var/list/team_names = list()
var/finished = 0
var/list/datum/mind/possible_abductors = list()
/datum/game_mode/abduction/announce()
to_chat(world, "<B>The current game mode is - Abduction!</B>")
to_chat(world, "There are alien <b>abductors</b> sent to [world.name] to perform nefarious experiments!")
to_chat(world, "<b>Abductors</b> - kidnap the crew and replace their organs with experimental ones.")
to_chat(world, "<b>Crew</b> - don't get abducted and stop the abductors.")
/datum/game_mode/abduction/pre_setup()
possible_abductors = get_players_for_role(ROLE_ABDUCTOR)
if(!possible_abductors.len)
return 0
abductor_teams = max(1, min(max_teams,round(num_players()/15)))
var/possible_teams = max(1,round(possible_abductors.len / 2))
abductor_teams = min(abductor_teams,possible_teams)
abductors.len = 2*abductor_teams
scientists.len = abductor_teams
agents.len = abductor_teams
team_objectives.len = abductor_teams
team_names.len = abductor_teams
for(var/i=1,i<=abductor_teams,i++)
if(!make_abductor_team(i))
return 0
return 1
/datum/game_mode/abduction/proc/make_abductor_team(team_number,preset_agent=null,preset_scientist=null)
//Team Name
team_names[team_number] = "Mothership [pick(possible_changeling_IDs)]" //TODO Ensure unique and actual alieny names
//Team Objective
var/datum/objective/experiment/team_objective = new
team_objective.team = team_number
team_objectives[team_number] = team_objective
//Team Members
if(!preset_agent || !preset_scientist)
if(possible_abductors.len <=2)
return 0
var/datum/mind/scientist
var/datum/mind/agent
if(!preset_scientist)
scientist = pick(possible_abductors)
possible_abductors -= scientist
else
scientist = preset_scientist
if(!preset_agent)
agent = pick(possible_abductors)
possible_abductors -= agent
else
agent = preset_agent
scientist.assigned_role = "MODE"
scientist.special_role = "abductor scientist"
log_game("[scientist.key] (ckey) has been selected as an abductor team [team_number] scientist.")
agent.assigned_role = "MODE"
agent.special_role = "abductor agent"
log_game("[agent.key] (ckey) has been selected as an abductor team [team_number] agent.")
abductors |= agent
abductors |= scientist
scientists[team_number] = scientist
agents[team_number] = agent
return 1
/datum/game_mode/abduction/post_setup()
//Spawn Team
var/list/obj/effect/landmark/abductor/agent_landmarks = new
var/list/obj/effect/landmark/abductor/scientist_landmarks = new
agent_landmarks.len = max_teams
scientist_landmarks.len = max_teams
for(var/obj/effect/landmark/abductor/A in landmarks_list)
if(istype(A,/obj/effect/landmark/abductor/agent))
agent_landmarks[text2num(A.team)] = A
else if(istype(A,/obj/effect/landmark/abductor/scientist))
scientist_landmarks[text2num(A.team)] = A
var/datum/mind/agent
var/obj/effect/landmark/L
var/datum/mind/scientist
var/team_name
var/mob/living/carbon/human/H
for(var/team_number=1,team_number<=abductor_teams,team_number++)
team_name = team_names[team_number]
agent = agents[team_number]
H = agent.current
L = agent_landmarks[team_number]
H.forceMove(get_turf(L))
H.set_species("Abductor")
H.mind.abductor.agent = 1
H.mind.abductor.team = team_number
H.real_name = team_name + " Agent"
equip_common(H,team_number)
equip_agent(H,team_number)
greet_agent(agent,team_number)
scientist = scientists[team_number]
H = scientist.current
L = scientist_landmarks[team_number]
H.forceMove(get_turf(L))
H.set_species("Abductor")
H.mind.abductor.scientist = 1
H.mind.abductor.team = team_number
H.real_name = team_name + " Scientist"
equip_common(H,team_number)
equip_scientist(H,team_number)
greet_scientist(scientist,team_number)
return ..()
//Used for create antag buttons
/datum/game_mode/abduction/proc/post_setup_team(team_number)
var/list/obj/effect/landmark/abductor/agent_landmarks = new
var/list/obj/effect/landmark/abductor/scientist_landmarks = new
agent_landmarks.len = max_teams
scientist_landmarks.len = max_teams
for(var/obj/effect/landmark/abductor/A in landmarks_list)
if(istype(A,/obj/effect/landmark/abductor/agent))
agent_landmarks[text2num(A.team)] = A
else if(istype(A,/obj/effect/landmark/abductor/scientist))
scientist_landmarks[text2num(A.team)] = A
var/datum/mind/agent
var/obj/effect/landmark/L
var/datum/mind/scientist
var/team_name
var/mob/living/carbon/human/H
team_name = team_names[team_number]
agent = agents[team_number]
H = agent.current
L = agent_landmarks[team_number]
H.forceMove(get_turf(L))
H.set_species("Abductor")
H.mind.abductor.agent = 1
H.mind.abductor.team = team_number
H.real_name = team_name + " Agent"
equip_common(H,team_number)
equip_agent(H,team_number)
greet_agent(agent,team_number)
scientist = scientists[team_number]
H = scientist.current
L = scientist_landmarks[team_number]
H.forceMove(get_turf(L))
H.set_species("Abductor")
H.mind.abductor.scientist = 1
H.mind.abductor.team = team_number
H.real_name = team_name + " Scientist"
equip_common(H,team_number)
equip_scientist(H,team_number)
greet_scientist(scientist,team_number)
/datum/abductor //stores abductor's team and whether they're a scientist or agent; since species datums are global, we have to use this, instead.
var/scientist = 0
var/agent = 0
var/team = 1
/datum/game_mode/abduction/proc/greet_agent(datum/mind/abductor,team_number)
abductor.objectives += team_objectives[team_number]
var/team_name = team_names[team_number]
to_chat(abductor.current, "<span class='notice'>You are an agent of [team_name]!</span>")
to_chat(abductor.current, "<span class='notice'>With the help of your teammate, kidnap and experiment on station crew members!</span>")
to_chat(abductor.current, "<span class='notice'>Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve.</span>")
var/obj_count = 1
for(var/datum/objective/objective in abductor.objectives)
to_chat(abductor.current, "<B>Objective #[obj_count]</B>: [objective.explanation_text]")
obj_count++
return
/datum/game_mode/abduction/proc/greet_scientist(datum/mind/abductor,team_number)
abductor.objectives += team_objectives[team_number]
var/team_name = team_names[team_number]
to_chat(abductor.current, "<span class='notice'>You are a scientist of [team_name]!</span>")
to_chat(abductor.current, "<span class='notice'>With the help of your teammate, kidnap and experiment on station crew members!</span>")
to_chat(abductor.current, "<span class='notice'>Use your tool and ship consoles to support the agent and retrieve human specimens.</span>")
var/obj_count = 1
for(var/datum/objective/objective in abductor.objectives)
to_chat(abductor.current, "<B>Objective #[obj_count]</B>: [objective.explanation_text]")
obj_count++
return
/datum/game_mode/abduction/proc/equip_common(mob/living/carbon/human/agent,team_number)
var/radio_freq = SYND_FREQ
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate/alt(agent)
R.set_frequency(radio_freq)
agent.equip_to_slot_or_del(R, slot_l_ear)
agent.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(agent), slot_shoes)
agent.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(agent), slot_w_uniform) //they're greys gettit
agent.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(agent), slot_back)
/datum/game_mode/abduction/proc/get_team_console(team)
var/obj/machinery/abductor/console/console
for(var/obj/machinery/abductor/console/c in abductor_equipment)
if(c.team == team)
console = c
break
return console
/datum/game_mode/abduction/proc/equip_agent(mob/living/carbon/human/agent,team_number)
if(!team_number)
team_number = agent.mind.abductor.team
var/obj/machinery/abductor/console/console = get_team_console(team_number)
var/obj/item/clothing/suit/armor/abductor/vest/V = new /obj/item/clothing/suit/armor/abductor/vest(agent)
if(console!=null)
console.vest = V
V.flags |= NODROP
agent.equip_to_slot_or_del(V, slot_wear_suit)
agent.equip_to_slot_or_del(new /obj/item/weapon/abductor_baton(agent), slot_in_backpack)
agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/decloner/alien(agent), slot_belt)
agent.equip_to_slot_or_del(new /obj/item/device/abductor/silencer(agent), slot_in_backpack)
agent.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/abductor(agent), slot_head)
agent.update_icons()
/datum/game_mode/abduction/proc/equip_scientist(var/mob/living/carbon/human/scientist,var/team_number)
if(!team_number)
team_number = scientist.mind.abductor.team
var/obj/machinery/abductor/console/console = get_team_console(team_number)
var/obj/item/device/abductor/gizmo/G = new /obj/item/device/abductor/gizmo(scientist)
if(console!=null)
console.gizmo = G
G.console = console
scientist.equip_to_slot_or_del(G, slot_in_backpack)
var/obj/item/weapon/implant/abductor/beamplant = new /obj/item/weapon/implant/abductor(scientist)
beamplant.implant(scientist)
scientist.update_icons()
/datum/game_mode/abduction/check_finished()
if(!finished)
for(var/team_number=1,team_number<=abductor_teams,team_number++)
var/obj/machinery/abductor/console/con = get_team_console(team_number)
var/datum/objective/objective = team_objectives[team_number]
if (con.experiment.points >= objective.target_amount)
shuttle_master.emergency.request(null, 0.5)
finished = 1
return ..()
return ..()
/datum/game_mode/abduction/declare_completion()
for(var/team_number=1,team_number<=abductor_teams,team_number++)
var/obj/machinery/abductor/console/console = get_team_console(team_number)
var/datum/objective/objective = team_objectives[team_number]
var/team_name = team_names[team_number]
if(console.experiment.points >= objective.target_amount)
to_chat(world, "<span class='greenannounce'>[team_name] team fullfilled its mission!</span>")
else
to_chat(world, "<span class='boldannounce'>[team_name] team failed its mission.</span>")
..()
return 1
/datum/game_mode/proc/auto_declare_completion_abduction()
var/text = ""
if(abductors.len)
text += "<br><span class='big'><b>The abductors were:</b></span>"
for(var/datum/mind/abductor_mind in abductors)
text += printplayer(abductor_mind)
text += printobjectives(abductor_mind)
text += "<br>"
if(abductees.len)
text += "<br><span class='big'><b>The abductees were:</b></span>"
for(var/datum/mind/abductee_mind in abductees)
text += printplayer(abductee_mind)
text += printobjectives(abductee_mind)
text += "<br>"
to_chat(world, text)
//Landmarks
// TODO: Split into seperate landmarks for prettier ships
/obj/effect/landmark/abductor
var/team = 1
/obj/effect/landmark/abductor/agent
/obj/effect/landmark/abductor/scientist
// OBJECTIVES
/datum/objective/experiment
target_amount = 6
var/team
/datum/objective/experiment/New()
explanation_text = "Experiment on [target_amount] humans."
/datum/objective/experiment/check_completion()
var/ab_team = team
if(owner)
if(!owner.current || !ishuman(owner.current))
return 0
var/mob/living/carbon/human/H = owner.current
if(H.get_species() != "Abductor")
return 0
ab_team = H.mind.abductor.team
for(var/obj/machinery/abductor/experiment/E in abductor_equipment)
if(E.team == ab_team)
if(E.points >= target_amount)
return 1
else
return 0
return 0
/datum/game_mode/proc/update_abductor_icons_added(datum/mind/alien_mind)
var/datum/atom_hud/antag/hud = huds[ANTAG_HUD_ABDUCTOR]
hud.join_hud(alien_mind.current)
set_antag_hud(alien_mind.current, ((alien_mind in abductors) ? "abductor" : "abductee"))
/datum/game_mode/proc/update_abductor_icons_removed(datum/mind/alien_mind)
var/datum/atom_hud/antag/hud = huds[ANTAG_HUD_ABDUCTOR]
hud.leave_hud(alien_mind.current)
set_antag_hud(alien_mind.current, null)
/datum/objective/abductee
completed = 1
/datum/objective/abductee/steal
explanation_text = "Steal all"
/datum/objective/abductee/steal/New()
var/target = pick(list("pets","lights","monkeys","fruits","shoes","bars of soap"))
explanation_text+=" [target]."
/datum/objective/abductee/capture
explanation_text = "Capture"
/datum/objective/abductee/capture/New()
var/list/jobs = job_master.occupations.Copy()
for(var/datum/job/J in jobs)
if(J.current_positions < 1)
jobs -= J
if(jobs.len > 0)
var/datum/job/target = pick(jobs)
explanation_text += " a [target.title]."
else
explanation_text += " someone."
/datum/objective/abductee/shuttle
explanation_text = "You must escape the station! Get the shuttle called!"
/datum/objective/abductee/noclone
explanation_text = "Don't allow anyone to be cloned."
/datum/objective/abductee/oxygen
explanation_text = "The oxygen is killing them all and they don't even know it. Make sure no oxygen is on the station."
/datum/objective/abductee/blazeit
explanation_text = "Your body must be improved. Ingest as many drugs as you can."
/datum/objective/abductee/yumyum
explanation_text = "You are hungry. Eat as much food as you can find."
/datum/objective/abductee/insane
explanation_text = "You see you see what they cannot you see the open door you seeE you SEeEe you SEe yOU seEee SHOW THEM ALL"
/datum/objective/abductee/cannotmove
explanation_text = "Convince the crew that you are a paraplegic."
/datum/objective/abductee/deadbodies
explanation_text = "Start a collection of corpses. Don't kill people to get these corpses."
/datum/objective/abductee/floors
explanation_text = "Replace all the floor tiles with carpeting, wooden boards, or grass."
/datum/objective/abductee/POWERUNLIMITED
explanation_text = "Flood the station's powernet with as much electricity as you can."
/datum/objective/abductee/pristine
explanation_text = "Ensure the station is in absolutely pristine condition."
/datum/objective/abductee/window
explanation_text = "Replace all normal windows with reinforced windows."
/datum/objective/abductee/nations
explanation_text = "Ensure your department prospers over all else."
/datum/objective/abductee/abductception
explanation_text = "You have been changed forever. Find the ones that did this to you and give them a taste of their own medicine."
/datum/objective/abductee/ghosts
explanation_text = "Conduct a seance with the spirits of the afterlife."
/datum/objective/abductee/summon
explanation_text = "Conduct a ritual to summon an elder god."
/datum/objective/abductee/machine
explanation_text = "You are secretly an android. Interface with as many machines as you can to boost your own power."
/datum/objective/abductee/prevent
explanation_text = "You have been enlightened. This knowledge must not escape. Ensure nobody else can become enlightened."
/datum/objective/abductee/calling
explanation_text = "Call forth a spirit from the other side."
/datum/objective/abductee/calling/New()
var/mob/dead/D = pick(dead_mob_list)
if(D)
explanation_text = "You know that [D] has perished. Call them from the spirit realm."
/datum/objective/abductee/social_experiment
explanation_text = "This is a secret social experiment conducted by Nanotrasen. Convince the crew that this is the truth."
/datum/objective/abductee/vr
explanation_text = "It's all an entirely virtual simulation within an underground vault. Convince the crew to escape the shackles of VR."
/datum/objective/abductee/pets
explanation_text = "Nanotrasen is abusing the animals! Save as many as you can!"
/datum/objective/abductee/defect
explanation_text = "Defect from your employer."
/datum/objective/abductee/promote
explanation_text = "Climb the corporate ladder all the way to the top!"
/datum/objective/abductee/science
explanation_text = "So much lies undiscovered. Look deeper into the machinations of the universe."
/datum/objective/abductee/build
explanation_text = "Expand the station."
/datum/objective/abductee/pragnant
explanation_text = "You are pregnant and soon due. Find a safe place to deliver your baby."
@@ -0,0 +1,634 @@
#define VEST_STEALTH 1
#define VEST_COMBAT 2
#define GIZMO_SCAN 1
#define GIZMO_MARK 2
//AGENT VEST
/obj/item/clothing/suit/armor/abductor/vest
name = "agent vest"
desc = "A vest outfitted with advanced stealth technology. It has two modes - combat and stealth."
icon = 'icons/obj/abductor.dmi'
icon_state = "vest_stealth"
item_state = "armor"
blood_overlay_type = "armor"
origin_tech = "materials=5;biotech=4;powerstorage=5;abductor=3"
armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15)
action_button_name = "Activate"
action_button_is_hands_free = 1
var/mode = VEST_STEALTH
var/stealth_active = 0
var/combat_cooldown = 10
var/datum/icon_snapshot/disguise
var/stealth_armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15)
var/combat_armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 50, rad = 50)
/obj/item/clothing/suit/armor/abductor/vest/proc/flip_mode()
switch(mode)
if(VEST_STEALTH)
mode = VEST_COMBAT
DeactivateStealth()
armor = combat_armor
icon_state = "vest_combat"
if(istype(loc, /mob/living/carbon/human))
var/mob/living/carbon/human/H = loc
H.update_inv_wear_suit()
return
if(VEST_COMBAT)// TO STEALTH
mode = VEST_STEALTH
armor = stealth_armor
icon_state = "vest_stealth"
if(istype(loc, /mob/living/carbon/human))
var/mob/living/carbon/human/H = loc
H.update_inv_wear_suit()
return
/obj/item/clothing/suit/armor/abductor/vest/proc/SetDisguise(datum/icon_snapshot/entry)
disguise = entry
/obj/item/clothing/suit/armor/abductor/vest/proc/ActivateStealth()
if(disguise == null)
return
stealth_active = 1
if(ishuman(loc))
var/mob/living/carbon/human/M = src.loc
spawn(0)
anim(M.loc,M,'icons/mob/mob.dmi',,"cloak",,M.dir)
M.name_override = disguise.name
M.icon = disguise.icon
M.icon_state = disguise.icon_state
M.overlays = disguise.overlays
M.update_inv_r_hand()
M.update_inv_l_hand()
return
/obj/item/clothing/suit/armor/abductor/vest/proc/DeactivateStealth()
if(!stealth_active)
return
stealth_active = 0
if(ishuman(loc))
var/mob/living/carbon/human/M = src.loc
spawn(0)
anim(M.loc,M,'icons/mob/mob.dmi',,"uncloak",,M.dir)
M.name_override = null
M.overlays.Cut()
M.regenerate_icons()
return
/obj/item/clothing/suit/armor/abductor/vest/IsShield()
DeactivateStealth()
return 0
/obj/item/clothing/suit/armor/abductor/vest/IsReflect()
DeactivateStealth()
return 0
/obj/item/clothing/suit/armor/abductor/vest/ui_action_click()
switch(mode)
if(VEST_COMBAT)
Adrenaline()
if(VEST_STEALTH)
if(stealth_active)
DeactivateStealth()
else
ActivateStealth()
/obj/item/clothing/suit/armor/abductor/vest/proc/Adrenaline()
if(ishuman(loc))
if(combat_cooldown != initial(combat_cooldown))
to_chat(src.loc, "<span class='warning'>Combat injection is still recharging.</span>")
return
var/mob/living/carbon/human/M = src.loc
M.adjustStaminaLoss(-75)
M.SetParalysis(0)
M.SetStunned(0)
M.SetWeakened(0)
combat_cooldown = 0
processing_objects.Add(src)
/obj/item/clothing/suit/armor/abductor/vest/process()
combat_cooldown++
if(combat_cooldown==initial(combat_cooldown))
processing_objects.Remove(src)
/obj/item/device/abductor/proc/IsAbductor(user)
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.get_species() != "Abductor")
return 0
return 1
return 0
/obj/item/device/abductor/proc/AbductorCheck(user)
if(IsAbductor(user))
return 1
to_chat(user, "<span class='warning'>You can't figure how this works!</span>")
return 0
/obj/item/device/abductor/proc/ScientistCheck(user)
var/mob/living/carbon/human/H = user
if(H.mind && H.mind.abductor)
return H.mind.abductor.scientist
/obj/item/device/abductor/gizmo
name = "science tool"
desc = "A dual-mode tool for retrieving specimens and scanning appearances. Scanning can be done through cameras."
icon = 'icons/obj/abductor.dmi'
icon_state = "gizmo_scan"
item_state = "gizmo"
origin_tech = "materials=5;magnets=5;bluespace=6;abductor=4"
var/mode = GIZMO_SCAN
var/mob/living/marked = null
var/obj/machinery/abductor/console/console
/obj/item/device/abductor/gizmo/attack_self(mob/user)
if(!AbductorCheck(user))
return
if(!ScientistCheck(user))
to_chat(user, "<span class='warning'>You're not trained to use this!</span>")
return
if(mode == GIZMO_SCAN)
mode = GIZMO_MARK
icon_state = "gizmo_mark"
else
mode = GIZMO_SCAN
icon_state = "gizmo_scan"
to_chat(user, "<span class='notice'>You switch the device to [mode==GIZMO_SCAN? "SCAN": "MARK"] MODE</span>")
/obj/item/device/abductor/gizmo/attack(mob/living/M, mob/user)
if(!AbductorCheck(user))
return
if(!ScientistCheck(user))
to_chat(user, "<span class='notice'>You're not trained to use this</span>")
return
switch(mode)
if(GIZMO_SCAN)
scan(M, user)
if(GIZMO_MARK)
mark(M, user)
/obj/item/device/abductor/gizmo/afterattack(atom/target, mob/living/user, flag, params)
if(flag)
return
if(!AbductorCheck(user))
return
if(!ScientistCheck(user))
to_chat(user, "<span class='notice'>You're not trained to use this</span>")
return
switch(mode)
if(GIZMO_SCAN)
scan(target, user)
if(GIZMO_MARK)
mark(target, user)
/obj/item/device/abductor/gizmo/proc/scan(atom/target, mob/living/user)
if(istype(target,/mob/living/carbon/human))
if(console!=null)
console.AddSnapshot(target)
to_chat(user, "<span class='notice'>You scan [target] and add them to the database.</span>")
/obj/item/device/abductor/gizmo/proc/mark(atom/target, mob/living/user)
if(marked == target)
to_chat(user, "<span class='warning'>This specimen is already marked!</span>")
return
if(istype(target,/mob/living/carbon/human))
if(IsAbductor(target))
marked = target
to_chat(user, "<span class='notice'>You mark [target] for future retrieval.</span>")
else
prepare(target,user)
else
prepare(target,user)
/obj/item/device/abductor/gizmo/proc/prepare(atom/target, mob/living/user)
if(get_dist(target,user)>1)
to_chat(user, "<span class='warning'>You need to be next to the specimen to prepare it for transport!</span>")
return
to_chat(user, "<span class='notice'>You begin preparing [target] for transport...</span>")
if(do_after(user, 100, target = target))
marked = target
to_chat(user, "<span class='notice'>You finish preparing [target] for transport.</span>")
/obj/item/device/abductor/silencer
name = "abductor silencer"
desc = "A compact device used to shut down communications equipment."
icon = 'icons/obj/abductor.dmi'
icon_state = "silencer"
item_state = "silencer"
origin_tech = "materials=5;magnets=5;abductor=3"
/obj/item/device/abductor/silencer/attack(mob/living/M, mob/user)
if(!AbductorCheck(user))
return
radio_off(M, user)
/obj/item/device/abductor/silencer/afterattack(atom/target, mob/living/user, flag, params)
if(flag)
return
if(!AbductorCheck(user))
return
radio_off(target, user)
/obj/item/device/abductor/silencer/proc/radio_off(atom/target, mob/living/user)
if(!(user in (viewers(7,target))))
return
var/turf/targloc = get_turf(target)
var/mob/living/carbon/human/M
for(M in view(2,targloc))
if(M == user)
continue
to_chat(user, "<span class='notice'>You silence [M]'s radio devices.</span>")
radio_off_mob(M)
/obj/item/device/abductor/silencer/proc/radio_off_mob(mob/living/carbon/human/M)
var/list/all_items = M.GetAllContents()
for(var/obj/I in all_items)
if(istype(I,/obj/item/device/radio/))
var/obj/item/device/radio/r = I
r.listening = 0
if(!istype(I,/obj/item/device/radio/headset))
r.broadcasting = 0 //goddamned headset hacks
/obj/item/weapon/implant/abductor
name = "recall implant"
desc = "Returns you to the mothership."
icon = 'icons/obj/abductor.dmi'
icon_state = "implant"
activated = 1
origin_tech = "materials=2;biotech=3;magnets=4;bluespace=5;abductor=5"
var/obj/machinery/abductor/pad/home
var/cooldown = 30
/obj/item/weapon/implant/abductor/activate()
if(cooldown == initial(cooldown))
home.Retrieve(imp_in,1)
cooldown = 0
processing_objects.Add(src)
else
to_chat(imp_in, "<span class='warning'>You must wait [30 - cooldown] seconds to use [src] again!</span>")
return
/obj/item/weapon/implant/abductor/process()
if(cooldown < initial(cooldown))
cooldown++
if(cooldown == initial(cooldown))
processing_objects.Remove(src)
/obj/item/weapon/implant/abductor/implant(var/mob/source, var/mob/user)
if(..())
var/obj/machinery/abductor/console/console
if(ishuman(source))
var/mob/living/carbon/human/H = source
if(H.get_species() == "Abductor")
console = get_team_console(H.mind.abductor.team)
home = console.pad
if(!home)
console = get_team_console(pick(1, 2, 3, 4))
home = console.pad
return 1
/obj/item/weapon/implant/abductor/proc/get_team_console(var/team)
var/obj/machinery/abductor/console/console
for(var/obj/machinery/abductor/console/c in abductor_equipment)
if(c.team == team)
console = c
break
return console
/obj/item/weapon/gun/energy/decloner/alien
name = "alien pistol"
desc = "A complicated gun that fires bursts of high-intensity radiation."
icon_state = "alienpistol"
item_state = "alienpistol"
origin_tech = "combat=5;materials=4;powerstorage=3;abductor=3"
/obj/item/weapon/gun/energy/decloner/alien/special_check(user)
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(H.get_species() != "Abductor")
to_chat(user, "<span class='userdanger'>UNAUTHORIZED -- UNAUTHORIZED</span>")
return 0
return 1
/obj/item/weapon/paper/abductor
name = "Dissection Guide"
icon_state = "alienpaper_words"
info = {"<b>Dissection for Dummies</b><br>
<br>
1.Acquire fresh specimen.<br>
2.Put the specimen on operating table<br>
3.Apply scalpel to the chest, preparing for dissection<br>
4.Apply scalpel to specimen torso<br>
5.Clamp bleeders on the specimen's torso<br>
6.Retract skin from specimen's torso<br>
7.Saw through the specimen's torso<br>
8.Retract skin from specimen's torso again<br>
9.Search through the specimen's torso with your hands to remove their heart<br>
10.Insert replacement gland (Retrieve one from gland storage)<br>
11.Cauterize the patient's torso<br>
12.Consider dressing the specimen back to not disturb the habitat <br>
13.Put the specimen in the experiment machinery<br>
14.Choose one of the machine options and follow displayed instructions<br>
<br>
Congratulations! You are now trained for xenobiology research!"}
/obj/item/weapon/paper/abductor/update_icon()
return
#define BATON_STUN 0
#define BATON_SLEEP 1
#define BATON_CUFF 2
#define BATON_PROBE 3
#define BATON_MODES 4
/obj/item/weapon/abductor_baton
name = "advanced baton"
desc = "A quad-mode baton used for incapacitation and restraining of specimens."
var/mode = BATON_STUN
icon = 'icons/obj/abductor.dmi'
icon_state = "wonderprodStun"
item_state = "wonderprod"
slot_flags = SLOT_BELT
origin_tech = "materials=6;combat=5;biotech=7;abductor=4"
force = 7
w_class = 3
action_button_name = "Toggle Mode"
/obj/item/weapon/abductor_baton/proc/toggle(mob/living/user=usr)
mode = (mode+1)%BATON_MODES
var/txt
switch(mode)
if(BATON_STUN)
txt = "stunning"
if(BATON_SLEEP)
txt = "sleep inducement"
if(BATON_CUFF)
txt = "restraining"
if(BATON_PROBE)
txt = "probing"
to_chat(usr, "<span class='notice'>You switch the baton to [txt] mode.</span>")
update_icon()
/obj/item/weapon/abductor_baton/update_icon()
switch(mode)
if(BATON_STUN)
icon_state = "wonderprodStun"
item_state = "wonderprodStun"
if(BATON_SLEEP)
icon_state = "wonderprodSleep"
item_state = "wonderprodSleep"
if(BATON_CUFF)
icon_state = "wonderprodCuff"
item_state = "wonderprodCuff"
if(BATON_PROBE)
icon_state = "wonderprodProbe"
item_state = "wonderprodProbe"
/obj/item/weapon/abductor_baton/proc/IsAbductor(mob/living/user)
if(!ishuman(user))
return 0
var/mob/living/carbon/human/H = user
if(H.get_species() != "Abductor")
return 0
return 1
/obj/item/weapon/abductor_baton/attack(mob/target, mob/living/user)
if(!IsAbductor(user))
return
if(isrobot(target))
..()
return
if(!isliving(target))
return
var/mob/living/L = target
user.do_attack_animation(L)
switch (mode)
if(BATON_STUN)
StunAttack(L,user)
if(BATON_SLEEP)
SleepAttack(L,user)
if(BATON_CUFF)
CuffAttack(L,user)
if(BATON_PROBE)
ProbeAttack(L,user)
/obj/item/weapon/abductor_baton/attack_self(mob/living/user)
toggle(user)
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
H.update_inv_l_hand()
H.update_inv_r_hand()
/obj/item/weapon/abductor_baton/proc/StunAttack(mob/living/L,mob/living/user)
user.lastattacked = L
L.lastattacker = user
L.Stun(7)
L.Weaken(7)
L.apply_effect(STUTTER, 7)
L.visible_message("<span class='danger'>[user] has stunned [L] with [src]!</span>", \
"<span class='userdanger'>[user] has stunned you with [src]!</span>")
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
if(ishuman(L))
var/mob/living/carbon/human/H = L
H.forcesay(hit_appends)
add_logs(L, user, "stunned")
return
/obj/item/weapon/abductor_baton/proc/SleepAttack(mob/living/L,mob/living/user)
if(L.stunned)
L.visible_message("<span class='danger'>[user] has induced sleep in [L] with [src]!</span>", \
"<span class='userdanger'>You suddenly feel very drowsy!</span>")
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
L.Sleeping(60)
add_logs(L, user, "put to sleep")
else
L.drowsyness += 1
to_chat(user, "<span class='warning'>Sleep inducement works fully only on stunned specimens! </span>")
L.visible_message("<span class='danger'>[user] tried to induce sleep in [L] with [src]!</span>", \
"<span class='userdanger'>You suddenly feel drowsy!</span>")
return
/obj/item/weapon/abductor_baton/proc/CuffAttack(mob/living/L,mob/living/user)
if(!iscarbon(L))
return
var/mob/living/carbon/C = L
if(!C.handcuffed)
playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2)
C.visible_message("<span class='danger'>[user] begins restraining [C] with [src]!</span>", \
"<span class='userdanger'>[user] begins shaping an energy field around your hands!</span>")
if(do_mob(user, C, 30))
if(!C.handcuffed)
C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/used(C)
C.update_handcuffed()
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
add_logs(C, user, "handcuffed")
else
to_chat(user, "<span class='warning'>You fail to handcuff [C].</span>")
return
/obj/item/weapon/abductor_baton/proc/ProbeAttack(mob/living/L,mob/living/user)
L.visible_message("<span class='danger'>[user] probes [L] with [src]!</span>", \
"<span class='userdanger'>[user] probes you!</span>")
var/species = "<span class='warning'>Unknown species</span>"
var/helptext = "<span class='warning'>Species unsuitable for experiments.</span>"
if(ishuman(L))
var/mob/living/carbon/human/H = L
species = "<span clas=='notice'>[H.species.name]</span>"
if(L.mind && L.mind.changeling)
species = "<span class='warning'>Changeling lifeform</span>"
var/obj/item/organ/internal/gland/temp = locate() in H.internal_organs
if(temp)
helptext = "<span class='warning'>Experimental gland detected!</span>"
else
helptext = "<span class='notice'>Subject suitable for experiments.</span>"
to_chat(user,"<span class='notice'>Probing result: </span>[species]")
to_chat(user, "[helptext]")
/obj/item/weapon/restraints/handcuffs/energy
name = "hard-light energy field"
desc = "A hard-light field restraining the hands."
icon_state = "cuff_white" // Needs sprite
breakouttime = 450
trashtype = /obj/item/weapon/restraints/handcuffs/energy/used
origin_tech = "materials=2;magnets=5;abductor=2"
/obj/item/weapon/restraints/handcuffs/energy/used
desc = "energy discharge"
/obj/item/weapon/restraints/handcuffs/energy/used/dropped(mob/user)
user.visible_message("<span class='danger'>[user]'s [src] break in a discharge of energy!</span>", \
"<span class='userdanger'>[user]'s [src] break in a discharge of energy!</span>")
var/datum/effect/system/spark_spread/S = new
S.set_up(4,0,user.loc)
S.start()
qdel(src)
/obj/item/weapon/abductor_baton/examine(mob/user)
..()
switch(mode)
if(BATON_STUN)
to_chat(user, "<span class='warning'>The baton is in stun mode.</span>")
if(BATON_SLEEP)
to_chat(user, "<span class='warning'>The baton is in sleep inducement mode.</span>")
if(BATON_CUFF)
to_chat(user, "<span class='warning'>The baton is in restraining mode.</span>")
if(BATON_PROBE)
to_chat(user, "<span class='warning'>The baton is in probing mode.</span>")
/obj/item/weapon/scalpel/alien
name = "alien scalpel"
icon = 'icons/obj/abductor.dmi'
origin_tech = "materials=2;biotech=2;abductor=2"
/obj/item/weapon/hemostat/alien
name = "alien hemostat"
icon = 'icons/obj/abductor.dmi'
origin_tech = "materials=2;biotech=2;abductor=2"
/obj/item/weapon/retractor/alien
name = "alien retractor"
icon = 'icons/obj/abductor.dmi'
origin_tech = "materials=2;biotech=2;abductor=2"
/obj/item/weapon/circular_saw/alien
name = "alien saw"
icon = 'icons/obj/abductor.dmi'
origin_tech = "materials=2;biotech=2;abductor=2"
/obj/item/weapon/surgicaldrill/alien
name = "alien drill"
icon = 'icons/obj/abductor.dmi'
origin_tech = "materials=2;biotech=2;abductor=2"
/obj/item/weapon/cautery/alien
name = "alien cautery"
icon = 'icons/obj/abductor.dmi'
origin_tech = "materials=2;biotech=2;abductor=2"
/obj/item/clothing/head/helmet/abductor
name = "agent headgear"
desc = "Abduct with style - spiky style. Prevents digital tracking."
icon_state = "alienhelmet"
item_state = "alienhelmet"
blockTracking = 1
origin_tech = "materials=6;magnets=5;abductor=3"
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
// Operating Table / Beds / Lockers
/obj/machinery/optable/abductor
icon = 'icons/obj/abductor.dmi'
icon_state = "bed"
no_icon_updates = 1 //no icon updates for this; it's static.
/obj/structure/stool/bed/abductor
name = "resting contraption"
desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?"
icon = 'icons/obj/abductor.dmi'
icon_state = "bed"
/obj/structure/abductor_tableframe
name = "alien table frame"
desc = "A sturdy table frame made from alien alloy."
icon_state = "alien_frame"
density = 1
/obj/structure/abductor_tableframe/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/wrench))
to_chat(user, "<span class='notice'>You start disassembling [src]...</span>")
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 30, target = src))
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
new /obj/item/stack/sheet/mineral/abductor(get_turf(src))
qdel(src)
return
if(istype(I, /obj/item/stack/sheet/mineral/abductor))
var/obj/item/stack/sheet/P = I
if(P.get_amount() < 1)
to_chat(user, "<span class='warning'>You need one alien alloy sheet to do this!</span>")
return
to_chat(user, "<span class='notice'>You start adding [P] to [src]...</span>")
if(do_after(user, 50, target = src))
P.use(1)
new /obj/structure/table/abductor(src.loc)
qdel(src)
return
/obj/structure/table/abductor
name = "alien table"
desc = "Advanced flat surface technology at work!"
icon = 'icons/obj/smooth_structures/alien_table.dmi'
icon_state = "alien_table"
canSmoothWith = null
parts = /obj/item/stack/sheet/mineral/abductor
/obj/structure/closet/abductor
name = "alien locker"
desc = "Contains secrets of the universe."
icon_state = "abductor"
icon_closed = "abductor"
icon_opened = "abductoropen"
material_drop = /obj/item/stack/sheet/mineral/abductor
@@ -0,0 +1,62 @@
/datum/surgery/organ_extraction
name = "experimental dissection"
steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/internal/extract_organ, /datum/surgery_step/internal/gland_insert, /datum/surgery_step/generic/cauterize)
possible_locs = list("chest")
/datum/surgery/organ_extraction/can_start(mob/user, mob/living/carbon/target)
if(!ishuman(user))
return 0
if(target.get_species() == "Machine") //Maybe add in a machine version, later?
return 0
var/mob/living/carbon/human/H = user
if(H.get_species() == "Abductor")
return 1
if((locate(/obj/item/weapon/implant/abductor) in H))
return 1
return 0
/datum/surgery_step/internal/extract_organ
name = "remove heart"
accept_hand = 1
time = 32
var/obj/item/organ/internal/IC = null
var/list/organ_types = list(/obj/item/organ/internal/heart)
/datum/surgery_step/internal/extract_organ/begin_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
for(var/obj/item/I in target.internal_organs)
if(I.type in organ_types)
IC = I
break
user.visible_message("[user] starts to remove [target]'s organs.", "<span class='notice'>You start to remove [target]'s organs...</span>")
..()
/datum/surgery_step/internal/extract_organ/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/mob/living/carbon/human/AB = target
if(AB.species.flags & NO_INTORGANS)
user.visible_message("[user] prepares [target]'s [target_zone] for further dissection!", "<span class='notice'>You prepare [target]'s [target_zone] for further dissection.</span>")
return 1
if(IC)
user.visible_message("[user] pulls [IC] out of [target]'s [target_zone]!", "<span class='notice'>You pull [IC] out of [target]'s [target_zone].</span>")
user.put_in_hands(IC)
IC.remove(target, special = 1)
return 1
else
to_chat(user, "<span class='warning'>You don't find anything in [target]'s [target_zone]!</span>")
return 0
/datum/surgery_step/internal/gland_insert
name = "insert gland"
allowed_tools = list(/obj/item/organ/internal/gland = 100)
time = 32
/datum/surgery_step/internal/gland_insert/begin_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] starts to insert [tool] into [target].", "<span class ='notice'>You start to insert [tool] into [target]...</span>")
..()
/datum/surgery_step/internal/gland_insert/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] inserts [tool] into [target].", "<span class ='notice'>You insert [tool] into [target].</span>")
user.drop_item()
var/obj/item/organ/internal/gland/gland = tool
gland.insert(target, 2)
return 1
@@ -0,0 +1,280 @@
/obj/item/organ/internal/gland
name = "fleshy mass"
desc = "A nausea-inducing hunk of twisting flesh and metal."
icon = 'icons/obj/abductor.dmi'
parent_organ = "chest"
slot = "gland"
icon_state = "gland"
status = ORGAN_ROBOT
origin_tech = "materials=4;biotech=5;abductor=3"
var/cooldown_low = 300
var/cooldown_high = 300
var/next_activation = 0
var/uses // -1 For inifinite
var/human_only = 0
var/active = 0
tough = 1 //not easily broken by combat damage
sterile = 1 //not very germy
/obj/item/organ/internal/gland/proc/ownerCheck()
if(ishuman(owner))
return 1
if(!human_only && iscarbon(owner))
return 1
return 0
/obj/item/organ/internal/gland/proc/Start()
active = 1
next_activation = world.time + rand(cooldown_low,cooldown_high)
/obj/item/organ/internal/gland/remove(var/mob/living/carbon/M, special = 0)
active = 0
if(initial(uses) == 1)
uses = initial(uses)
..()
/obj/item/organ/internal/gland/insert(var/mob/living/carbon/M, special = 0)
..()
if(special != 2 && uses) // Special 2 means abductor surgery
Start()
/obj/item/organ/internal/gland/on_life()
if(!active)
return
if(!ownerCheck())
active = 0
return
if(next_activation <= world.time)
activate()
uses--
next_activation = world.time + rand(cooldown_low,cooldown_high)
if(!uses)
active = 0
/obj/item/organ/internal/gland/proc/activate()
return
/obj/item/organ/internal/gland/heals
origin_tech = "materials=4;biotech=6;abductor=3"
cooldown_low = 200
cooldown_high = 400
uses = -1
icon_state = "health"
/obj/item/organ/internal/gland/heals/activate()
to_chat(owner, "<span class='notice'>You feel curiously revitalized.</span>")
owner.adjustBruteLoss(-20)
owner.adjustOxyLoss(-20)
owner.adjustFireLoss(-20)
/obj/item/organ/internal/gland/slime
origin_tech = "materials=4;biotech=6;abductor=3"
cooldown_low = 600
cooldown_high = 1200
uses = -1
icon_state = "slime"
/obj/item/organ/internal/gland/slime/activate()
to_chat(owner, "<span class='warning'>You feel nauseous!</span>")
owner.vomit(20)
var/mob/living/carbon/slime/Slime = new/mob/living/carbon/slime(get_turf(owner))
Slime.Friends = list(owner)
Slime.Leader = owner
/obj/item/organ/internal/gland/mindshock
origin_tech = "materials=4;biotech=5;magnets=3;abductor=3"
cooldown_low = 300
cooldown_high = 300
uses = -1
icon_state = "mindshock"
/obj/item/organ/internal/gland/mindshock/activate()
to_chat(owner, "<span class='notice'>You get a headache.</span>")
var/turf/T = get_turf(owner)
for(var/mob/living/carbon/H in orange(4,T))
if(H == owner)
continue
to_chat(H, "<span class='alien'>You hear a buzz in your head.</span>")
H.confused += 20
/obj/item/organ/internal/gland/pop
origin_tech = "materials=4;biotech=6;abductor=3"
cooldown_low = 900
cooldown_high = 1800
uses = 6
human_only = 1
icon_state = "species"
/obj/item/organ/internal/gland/pop/activate()
to_chat(owner, "<span class='notice'>You feel unlike yourself.</span>")
var/species = pick("Unathi","Skrell","Diona","Tajaran","Vulpkanin","Kidan","Grey","Diona")
owner.set_species(species)
/obj/item/organ/internal/gland/ventcrawling
origin_tech = "materials=4;biotech=5;bluespace=3;abductor=3"
cooldown_low = 1800
cooldown_high = 2400
uses = 1
icon_state = "vent"
/obj/item/organ/internal/gland/ventcrawling/activate()
to_chat(owner, "<span class='notice'>You feel very stretchy.</span>")
owner.ventcrawler = 2
return
/obj/item/organ/internal/gland/viral
origin_tech = "materials=4;biotech=6;abductor=3"
cooldown_low = 1800
cooldown_high = 2400
uses = 1
icon_state = "viral"
/obj/item/organ/internal/gland/viral/activate()
to_chat(owner, "<span class='warning'>You feel sick.</span>")
var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/magnitis)
var/datum/disease/D = new virus_type()
D.carrier = 1
owner.viruses += D
D.affected_mob = owner
D.holder = owner
owner.med_hud_set_status()
/obj/item/organ/internal/gland/emp //TODO : Replace with something more interesting
origin_tech = "materials=4;biotech=5;magnets=3;abductor=3"
cooldown_low = 900
cooldown_high = 1600
uses = 10
icon_state = "emp"
/obj/item/organ/internal/gland/emp/activate()
to_chat(owner, "<span class='warning'>You feel a spike of pain in your head.</span>")
empulse(get_turf(owner), 2, 5, 1)
/obj/item/organ/internal/gland/spiderman
origin_tech = "materials=4;biotech=6;abductor=3"
cooldown_low = 450
cooldown_high = 900
uses = 10
icon_state = "spider"
/obj/item/organ/internal/gland/spiderman/activate()
to_chat(owner, "<span class='warning'>You feel something crawling in your skin.</span>")
owner.faction |= "spiders"
new /obj/effect/spider/spiderling(owner.loc)
/obj/item/organ/internal/gland/egg
origin_tech = "materials=4;biotech=6;abductor=3"
cooldown_low = 300
cooldown_high = 400
uses = -1
icon_state = "egg"
/obj/item/organ/internal/gland/egg/activate()
to_chat(owner, "<span class='boldannounce'>You lay an egg!</span>")
var/obj/item/weapon/reagent_containers/food/snacks/egg/egg = new(owner.loc)
egg.reagents.add_reagent("sacid",20)
egg.desc += " It smells bad."
/obj/item/organ/internal/gland/bloody
origin_tech = "materials=4;biotech=6;abductor=3"
cooldown_low = 200
cooldown_high = 400
uses = -1
/obj/item/organ/internal/gland/bloody/activate()
owner.adjustBruteLoss(15)
owner.visible_message("<span class='danger'>[owner]'s skin erupts with blood!</span>",\
"<span class='userdanger'>Blood pours from your skin!</span>")
for(var/turf/T in oview(3,owner)) //Make this respect walls and such
T.add_blood_floor(owner)
for(var/mob/living/carbon/human/H in oview(3,owner)) //Blood decals for simple animals would be neat. aka Carp with blood on it.
if(H.wear_suit)
H.wear_suit.add_blood(owner)
H.update_inv_wear_suit(0)
else if(H.w_uniform)
H.w_uniform.add_blood(owner)
H.update_inv_w_uniform(0)
/obj/item/organ/internal/gland/bodysnatch
origin_tech = "materials=4;biotech=7;abductor=3"
cooldown_low = 600
cooldown_high = 600
human_only = 1
uses = 1
/obj/item/organ/internal/gland/bodysnatch/activate()
to_chat(owner, "<span class='warning'>You feel something moving around inside you...</span>")
//spawn cocoon with clone greytide snpc inside
if(ishuman(owner))
var/obj/effect/cocoon/abductor/C = new (get_turf(owner))
C.Copy(owner)
C.Start()
owner.gib()
return
/obj/effect/cocoon/abductor
name = "slimy cocoon"
desc = "Something is moving inside."
icon = 'icons/effects/effects.dmi'
icon_state = "cocoon_large3"
color = rgb(10,120,10)
density = 1
var/hatch_time = 0
/obj/effect/cocoon/abductor/proc/Copy(mob/living/carbon/human/H)
var/mob/living/carbon/human/interactive/greytide/clone = new(src)
var/datum/dna/owner_dna = H.dna
clone.rename_character(clone.name, owner_dna.real_name)
clone.body_accessory = H.body_accessory
clone.dna = owner_dna.Clone()
clone.set_species(H.species.name)
domutcheck(clone)
//There's no define for this / get all items ?
var/list/slots = list(slot_back,slot_w_uniform,slot_wear_suit,\
slot_wear_mask,slot_head,slot_shoes,slot_gloves,slot_l_ear,slot_r_ear,\
slot_glasses,slot_belt,slot_s_store,slot_l_store,slot_r_store,slot_wear_id,slot_wear_pda)
for(var/slot in slots)
var/obj/item/I = H.get_item_by_slot(slot)
if(I)
clone.equip_to_slot_if_possible(I,slot)
/obj/effect/cocoon/abductor/proc/Start()
hatch_time = world.time + 600
processing_objects.Add(src)
/obj/effect/cocoon/abductor/process()
if(world.time > hatch_time)
processing_objects.Remove(src)
for(var/mob/M in contents)
src.visible_message("<span class='warning'>[src] hatches!</span>")
M.forceMove(get_turf(src))
qdel(src)
/obj/item/organ/internal/gland/plasma
cooldown_low = 2400
cooldown_high = 3000
origin_tech = "materials=4;biotech=5;plasmatech=3;abductor=3"
uses = 1
/obj/item/organ/internal/gland/plasma/activate()
to_chat(owner, "<span class='warning'>You feel bloated.</span>")
sleep(150)
if(!owner) return
to_chat(owner, "<span class='userdanger'>A massive stomachache overcomes you.</span>")
sleep(50)
if(!owner) return
owner.visible_message("<span class='danger'>[owner] explodes in a cloud of plasma!</span>")
var/turf/simulated/T = get_turf(owner)
if(istype(T))
T.atmos_spawn_air(SPAWN_TOXINS|SPAWN_20C,300)
owner.gib()
return
@@ -0,0 +1,165 @@
/obj/machinery/computer/camera_advanced/abductor
name = "Human Observation Console"
var/team = 0
networks = list("SS13","Abductor")
off_action = new/datum/action/camera_off/abductor //specific datum
var/datum/action/teleport_in/tele_in_action = new
var/datum/action/teleport_out/tele_out_action = new
var/datum/action/teleport_self/tele_self_action = new
var/datum/action/vest_mode_swap/vest_mode_action = new
var/datum/action/vest_disguise_swap/vest_disguise_action = new
var/datum/action/set_droppoint/set_droppoint_action = new
var/obj/machinery/abductor/console/console
icon = 'icons/obj/abductor.dmi'
icon_state = "camera"
/obj/machinery/computer/camera_advanced/abductor/CreateEye()
..()
eyeobj.visible_icon = 1
eyeobj.icon = 'icons/obj/abductor.dmi'
eyeobj.icon_state = "camera_target"
/obj/machinery/computer/camera_advanced/abductor/GrantActions(mob/living/carbon/user)
off_action.target = user
off_action.Grant(user)
jump_action.target = user
jump_action.Grant(user)
//TODO : add null checks
tele_in_action.target = console.pad
tele_in_action.Grant(user)
tele_out_action.target = console
tele_out_action.Grant(user)
tele_self_action.target = console.pad
tele_self_action.Grant(user)
vest_mode_action.target = console
vest_mode_action.Grant(user)
vest_disguise_action.target = console
vest_disguise_action.Grant(user)
set_droppoint_action.target = console
set_droppoint_action.Grant(user)
/obj/machinery/computer/camera_advanced/abductor/proc/IsAbductor(mob/living/carbon/human/H)
return H.get_species() == "Abductor"
/obj/machinery/computer/camera_advanced/abductor/proc/IsScientist(mob/living/carbon/human/H)
if(H.mind && H.mind.abductor)
return H.mind.abductor.scientist
/obj/machinery/computer/camera_advanced/abductor/attack_hand(mob/user)
if(!iscarbon(user) || !IsAbductor(user))
return
return ..()
/datum/action/camera_off/abductor/Activate()
if(!target || !iscarbon(target))
return
var/mob/living/carbon/C = target
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/abductor/origin = remote_eye.origin
C.remote_view = 0
origin.current_user = null
origin.jump_action.Remove(C)
origin.tele_in_action.Remove(C)
origin.tele_out_action.Remove(C)
origin.tele_self_action.Remove(C)
origin.vest_mode_action.Remove(C)
origin.vest_disguise_action.Remove(C)
origin.set_droppoint_action.Remove(C)
remote_eye.user = null
if(C.client)
C.client.perspective = MOB_PERSPECTIVE
C.client.eye = src
C.client.images -= remote_eye.user_image
for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks)
C.client.images -= chunk.obscured
C.remote_control = null
C.unset_machine()
src.Remove(C)
/datum/action/teleport_in
name = "Send To"
button_icon_state = "beam_down"
action_type = AB_INNATE
/datum/action/teleport_in/Activate()
if(!target || !iscarbon(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
var/obj/machinery/abductor/pad/P = target
if(cameranet.checkTurfVis(remote_eye.loc))
P.PadToLoc(remote_eye.loc)
/datum/action/teleport_out
name = "Retrieve"
button_icon_state = "beam_up"
action_type = AB_INNATE
/datum/action/teleport_out/Activate()
if(!target || !iscarbon(owner))
return
var/obj/machinery/abductor/console/console = target
console.TeleporterRetrieve()
/datum/action/teleport_self
name = "Send Self"
button_icon_state = "beam_down"
action_type = AB_INNATE
/datum/action/teleport_self/Activate()
if(!target || !iscarbon(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
var/obj/machinery/abductor/pad/P = target
if(cameranet.checkTurfVis(remote_eye.loc))
P.MobToLoc(remote_eye.loc,C)
/datum/action/vest_mode_swap
name = "Switch Vest Mode"
button_icon_state = "vest_mode"
action_type = AB_INNATE
/datum/action/vest_mode_swap/Activate()
if(!target || !iscarbon(owner))
return
var/obj/machinery/abductor/console/console = target
console.FlipVest()
/datum/action/vest_disguise_swap
name = "Switch Vest Disguise"
button_icon_state = "vest_disguise"
action_type = AB_INNATE
/datum/action/vest_disguise_swap/Activate()
if(!target || !iscarbon(owner))
return
var/obj/machinery/abductor/console/console = target
console.SelectDisguise(remote=1)
/datum/action/set_droppoint
name = "Set Experiment Release Point"
button_icon_state = "set_drop"
action_type = AB_INNATE
/datum/action/set_droppoint/Activate()
if(!target || !iscarbon(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
var/obj/machinery/abductor/console/console = target
console.SetDroppoint(remote_eye.loc,owner)
@@ -0,0 +1,223 @@
//Common
/obj/machinery/abductor
var/team = 0
/obj/machinery/abductor/New()
abductor_equipment.Add(src)
..()
/obj/machinery/abductor/Destroy()
abductor_equipment.Remove(src)
return ..()
/obj/machinery/abductor/proc/IsAbductor(mob/living/carbon/human/H)
return H.get_species() == "Abductor"
/obj/machinery/abductor/proc/IsAgent(mob/living/carbon/human/H)
if(H.get_species() == "Abductor")
if(H.mind && H.mind.abductor)
return H.mind.abductor.agent
return 0
/obj/machinery/abductor/proc/IsScientist(mob/living/carbon/human/H)
if(H.get_species() == "Abductor")
if(H.mind && H.mind.abductor)
return H.mind.abductor.scientist
return 0
//Console
/obj/machinery/abductor/console
name = "Abductor console"
desc = "Ship command center."
icon = 'icons/obj/abductor.dmi'
icon_state = "console"
density = 1
anchored = 1
var/obj/item/device/abductor/gizmo/gizmo
var/obj/item/clothing/suit/armor/abductor/vest/vest
var/obj/machinery/abductor/experiment/experiment
var/obj/machinery/abductor/pad/pad
var/obj/machinery/computer/camera_advanced/abductor/camera
var/list/datum/icon_snapshot/disguises = list()
/obj/machinery/abductor/console/initialize()
..()
Link_Abduction_Equipment()
/obj/machinery/abductor/console/attack_hand(mob/user)
if(..())
return
if(!IsAbductor(user))
to_chat(user, "<span class='warning'>You start mashing alien buttons at random!</span>")
if(do_after(user,100, target = src))
TeleporterSend()
return
user.set_machine(src)
var/dat = ""
dat += "<H3> Abductsoft 3000 </H3>"
if(experiment != null)
var/points = experiment.points
dat += "Collected Samples : [points] <br>"
dat += "<b>Transfer data in exchange for supplies:</b><br>"
dat += "<a href='?src=\ref[src];dispense=baton'>Advanced Baton</A><br>"
dat += "<a href='?src=\ref[src];dispense=helmet'>Agent Helmet</A><br>"
dat += "<a href='?src=\ref[src];dispense=silencer'>Radio Silencer</A><br>"
dat += "<a href='?src=\ref[src];dispense=tool'>Science Tool</A><br>"
else
dat += "<span class='bad'>NO EXPERIMENT MACHINE DETECTED</span> <br>"
if(pad!=null)
dat += "<span class='bad'>Emergency Teleporter System.</span>"
dat += "<span class='bad'>Consider using primary observation console first.</span>"
dat += "<a href='?src=\ref[src];teleporter_send=1'>Activate Teleporter</A><br>"
if(gizmo!=null && gizmo.marked!=null)
dat += "<a href='?src=\ref[src];teleporter_retrieve=1'>Retrieve Mark</A><br>"
else
dat += "<span class='linkOff'>Retrieve Mark</span><br>"
else
dat += "<span class='bad'>NO TELEPAD DETECTED</span></br>"
if(vest!=null)
dat += "<h4> Agent Vest Mode </h4><br>"
var/mode = vest.mode
if(mode == VEST_STEALTH)
dat += "<a href='?src=\ref[src];flip_vest=1'>Combat</A>"
dat += "<span class='linkOff'>Stealth</span>"
else
dat += "<span class='linkOff'>Combat</span>"
dat += "<a href='?src=\ref[src];flip_vest=1'>Stealth</A>"
dat+="<br>"
dat += "<a href='?src=\ref[src];select_disguise=1'>Select Agent Vest Disguise</a><br>"
else
dat += "<span class='bad'>NO AGENT VEST DETECTED</span>"
var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
return
/obj/machinery/abductor/console/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
if(href_list["teleporter_send"])
TeleporterSend()
else if(href_list["teleporter_retrieve"])
TeleporterRetrieve()
else if(href_list["flip_vest"])
FlipVest()
else if(href_list["select_disguise"])
SelectDisguise()
else if(href_list["dispense"])
switch(href_list["dispense"])
if("baton")
Dispense(/obj/item/weapon/abductor_baton,cost=2)
if("helmet")
Dispense(/obj/item/clothing/head/helmet/abductor)
if("silencer")
Dispense(/obj/item/device/abductor/silencer)
if("tool")
Dispense(/obj/item/device/abductor/gizmo)
src.updateUsrDialog()
/obj/machinery/abductor/console/proc/TeleporterRetrieve()
if(gizmo!=null && pad!=null && gizmo.marked)
pad.Retrieve(gizmo.marked)
return
/obj/machinery/abductor/console/proc/TeleporterSend()
if(pad!=null)
pad.Send()
return
/obj/machinery/abductor/console/proc/FlipVest()
if(vest!=null)
vest.flip_mode()
return
/obj/machinery/abductor/console/proc/SelectDisguise(remote=0)
var/list/entries = list()
var/tempname
var/datum/icon_snapshot/temp
for(var/i = 1; i <= disguises.len; i++)
temp = disguises[i]
tempname = temp.name
entries["[tempname]"] = disguises[i]
var/entry_name = input( "Choose Disguise", "Disguise") in entries
var/datum/icon_snapshot/chosen = entries[entry_name]
if(chosen && (remote || in_range(usr,src)))
vest.SetDisguise(chosen)
return
/obj/machinery/abductor/console/proc/SetDroppoint(turf/location,user)
if(!istype(location))
to_chat(user, "<span class='warning'>That place is not safe for the specimen.</span>")
return
if(pad)
pad.teleport_target = location
to_chat(user, "<span class='notice'>Location marked as test subject release point.</span>")
/obj/machinery/abductor/console/proc/Link_Abduction_Equipment() // these must all be explicitly `in machines` or they will not properly link.
for(var/obj/machinery/abductor/pad/p in machines)
if(p.team == team)
pad = p
break
for(var/obj/machinery/abductor/experiment/e in machines)
if(e.team == team)
experiment = e
e.console = src
for(var/obj/machinery/computer/camera_advanced/abductor/c in machines)
if(c.team == team)
camera = c
c.console = src
/obj/machinery/abductor/console/proc/AddSnapshot(mob/living/carbon/human/target)
var/datum/icon_snapshot/entry = new
entry.name = target.name
entry.icon = target.icon
entry.icon_state = target.icon_state
entry.overlays = target.get_overlays_copy(list(L_HAND_LAYER,R_HAND_LAYER))
for(var/i=1,i<=disguises.len,i++)
var/datum/icon_snapshot/temp = disguises[i]
if(temp.name == entry.name)
disguises[i] = entry
return
disguises.Add(entry)
return
/obj/machinery/abductor/console/attackby(obj/O, mob/user, params)
if(istype(O, /obj/item/device/abductor/gizmo))
var/obj/item/device/abductor/gizmo/G = O
to_chat(user, "<span class='notice'>You link the tool to the console.</span>")
gizmo = G
G.console = src
else if(istype(O, /obj/item/clothing/suit/armor/abductor/vest))
var/obj/item/clothing/suit/armor/abductor/vest/V = O
to_chat(user, "<span class='notice'>You link the vest to the console.</span>")
vest = V
else
..()
/obj/machinery/abductor/console/proc/Dispense(item,cost=1)
if(experiment && experiment.points >= cost)
experiment.points-=cost
atom_say("Incoming supply!")
if(pad)
flick("alien-pad", pad)
new item(pad.loc)
else
new item(src.loc)
else
atom_say("Insufficent data!")
return
@@ -0,0 +1,83 @@
/obj/machinery/abductor/gland_dispenser
name = "Replacement Organ Storage"
desc = "A tank filled with replacement organs"
icon = 'icons/obj/abductor.dmi'
icon_state = "dispenser"
density = 1
anchored = 1
var/list/gland_types
var/list/gland_colors
var/list/amounts
/obj/machinery/abductor/gland_dispenser/proc/random_color()
//TODO : replace with presets or spectrum
return rgb(rand(0,255),rand(0,255),rand(0,255))
/obj/machinery/abductor/gland_dispenser/New()
gland_types = subtypesof(/obj/item/organ/internal/gland)
gland_types = shuffle(gland_types)
gland_colors = new/list(gland_types.len)
amounts = new/list(gland_types.len)
for(var/i=1,i<=gland_types.len,i++)
gland_colors[i] = random_color()
amounts[i] = rand(1,5)
/obj/machinery/abductor/gland_dispenser/attack_hand(mob/user)
if(..())
return
if(!IsAbductor(user))
return
user.set_machine(src)
var/box_css = {"
<style>
a.box.gland {
float: left;
width: 20px;
height: 20px;
margin: 5px;
border-width: 1px;
border-style: solid;
border-color: rgba(0,0,0,.2);
text-align: center;
}
</style>"}
var/dat = ""
var/item_count = 0
for(var/i=1,i<=gland_colors.len,i++)
item_count++
var/g_color = gland_colors[i]
var/amount = amounts[i]
dat += "<a class='box gland' style='background-color:[g_color]' href='?src=\ref[src];dispense=[i]'>[amount]</a>"
if(item_count == 3) // Three boxes per line
dat +="</br></br>"
item_count = 0
var/datum/browser/popup = new(user, "glands", "Gland Dispenser", 200, 200)
popup.add_head_content(box_css)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
return
/obj/machinery/abductor/gland_dispenser/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/organ/internal/gland))
if(!user.drop_item())
return
W.forceMove(src)
for(var/i=1,i<=gland_colors.len,i++)
if(gland_types[i] == W.type)
amounts[i]++
/obj/machinery/abductor/gland_dispenser/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
if(href_list["dispense"])
Dispense(text2num(href_list["dispense"]))
src.updateUsrDialog()
/obj/machinery/abductor/gland_dispenser/proc/Dispense(count)
if(amounts[count]>0)
amounts[count]--
var/T = gland_types[count]
new T(get_turf(src))
@@ -0,0 +1,195 @@
/obj/machinery/abductor/experiment
name = "experimentation machine"
desc = "A large man-sized tube sporting a complex array of surgical apparatus."
icon = 'icons/obj/abductor.dmi'
icon_state = "experiment-open"
anchored = 1
density = 1
var/points = 0
var/list/history = list()
var/list/abductee_minds = list()
var/flash = " - || - "
var/obj/machinery/abductor/console/console
var/mob/living/carbon/human/occupant
/obj/machinery/abductor/experiment/Destroy()
eject_abductee()
return ..()
/obj/machinery/abductor/experiment/MouseDrop_T(mob/living/carbon/human/target, mob/user)
if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target))
return
if(IsAbductor(target))
return
if(occupant)
to_chat(user, "<span class='notice'>\The [src] is already occupied.</span>")
return //occupied
if(target.buckled)
return
for(var/mob/living/carbon/slime/M in range(1, target))
if(M.Victim == target)
to_chat(user, "<span class='danger'>[target] has a slime attached to them, deal with that first.</span>")
return
visible_message("[user] puts [target] into the [src].")
target.forceMove(src)
occupant = target
icon_state = "experiment"
add_fingerprint(user)
/obj/machinery/abductor/experiment/attack_hand(mob/user)
if(..())
return
experimentUI(user)
/obj/machinery/abductor/experiment/proc/experimentUI(mob/user)
var/dat
dat += "<h3> Experiment </h3>"
if(occupant)
dat += "<table><tr><td>"
dat += "</td><td>"
dat += "<a href='?src=\ref[src];experiment=1'>Probe</a><br>"
dat += "<a href='?src=\ref[src];experiment=2'>Dissect</a><br>"
dat += "<a href='?src=\ref[src];experiment=3'>Analyze</a><br>"
dat += "</td></tr></table>"
else
dat += "<span class='linkOff'>Experiment </span>"
if(!occupant)
dat += "<h3>Machine Unoccupied</h3>"
else
dat += "<h3>Subject Status : </h3>"
dat += "[occupant.name] => "
switch(occupant.stat)
if(0)
dat += "<span class='good'>Conscious</span>"
if(1)
dat += "<span class='average'>Unconscious</span>"
else
dat += "<span class='bad'>Deceased</span>"
dat += "<br>"
dat += "[flash]"
dat += "<br>"
dat += "<a href='?src=\ref[src];refresh=1'>Scan</a>"
dat += "<a href='?src=\ref[src];[occupant ? "eject=1'>Eject Occupant</a>" : "unoccupied=1'>Unoccupied</a>"]"
var/datum/browser/popup = new(user, "experiment", "Probing Console", 300, 300)
popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.set_content(dat)
popup.open()
/obj/machinery/abductor/experiment/Topic(href, href_list)
if(..() || usr == occupant)
return
usr.set_machine(src)
if(href_list["refresh"])
updateUsrDialog()
return
if(href_list["eject"])
eject_abductee()
return
if(occupant && occupant.stat != DEAD)
if(href_list["experiment"])
flash = Experiment(occupant,href_list["experiment"])
updateUsrDialog()
add_fingerprint(usr)
/obj/machinery/abductor/experiment/proc/Experiment(mob/occupant,type)
var/mob/living/carbon/human/H = occupant
var/point_reward = 0
if(H in history)
return "<span class='bad'>Specimen already in database.</span>"
if(H.stat == DEAD)
atom_say("Specimen deceased - please provide fresh sample.")
return "<span class='bad'>Specimen deceased.</span>"
var/obj/item/organ/internal/gland/GlandTest = locate() in H.internal_organs
if(!GlandTest)
atom_say("Experimental dissection not detected!")
return "<span class='bad'>No glands detected!</span>"
if(H.mind != null && H.ckey != null)
history += H
abductee_minds += H.mind
atom_say("Processing specimen...")
sleep(5)
switch(text2num(type))
if(1)
to_chat(H, "<span class='warning'>You feel violated.</span>")
if(2)
to_chat(H, "<span class='warning'>You feel yourself being sliced apart and put back together.</span>")
if(3)
to_chat(H, "<span class='warning'>You feel intensely watched.</span>")
sleep(5)
to_chat(H, "<span class='warning'><b>Your mind snaps!</b></span>")
var/objtype = pick(subtypesof(/datum/objective/abductee/))
var/datum/objective/abductee/O = new objtype()
ticker.mode.abductees += H.mind
H.mind.objectives += O
var/obj_count = 1
to_chat(H, "<span class='notice'>Your current objectives:</span>")
for(var/datum/objective/objective in H.mind.objectives)
to_chat(H, "<B>Objective #[obj_count]</B>: [objective.explanation_text]")
obj_count++
ticker.mode.update_abductor_icons_added(H.mind)
for(var/obj/item/organ/internal/gland/G in H.internal_organs)
G.Start()
point_reward++
if(point_reward > 0)
eject_abductee()
SendBack(H)
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
points += point_reward
return "<span class='good'>Experiment successful! [point_reward] new data-points collected.</span>"
else
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 1)
return "<span class='bad'>Experiment failed! No replacement organ detected.</span>"
else
atom_say("Brain activity nonexistant - disposing sample...")
eject_abductee()
SendBack(H)
return "<span class='bad'>Specimen braindead - disposed.</span>"
return "<span class='bad'>ERROR</span>"
/obj/machinery/abductor/experiment/proc/SendBack(mob/living/carbon/human/H)
H.Sleeping(8)
if(console && console.pad && console.pad.teleport_target)
H.forceMove(console.pad.teleport_target)
H.uncuff()
return
//Area not chosen / It's not safe area - teleport to arrivals
H.forceMove(pick(latejoin))
H.uncuff()
return
/obj/machinery/abductor/experiment/attackby(obj/item/weapon/G, mob/user)
if(istype(G, /obj/item/weapon/grab))
var/obj/item/weapon/grab/grabbed = G
if(!ishuman(grabbed.affecting))
return
if(IsAbductor(grabbed.affecting))
return
if(occupant)
to_chat(user, "<span class='notice'>The [src] is already occupied!</span>")
return
for(var/mob/living/carbon/slime/S in range(1, grabbed.affecting))
if(S.Victim == grabbed.affecting)
to_chat(user, "<span class='danger'>[grabbed.affecting] has a slime attached to them, deal with that first.</span>")
return
visible_message("[user] puts [grabbed.affecting] into the [src].")
var/mob/living/carbon/human/H = grabbed.affecting
H.forceMove(src)
occupant = H
icon_state = "experiment"
add_fingerprint(user)
qdel(G)
/obj/machinery/abductor/experiment/proc/eject_abductee()
if(!occupant)
return
if(occupant.client)
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
occupant.forceMove(get_turf(src))
occupant = null
icon_state = "experiment-open"
@@ -0,0 +1,54 @@
/obj/machinery/abductor/pad
name = "Alien Telepad"
desc = "Use this to transport to and from human habitat"
icon = 'icons/obj/abductor.dmi'
icon_state = "alien-pad-idle"
anchored = 1
var/turf/teleport_target
/obj/machinery/abductor/pad/proc/Warp(mob/living/target)
target.Move(src.loc)
/obj/machinery/abductor/pad/proc/Send()
if(teleport_target == null)
teleport_target = teleportlocs[pick(teleportlocs)]
flick("alien-pad", src)
for(var/mob/living/target in loc)
target.forceMove(teleport_target)
spawn(0)
anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
/obj/machinery/abductor/pad/proc/Retrieve(mob/living/target)
flick("alien-pad", src)
spawn(0)
anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
Warp(target)
/obj/machinery/abductor/pad/proc/MobToLoc(place,mob/living/target)
new/obj/effect/overlay/temp/teleport_abductor(place)
sleep(80)
flick("alien-pad", src)
target.forceMove(place)
anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
/obj/machinery/abductor/pad/proc/PadToLoc(place)
new/obj/effect/overlay/temp/teleport_abductor(place)
sleep(80)
flick("alien-pad", src)
for(var/mob/living/target in src.loc)
target.forceMove(place)
spawn(0)
anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
/obj/effect/overlay/temp/teleport_abductor
name = "Huh"
icon = 'icons/obj/abductor.dmi'
icon_state = "teleport"
duration = 80
/obj/effect/overlay/temp/teleport_abductor/New()
var/datum/effect/system/spark_spread/S = new
S.set_up(10,0,loc)
S.start()
..()
@@ -36,6 +36,27 @@
/mob/living/captive_brain/emote(var/message)
return
/mob/living/captive_brain/resist_borer()
var/mob/living/simple_animal/borer/B = loc
to_chat(src, "<span class='danger'>You begin doggedly resisting the parasite's control (this will take approximately sixty seconds).</span>")
to_chat(B.host, "<span class='danger'>You feel the captive mind of [src] begin to resist your control.</span>")
spawn(rand(350,450) + B.host.brainloss)
if(!B || !B.controlling)
return
B.host.adjustBrainLoss(rand(5,10))
to_chat(src, "<span class='danger'>With an immense exertion of will, you regain control of your body!</span>")
to_chat(B.host, "<span class='danger'>You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you.</span>")
B.detatch()
verbs -= /mob/living/carbon/proc/release_control
verbs -= /mob/living/carbon/proc/punish_host
verbs -= /mob/living/carbon/proc/spawn_larvae
/mob/living/simple_animal/borer
name = "cortical borer"
real_name = "cortical borer"
@@ -6,7 +6,7 @@
icon_state = "swarmer_unactivated"
/obj/item/unactivated_swarmer/New()
notify_ghosts("An unactivated swarmer has been created in [get_area(src)]! <a href=?src=\ref[src];ghostjoin=1>(Click to enter)</a>")
notify_ghosts("An unactivated swarmer has been created in [get_area(src)]!", enter_link = "<a href=?src=\ref[src];ghostjoin=1>(Click to enter)</a>", source = src, attack_not_jump = 1)
..()
/obj/item/unactivated_swarmer/Topic(href, href_list)
@@ -29,6 +29,8 @@
var/summoned = FALSE
var/cooldown = 0
var/damage_transfer = 1 //how much damage from each attack we transfer to the owner
var/light_on = 0
var/luminosity_on = 3
var/mob/living/summoner
var/range = 10 //how far from the user the spirit can be
var/playstyle_string = "You are a standard Guardian. You shouldn't exist!"
@@ -202,13 +204,13 @@
/mob/living/simple_animal/hostile/guardian/proc/ToggleLight()
if(!luminosity)
set_light(3)
if(!light_on)
set_light(luminosity_on)
to_chat(src, "<span class='notice'>You activate your light.</span>")
else
set_light(0)
to_chat(src, "<span class='notice'>You deactivate your light.</span>")
light_on = !light_on
//////////////////////////TYPES OF GUARDIANS
+9 -1
View File
@@ -6,4 +6,12 @@
vampire_blood_display.screen_loc = "WEST:6,CENTER-1:15"
vampire_blood_display.layer = 20
mymob.client.screen += list(vampire_blood_display)
mymob.client.screen += list(vampire_blood_display)
/datum/hud/proc/remove_vampire_hud()
if(!vampire_blood_display)
return
mymob.client.screen -= list(vampire_blood_display)
qdel(vampire_blood_display)
vampire_blood_display = null
+9 -6
View File
@@ -239,12 +239,11 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
if(!get_ability(path))
force_add_ability(path)
/datum/vampire/proc/remove_ability(path)
var/A = get_ability(path)
if(A)
powers -= A
owner.mind.spell_list.Remove(A)
qdel(A)
/datum/vampire/proc/remove_ability(ability)
if(ability && (ability in powers))
powers -= ability
owner.mind.spell_list.Remove(ability)
qdel(ability)
/mob/proc/make_vampire()
if(!mind)
@@ -263,6 +262,10 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
/datum/vampire/proc/remove_vampire_powers()
for(var/P in powers)
remove_ability(P)
if(owner.hud_used)
var/datum/hud/hud = owner.hud_used
if(hud.vampire_blood_display)
hud.remove_vampire_hud()
owner.alpha = 255
/datum/vampire/proc/handle_bloodsucking(mob/living/carbon/human/H)
+9 -4
View File
@@ -13,6 +13,7 @@
var/obj/machinery/computer/operating/computer = null
buckle_lying = 90
var/no_icon_updates = 0 //set this to 1 if you don't want the icons ever changing
/obj/machinery/optable/New()
..()
@@ -79,10 +80,12 @@
var/mob/living/carbon/human/M = locate(/mob/living/carbon/human, src.loc)
if(M.lying)
src.victim = M
icon_state = M.pulse ? "table2-active" : "table2-idle"
if(!no_icon_updates)
icon_state = M.pulse ? "table2-active" : "table2-idle"
return 1
src.victim = null
icon_state = "table2-idle"
if(!no_icon_updates)
icon_state = "table2-idle"
return 0
/obj/machinery/optable/process()
@@ -106,9 +109,11 @@
if(ishuman(C))
var/mob/living/carbon/human/H = C
src.victim = H
icon_state = H.pulse ? "table2-active" : "table2-idle"
if(!no_icon_updates)
icon_state = H.pulse ? "table2-active" : "table2-idle"
else
icon_state = "table2-idle"
if(!no_icon_updates)
icon_state = "table2-idle"
/obj/machinery/optable/verb/climb_on()
set name = "Climb On Table"
@@ -20,12 +20,22 @@
jump_action.Grant(user)
/obj/machinery/computer/camera_advanced/check_eye(mob/user)
if (get_dist(user, src) > 1 || user.eye_blind)
if(user == current_user)
off_action.Activate()
if((stat & (NOPOWER|BROKEN)) || !Adjacent(user) || user.eye_blind || user.incapacitated())
user.unset_machine()
return 0
return 1
/obj/machinery/computer/camera_advanced/Destroy()
if(current_user)
current_user.unset_machine()
if(eyeobj)
qdel(eyeobj)
return ..()
/obj/machinery/computer/camera_advanced/on_unset_machine(mob/M)
if(M == current_user)
off_action.Activate()
/obj/machinery/computer/camera_advanced/attack_hand(mob/user)
if(..())
return
@@ -34,6 +44,7 @@
var/mob/living/carbon/L = user
if(!current_user)
user.set_machine(src)
if(!eyeobj)
CreateEye()
GrantActions(user)
+27 -482
View File
@@ -12,18 +12,6 @@
density = 0
opacity = 0
/obj/machinery/door/poddoor/four_tile_ver/
name = "Large Pod Door"
icon = 'icons/obj/doors/1x4blast_vert.dmi'
/obj/machinery/door/poddoor/three_tile_ver/
name = "Large Pod Door"
icon = 'icons/obj/doors/1x3blast_vert.dmi'
/obj/machinery/door/poddoor/two_tile_ver/
name = "Large Pod Door"
icon = 'icons/obj/doors/1x2blast_vert.dmi'
/obj/machinery/door/poddoor/Bumped(atom/AM)
if(!density)
return ..()
@@ -110,478 +98,35 @@
src.operating = 0
return
/
/obj/machinery/door/poddoor/two_tile_hor/open()
if (src.operating == 1) //doors can still open when emag-disabled
return
if (!ticker)
return 0
if(!src.operating) //in case of emag
src.operating = 1
flick("pdoorc0", src)
src.icon_state = "pdoor0"
sleep(10)
src.density = 0
src.set_opacity(0)
/obj/machinery/door/poddoor/multi_tile // Whoever wrote the old code for multi-tile spesspod doors needs to burn in hell.
name = "Large Pod Door"
f1.density = 0
f1.set_opacity(0)
f2.density = 0
f2.set_opacity(0)
air_update_turf(1)
update_freelook_sight()
if(operating == 1) //emag again
src.operating = 0
if(autoclose)
spawn(150)
autoclose()
return 1
/obj/machinery/door/poddoor/two_tile_hor/close()
if (src.operating)
return
src.operating = 1
flick("pdoorc1", src)
src.icon_state = "pdoor1"
src.density = 1
f1.density = 1
f1.set_opacity(1)
f2.density = 1
f2.set_opacity(1)
if (src.visible)
src.set_opacity(1)
air_update_turf(1)
update_freelook_sight()
sleep(10)
src.operating = 0
return
/obj/machinery/door/poddoor/three_tile_hor/open()
if (src.operating == 1) //doors can still open when emag-disabled
return
if (!ticker)
return 0
if(!src.operating) //in case of emag
src.operating = 1
flick("pdoorc0", src)
src.icon_state = "pdoor0"
sleep(10)
src.density = 0
src.set_opacity(0)
f1.density = 0
f1.set_opacity(0)
f2.density = 0
f2.set_opacity(0)
f3.density = 0
f3.set_opacity(0)
air_update_turf(1)
update_freelook_sight()
if(operating == 1) //emag again
src.operating = 0
if(autoclose)
spawn(150)
autoclose()
return 1
/obj/machinery/door/poddoor/three_tile_hor/close()
if (src.operating)
return
src.operating = 1
flick("pdoorc1", src)
src.icon_state = "pdoor1"
src.density = 1
f1.density = 1
f1.set_opacity(1)
f2.density = 1
f2.set_opacity(1)
f3.density = 1
f3.set_opacity(1)
if (src.visible)
src.set_opacity(1)
air_update_turf(1)
update_freelook_sight()
sleep(10)
src.operating = 0
return
/obj/machinery/door/poddoor/four_tile_hor/open()
if (src.operating == 1) //doors can still open when emag-disabled
return
if (!ticker)
return 0
if(!src.operating) //in case of emag
src.operating = 1
flick("pdoorc0", src)
src.icon_state = "pdoor0"
sleep(10)
src.density = 0
src.set_opacity(0)
f1.density = 0
f1.set_opacity(0)
f2.density = 0
f2.set_opacity(0)
f3.density = 0
f3.set_opacity(0)
f4.density = 0
f4.set_opacity(0)
air_update_turf(1)
update_freelook_sight()
if(operating == 1) //emag again
src.operating = 0
if(autoclose)
spawn(150)
autoclose()
return 1
/obj/machinery/door/poddoor/four_tile_hor/close()
if (src.operating)
return
src.operating = 1
flick("pdoorc1", src)
src.icon_state = "pdoor1"
src.density = 1
f1.density = 1
f1.set_opacity(1)
f2.density = 1
f2.set_opacity(1)
f3.density = 1
f3.set_opacity(1)
f4.density = 1
f4.set_opacity(1)
if (src.visible)
src.set_opacity(1)
air_update_turf(1)
update_freelook_sight()
sleep(10)
src.operating = 0
return
/obj/machinery/door/poddoor/two_tile_ver/open()
if (src.operating == 1) //doors can still open when emag-disabled
return
if (!ticker)
return 0
if(!src.operating) //in case of emag
src.operating = 1
flick("pdoorc0", src)
src.icon_state = "pdoor0"
sleep(10)
src.density = 0
src.set_opacity(0)
f1.density = 0
f1.set_opacity(0)
f2.density = 0
f2.set_opacity(0)
air_update_turf(1)
update_freelook_sight()
if(operating == 1) //emag again
src.operating = 0
if(autoclose)
spawn(150)
autoclose()
return 1
/obj/machinery/door/poddoor/two_tile_ver/close()
if (src.operating)
return
src.operating = 1
flick("pdoorc1", src)
src.icon_state = "pdoor1"
src.density = 1
f1.density = 1
f1.set_opacity(1)
f2.density = 1
f2.set_opacity(1)
if (src.visible)
src.set_opacity(1)
air_update_turf(1)
update_freelook_sight()
sleep(10)
src.operating = 0
return
/obj/machinery/door/poddoor/three_tile_ver/open()
if (src.operating == 1) //doors can still open when emag-disabled
return
if (!ticker)
return 0
if(!src.operating) //in case of emag
src.operating = 1
flick("pdoorc0", src)
src.icon_state = "pdoor0"
sleep(10)
src.density = 0
src.set_opacity(0)
f1.density = 0
f1.set_opacity(0)
f2.density = 0
f2.set_opacity(0)
f3.density = 0
f3.set_opacity(0)
air_update_turf(1)
update_freelook_sight()
if(operating == 1) //emag again
src.operating = 0
if(autoclose)
spawn(150)
autoclose()
return 1
/obj/machinery/door/poddoor/three_tile_ver/close()
if (src.operating)
return
src.operating = 1
flick("pdoorc1", src)
src.icon_state = "pdoor1"
src.density = 1
f1.density = 1
f1.set_opacity(1)
f2.density = 1
f2.set_opacity(1)
f3.density = 1
f3.set_opacity(1)
if (src.visible)
src.set_opacity(1)
air_update_turf(1)
update_freelook_sight()
sleep(10)
src.operating = 0
return
/obj/machinery/door/poddoor/four_tile_ver/open()
if (src.operating == 1) //doors can still open when emag-disabled
return
if (!ticker)
return 0
if(!src.operating) //in case of emag
src.operating = 1
flick("pdoorc0", src)
src.icon_state = "pdoor0"
sleep(10)
src.density = 0
src.set_opacity(0)
f1.density = 0
f1.set_opacity(0)
f2.density = 0
f2.set_opacity(0)
f3.density = 0
f3.set_opacity(0)
f4.density = 0
f4.set_opacity(0)
air_update_turf(1)
update_freelook_sight()
if(operating == 1) //emag again
src.operating = 0
if(autoclose)
spawn(150)
autoclose()
return 1
/obj/machinery/door/poddoor/four_tile_ver/close()
if (src.operating)
return
src.operating = 1
flick("pdoorc1", src)
src.icon_state = "pdoor1"
src.density = 1
f1.density = 1
f1.set_opacity(1)
f2.density = 1
f2.set_opacity(1)
f3.density = 1
f3.set_opacity(1)
f4.density = 1
f4.set_opacity(1)
if (src.visible)
src.set_opacity(1)
air_update_turf(1)
update_freelook_sight()
sleep(10)
src.operating = 0
return
/obj/machinery/door/poddoor/two_tile_hor
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
icon = 'icons/obj/doors/1x2blast_hor.dmi'
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,EAST))
f1.density = density
f2.density = density
f1.set_opacity(opacity)
f2.set_opacity(opacity)
Destroy()
qdel(f1)
qdel(f2)
return ..()
/obj/machinery/door/poddoor/two_tile_ver
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
icon = 'icons/obj/doors/1x2blast_vert.dmi'
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,NORTH))
f1.density = density
f2.density = density
f1.set_opacity(opacity)
f2.set_opacity(opacity)
Destroy()
qdel(f1)
qdel(f2)
return ..()
/obj/machinery/door/poddoor/three_tile_hor
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
var/obj/machinery/door/poddoor/filler_object/f3
icon = 'icons/obj/doors/1x3blast_hor.dmi'
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,EAST))
f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,EAST))
f1.density = density
f2.density = density
f3.density = density
f1.set_opacity(opacity)
f2.set_opacity(opacity)
f3.set_opacity(opacity)
Destroy()
qdel(f1)
qdel(f2)
qdel(f3)
return ..()
/obj/machinery/door/poddoor/three_tile_ver
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
var/obj/machinery/door/poddoor/filler_object/f3
icon = 'icons/obj/doors/1x3blast_vert.dmi'
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,NORTH))
f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,NORTH))
f1.density = density
f2.density = density
f3.density = density
f1.set_opacity(opacity)
f2.set_opacity(opacity)
f3.set_opacity(opacity)
Destroy()
qdel(f1)
qdel(f2)
qdel(f3)
return ..()
/obj/machinery/door/poddoor/four_tile_hor
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
var/obj/machinery/door/poddoor/filler_object/f3
var/obj/machinery/door/poddoor/filler_object/f4
icon = 'icons/obj/doors/1x4blast_hor.dmi'
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,EAST))
f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,EAST))
f4 = new/obj/machinery/door/poddoor/filler_object (get_step(f3,EAST))
f1.density = density
f2.density = density
f3.density = density
f4.density = density
f1.set_opacity(opacity)
f2.set_opacity(opacity)
f3.set_opacity(opacity)
f4.set_opacity(opacity)
Destroy()
qdel(f1)
qdel(f2)
qdel(f3)
qdel(f4)
return ..()
/obj/machinery/door/poddoor/four_tile_ver
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
var/obj/machinery/door/poddoor/filler_object/f3
var/obj/machinery/door/poddoor/filler_object/f4
/obj/machinery/door/poddoor/multi_tile/four_tile_ver/
icon = 'icons/obj/doors/1x4blast_vert.dmi'
width = 4
dir = NORTH
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,NORTH))
f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,NORTH))
f4 = new/obj/machinery/door/poddoor/filler_object (get_step(f3,NORTH))
f1.density = density
f2.density = density
f3.density = density
f4.density = density
f1.set_opacity(opacity)
f2.set_opacity(opacity)
f3.set_opacity(opacity)
f4.set_opacity(opacity)
/obj/machinery/door/poddoor/multi_tile/three_tile_ver/
icon = 'icons/obj/doors/1x3blast_vert.dmi'
width = 3
dir = NORTH
Destroy()
qdel(f1)
qdel(f2)
qdel(f3)
qdel(f4)
return ..()
/obj/machinery/door/poddoor/multi_tile/two_tile_ver/
icon = 'icons/obj/doors/1x2blast_vert.dmi'
width = 2
dir = NORTH
/obj/machinery/door/poddoor/filler_object
name = ""
icon_state = ""
/obj/machinery/door/poddoor/multi_tile/four_tile_hor/
icon = 'icons/obj/doors/1x4blast_hor.dmi'
width = 4
dir = EAST
/obj/machinery/door/poddoor/multi_tile/three_tile_hor/
icon = 'icons/obj/doors/1x3blast_hor.dmi'
width = 3
dir = EAST
/obj/machinery/door/poddoor/multi_tile/two_tile_hor/
icon = 'icons/obj/doors/1x2blast_hor.dmi'
width = 2
dir = EAST
+1
View File
@@ -716,6 +716,7 @@
/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 8,
/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater = 15,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 30,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass = 30,
/obj/item/weapon/reagent_containers/food/drinks/ice = 9)
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/tea = 10)
vend_delay = 15
+3 -1
View File
@@ -12,7 +12,7 @@
. = ..()
if(can_buckle && buckled_mob)
return user_unbuckle_mob(user)
/atom/movable/attack_robot(mob/living/user)
. = ..()
if(can_buckle && buckled_mob && Adjacent(user)) // attack_robot is called on all ranges, so the Adjacent check is needed
@@ -46,6 +46,7 @@
buckled_mob = M
M.update_canmove()
post_buckle_mob(M)
M.throw_alert("buckled", /obj/screen/alert/restrained/buckled, new_master = src)
return 1
/atom/movable/proc/unbuckle_mob()
@@ -54,6 +55,7 @@
buckled_mob.buckled = null
buckled_mob.anchored = initial(buckled_mob.anchored)
buckled_mob.update_canmove()
buckled_mob.clear_alert("buckled")
buckled_mob = null
post_buckle_mob(.)
+2 -1
View File
@@ -16,7 +16,8 @@
aSignal = new(src)
aSignal.code = rand(1,100)
aSignal.frequency = sanitize_frequency(rand(PUBLIC_LOW_FREQ, PUBLIC_HIGH_FREQ))
var/new_frequency = sanitize_frequency(rand(PUBLIC_LOW_FREQ, PUBLIC_HIGH_FREQ))
aSignal.set_frequency(new_frequency)
/obj/effect/anomaly/proc/anomalyEffect()
if(prob(50))
+1
View File
@@ -53,6 +53,7 @@
var/strip_delay = DEFAULT_ITEM_STRIP_DELAY
var/put_on_delay = DEFAULT_ITEM_PUTON_DELAY
var/breakouttime = 0
/* Species-specific sprites, concept stolen from Paradise//vg/.
ex:
@@ -20,10 +20,15 @@
/obj/item/device/radio/headset/New()
..()
internal_channels.Cut()
/obj/item/device/radio/headset/initialize()
..()
if(ks1type)
keyslot1 = new ks1type(src)
if(ks2type)
keyslot2 = new ks2type(src)
recalculateChannels(1)
/obj/item/device/radio/headset/Destroy()
@@ -383,8 +388,6 @@
for (var/ch_name in channels)
if(!radio_controller)
sleep(30) // Waiting for the radio_controller to be created.
if(!radio_controller)
src.name = "broken radio headset"
return
+3 -7
View File
@@ -152,7 +152,6 @@
New()
..()
sleep(2)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
@@ -169,7 +168,6 @@
new/obj/item/weapon/storage/pill_bottle/random_meds(src)
while(prob(25))
new/obj/item/weapon/storage/pill_bottle/random_meds(src)
return
/obj/structure/closet/crate/secure/chemicals
name = "chemical supply kit"
@@ -178,7 +176,6 @@
New()
..()
sleep(2)
for(var/chem in standard_chemicals)
var/obj/item/weapon/reagent_containers/glass/bottle/B = new(src)
B.reagents.add_reagent(chem,B.volume)
@@ -240,7 +237,6 @@
New()
..()
sleep(2)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
@@ -248,7 +244,6 @@
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
while(prob(25))
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent(src)
return
// -------------------------------------
@@ -276,8 +271,9 @@
while(prob(15))
new menace(get_step_rand(src.loc))
..()
return 1
else
..()
return ..()
//
@@ -307,7 +303,7 @@
qdel(Cat1)
else
qdel(Cat2)
..()
return ..()
// --------------------------------------
// Collen's box of wonder and mystery
@@ -193,3 +193,31 @@ var/global/list/datum/stack_recipe/mime_recipes = list ( \
icon_state = "sheet-enruranium"
origin_tech = "materials=6"
materials = list(MAT_URANIUM=3000)
/*
* Alien Alloy
*/
/obj/item/stack/sheet/mineral/abductor
name = "alien alloy"
icon = 'icons/obj/abductor.dmi'
icon_state = "sheet-abductor"
singular_name = "alien alloy sheet"
force = 5
throwforce = 5
w_class = 3
throw_speed = 1
throw_range = 3
origin_tech = "materials=6;abductor=1"
sheettype = "abductor"
var/global/list/datum/stack_recipe/abductor_recipes = list ( \
new/datum/stack_recipe("alien bed", /obj/structure/stool/bed/abductor, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("alien locker", /obj/structure/closet/abductor, 1, time = 15, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("alien table frame", /obj/structure/abductor_tableframe, 1, time = 15, one_per_turf = 1, on_floor = 1), \
null, \
new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20), \
)
/obj/item/stack/sheet/mineral/abductor/New(var/loc, var/amount=null)
recipes = abductor_recipes
..()
@@ -0,0 +1,9 @@
/obj/item/stack/tile/mineral/abductor
name = "alien floor tile"
singular_name = "alien floor tile"
desc = "A tile made out of alien alloy."
icon = 'icons/obj/abductor.dmi'
icon_state = "tile_abductor"
origin_tech = "materials=6;abductor=1"
turf_type = /turf/simulated/floor/mineral/abductor
mineralType = "abductor"
+55 -58
View File
@@ -3,20 +3,20 @@
desc = "This injects the person with DNA."
icon = 'icons/obj/items.dmi'
icon_state = "dnainjector"
var/block=0
item_state = "dnainjector"
var/block = 0
var/datum/dna2/record/buf=null
var/s_time = 10.0
throw_speed = 1
throw_speed = 3
throw_range = 5
w_class = 1.0
var/uses = 1
var/nofail
var/is_bullet = 0
var/inuse = 0
w_class = 1
origin_tech = "biotech=1"
var/damage_coeff = 1
var/used = 0
// USE ONLY IN PREMADE SYRINGES. WILL NOT WORK OTHERWISE.
var/datatype=0
var/value=0
var/datatype = 0
var/value = 0
/obj/item/weapon/dnainjector/New()
if(datatype && block)
@@ -61,50 +61,47 @@
return buf.dna.SetUIValue(real_block,val)
/obj/item/weapon/dnainjector/proc/inject(mob/living/M as mob, mob/user as mob)
if(used)
return
if(istype(M,/mob/living))
M.apply_effect(rand(10,25),IRRADIATE,0,1)
M.apply_effect(rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)),IRRADIATE,0,1)
var/mob/living/carbon/human/H
if(istype(M, /mob/living/carbon/human))
H = M
if (!(NOCLONE in M.mutations) && !(H && (H.species.flags & NO_DNA))) // prevents drained people from having their DNA changed
var/prev_ue = M.dna.unique_enzymes
// UI in syringe.
if (buf.types & DNA2_BUF_UI)
if (!block) //isolated block?
M.dna.UI = buf.dna.UI.Copy()
M.dna.UpdateUI()
M.UpdateAppearance()
if (buf.types & DNA2_BUF_UE) //unique enzymes? yes
spawn(0) //Some mutations have sleeps in them, like monkey
if(!(NOCLONE in M.mutations) && !(H && (H.species.flags & NO_DNA))) // prevents drained people from having their DNA changed
var/prev_ue = M.dna.unique_enzymes
// UI in syringe.
if (buf.types & DNA2_BUF_UI)
if (!block) //isolated block?
M.dna.UI = buf.dna.UI.Copy()
M.dna.UpdateUI()
M.UpdateAppearance()
if (buf.types & DNA2_BUF_UE) //unique enzymes? yes
M.real_name = buf.dna.real_name
M.name = buf.dna.real_name
M.dna.real_name = buf.dna.real_name
M.dna.unique_enzymes = buf.dna.unique_enzymes
uses--
else
M.dna.SetUIValue(block,src.GetValue())
M.UpdateAppearance()
uses--
if (buf.types & DNA2_BUF_SE)
if (!block) //isolated block?
M.dna.SE = buf.dna.SE.Copy()
M.dna.UpdateSE()
else
M.dna.SetSEValue(block,src.GetValue())
domutcheck(M, null, block!=null)
uses--
M.update_mutations()
if(H)
H.sync_organ_dna(assimilate = 0, old_ue = prev_ue)
spawn(0)//this prevents the collapse of space-time continuum
if (user)
user.unEquip(src)
qdel(src)
return uses
M.real_name = buf.dna.real_name
M.name = buf.dna.real_name
M.dna.real_name = buf.dna.real_name
M.dna.unique_enzymes = buf.dna.unique_enzymes
else
M.dna.SetUIValue(block,src.GetValue())
M.UpdateAppearance()
if (buf.types & DNA2_BUF_SE)
if (!block) //isolated block?
M.dna.SE = buf.dna.SE.Copy()
M.dna.UpdateSE()
else
M.dna.SetSEValue(block,src.GetValue())
domutcheck(M, null, block!=null)
M.update_mutations()
if(H)
H.sync_organ_dna(assimilate = 0, old_ue = prev_ue)
/obj/item/weapon/dnainjector/attack(mob/M as mob, mob/user as mob)
if(used)
user << "<span class='warning'>This injector is used up!</span>"
return
if(!M.dna) //You know what would be nice? If the mob you're injecting has DNA, and so doesn't cause runtimes.
return 0
@@ -116,9 +113,6 @@
if (!user.IsAdvancedToolUser())
return 0
if(inuse)
return 0
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been injected with [name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [name] to inject [M.name] ([M.ckey])</font>")
log_attack("[user.name] ([user.ckey]) used the [name] to inject [M.name] ([M.ckey])")
@@ -149,17 +143,20 @@
else
log_attack("[key_name(user)] injected [key_name(M)] with the [name]")
user.visible_message("<span class='danger'>\The [user] starts injecting \the [M] with \the [src]!</span>", "<span class='notice'>You start injecting \the [M] with \the [src].</span>")
if(do_after(user, 50, target = M))
inject(M, user)//Now we actually do the heavy lifting
user.visible_message("<span class='danger'>\The [user] injects \the [M] with \the [src]!</span>", "<span class='danger'>You inject \the [M] with \the [src].</span>")
if(M != user)
M.visible_message("<span class='danger'>[user] is trying to inject [M] with [src]!</span>", "<span class='userdanger'>[user] is trying to inject [M] with [src]!</span>")
if(!do_mob(user, M))
return
M.visible_message("<span class='danger'>[user] injects [M] with the syringe with [src]!", \
"<span class='userdanger'>[user] injects [M] with the syringe with [src]!")
if(user)//If the user still exists. Their mob may not.
if(M)//Runtime fix: If the mob doesn't exist, mob.name doesnt work. - Nodrak
user.show_message("<span class='alert'>You inject [M.name]</span>")
else
user.show_message("<span class='alert'>You finish the injection.</span>")
else
user << "<span class='notice'>You inject yourself with [src].</span>"
inject(M, user)
used = 1
icon_state = "dnainjector0"
desc += " This one is used up."
/obj/item/weapon/dnainjector/hulkmut
name = "DNA-Injector (Hulk)"
+6 -110
View File
@@ -12,7 +12,7 @@
throw_range = 5
materials = list(MAT_METAL=500)
origin_tech = "materials=1"
var/breakouttime = 600 //Deciseconds = 60s = 1 minutes
breakouttime = 600 //Deciseconds = 60s = 1 minutes
var/cuffsound = 'sound/weapons/handcuffs.ogg'
var/trashtype = null //For disposable cuffs
@@ -50,7 +50,7 @@
else
loc = target
target.handcuffed = src
target.update_inv_handcuffed(1)
target.update_handcuffed()
return
/obj/item/weapon/restraints/handcuffs/cable
@@ -85,6 +85,9 @@
/obj/item/weapon/restraints/handcuffs/cable/white
color = COLOR_WHITE
/obj/item/weapon/restraints/handcuffs/alien
icon_state = "handcuffAlien"
/obj/item/weapon/restraints/handcuffs/pinkcuffs
name = "fluffy pink handcuffs"
desc = "Use this to keep prisoners in line. Or you know, your significant other."
@@ -121,7 +124,7 @@
if(do_mob(user, C, 30))
if(!C.handcuffed)
C.handcuffed = new /obj/item/weapon/restraints/handcuffs/cable/zipties/used(C)
C.update_inv_handcuffed(1)
C.update_handcuffed()
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
add_logs(C, user, "ziptie-cuffed")
else
@@ -133,110 +136,3 @@
/obj/item/weapon/restraints/handcuffs/cable/zipties/used/attack()
return
//Legcuffs
/obj/item/weapon/restraints/legcuffs
name = "leg cuffs"
desc = "Use this to keep prisoners in line."
gender = PLURAL
icon = 'icons/obj/items.dmi'
icon_state = "handcuff"
flags = CONDUCT
throwforce = 0
w_class = 3.0
origin_tech = "materials=1"
slowdown = 7
var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute
/obj/item/weapon/restraints/legcuffs/beartrap
name = "bear trap"
throw_speed = 1
throw_range = 1
icon_state = "beartrap0"
desc = "A trap used to catch bears and other legged creatures."
var/armed = 0
var/obj/item/weapon/grenade/iedcasing/IED = null
/obj/item/weapon/restraints/legcuffs/beartrap/Destroy()
if(IED)
qdel(IED)
IED = null
return ..()
/obj/item/weapon/restraints/legcuffs/beartrap/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is sticking \his head in the [src.name]! It looks like \he's trying to commit suicide.</span>")
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return (BRUTELOSS)
/obj/item/weapon/restraints/legcuffs/beartrap/attack_self(mob/user as mob)
..()
if(ishuman(user) && !user.stat && !user.restrained())
armed = !armed
icon_state = "beartrap[armed]"
to_chat(user, "<span class='notice'>[src] is now [armed ? "armed" : "disarmed"]</span>")
/obj/item/weapon/restraints/legcuffs/beartrap/attackby(var/obj/item/I, mob/user as mob) //Let's get explosive.
if(istype(I, /obj/item/weapon/grenade/iedcasing))
if(IED)
to_chat(user, "<span class='warning'>This beartrap already has an IED hooked up to it!</span>")
return
IED = I
switch(IED.assembled)
if(0,1) //if it's not fueled/hooked up
to_chat(user, "<span class='warning'>You haven't prepared this IED yet!</span>")
IED = null
return
if(2,3)
user.drop_item(src)
I.forceMove(src)
message_admins("[key_name_admin(user)] has rigged a beartrap with an IED.")
log_game("[key_name(user)] has rigged a beartrap with an IED.")
to_chat(user, "<span class='notice'>You sneak the [IED] underneath the pressure plate and connect the trigger wire.</span>")
desc = "A trap used to catch bears and other legged creatures. <span class='warning'>There is an IED hooked up to it.</span>"
else
to_chat(user, "<span class='danger'>You shouldn't be reading this message! Contact a coder or someone, something broke!</span>")
IED = null
return
if(istype(I, /obj/item/weapon/screwdriver))
if(IED)
IED.forceMove(get_turf(src))
IED = null
to_chat(user, "<span class='notice'>You remove the IED from the [src].</span>")
return
..()
/obj/item/weapon/restraints/legcuffs/beartrap/Crossed(AM as mob|obj)
if(armed && isturf(src.loc))
if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator))
var/mob/living/L = AM
armed = 0
icon_state = "beartrap0"
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
L.visible_message("<span class='danger'>[L] triggers \the [src].</span>", \
"<span class='userdanger'>You trigger \the [src]!</span>")
if(IED && isturf(src.loc))
IED.active = 1
IED.overlays -= image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled")
IED.icon_state = initial(icon_state) + "_active"
IED.assembled = 3
message_admins("[key_name_admin(usr)] has triggered an IED-rigged [name].")
log_game("[key_name(usr)] has triggered an IED-rigged [name].")
spawn(IED.det_time)
IED.prime()
if(ishuman(AM))
var/mob/living/carbon/H = AM
if(H.lying)
H.apply_damage(20,BRUTE,"chest")
else
H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg")))
if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs.
H.legcuffed = src
src.loc = H
H.update_inv_legcuffed(0)
feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart.
else
L.apply_damage(20,BRUTE)
..()
+98 -3
View File
@@ -1,5 +1,5 @@
/obj/item/weapon/legcuffs
name = "legcuffs"
/obj/item/weapon/restraints/legcuffs
name = "leg cuffs"
desc = "Use this to keep prisoners in line."
gender = PLURAL
icon = 'icons/obj/items.dmi'
@@ -8,7 +8,102 @@
throwforce = 0
w_class = 3.0
origin_tech = "materials=1"
var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute
slowdown = 7
breakouttime = 300 //Deciseconds = 30s = 0.5 minute
/obj/item/weapon/restraints/legcuffs/beartrap
name = "bear trap"
throw_speed = 1
throw_range = 1
icon_state = "beartrap0"
desc = "A trap used to catch bears and other legged creatures."
var/armed = 0
var/obj/item/weapon/grenade/iedcasing/IED = null
/obj/item/weapon/restraints/legcuffs/beartrap/Destroy()
if(IED)
qdel(IED)
IED = null
return ..()
/obj/item/weapon/restraints/legcuffs/beartrap/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is sticking \his head in the [src.name]! It looks like \he's trying to commit suicide.</span>")
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return (BRUTELOSS)
/obj/item/weapon/restraints/legcuffs/beartrap/attack_self(mob/user as mob)
..()
if(ishuman(user) && !user.stat && !user.restrained())
armed = !armed
icon_state = "beartrap[armed]"
to_chat(user, "<span class='notice'>[src] is now [armed ? "armed" : "disarmed"]</span>")
/obj/item/weapon/restraints/legcuffs/beartrap/attackby(var/obj/item/I, mob/user as mob) //Let's get explosive.
if(istype(I, /obj/item/weapon/grenade/iedcasing))
if(IED)
to_chat(user, "<span class='warning'>This beartrap already has an IED hooked up to it!</span>")
return
IED = I
switch(IED.assembled)
if(0,1) //if it's not fueled/hooked up
to_chat(user, "<span class='warning'>You haven't prepared this IED yet!</span>")
IED = null
return
if(2,3)
user.drop_item(src)
I.forceMove(src)
message_admins("[key_name_admin(user)] has rigged a beartrap with an IED.")
log_game("[key_name(user)] has rigged a beartrap with an IED.")
to_chat(user, "<span class='notice'>You sneak the [IED] underneath the pressure plate and connect the trigger wire.</span>")
desc = "A trap used to catch bears and other legged creatures. <span class='warning'>There is an IED hooked up to it.</span>"
else
to_chat(user, "<span class='danger'>You shouldn't be reading this message! Contact a coder or someone, something broke!</span>")
IED = null
return
if(istype(I, /obj/item/weapon/screwdriver))
if(IED)
IED.forceMove(get_turf(src))
IED = null
to_chat(user, "<span class='notice'>You remove the IED from the [src].</span>")
return
..()
/obj/item/weapon/restraints/legcuffs/beartrap/Crossed(AM as mob|obj)
if(armed && isturf(src.loc))
if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator))
var/mob/living/L = AM
armed = 0
icon_state = "beartrap0"
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
L.visible_message("<span class='danger'>[L] triggers \the [src].</span>", \
"<span class='userdanger'>You trigger \the [src]!</span>")
if(IED && isturf(src.loc))
IED.active = 1
IED.overlays -= image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled")
IED.icon_state = initial(icon_state) + "_active"
IED.assembled = 3
message_admins("[key_name_admin(usr)] has triggered an IED-rigged [name].")
log_game("[key_name(usr)] has triggered an IED-rigged [name].")
spawn(IED.det_time)
IED.prime()
if(ishuman(AM))
var/mob/living/carbon/H = AM
if(H.lying)
H.apply_damage(20,BRUTE,"chest")
else
H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg")))
if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs.
H.legcuffed = src
src.loc = H
H.update_inv_legcuffed(0)
feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart.
else
L.apply_damage(20,BRUTE)
..()
/obj/item/weapon/legcuffs/bolas
name = "bolas"
@@ -137,37 +137,3 @@
H.update_inv_r_hand()
add_fingerprint(user)
return
/obj/item/weapon/cloaking_device
name = "cloaking device"
desc = "Use this to become invisible to the human eyesocket."
icon = 'icons/obj/device.dmi'
icon_state = "shield0"
var/active = 0.0
flags = CONDUCT
item_state = "electronic"
throwforce = 10.0
throw_speed = 2
throw_range = 10
w_class = 2.0
origin_tech = "magnets=3;syndicate=4"
/obj/item/weapon/cloaking_device/attack_self(mob/user as mob)
src.active = !( src.active )
if (src.active)
to_chat(user, "\blue The cloaking device is now active.")
src.icon_state = "shield1"
else
to_chat(user, "\blue The cloaking device is now inactive.")
src.icon_state = "shield0"
src.add_fingerprint(user)
return
/obj/item/weapon/cloaking_device/emp_act(severity)
active = 0
icon_state = "shield0"
if(ismob(loc))
loc:update_icons()
..()
@@ -512,6 +512,16 @@
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
/obj/item/weapon/storage/box/alienhandcuffs
name = "box of spare handcuffs"
desc = "A box full of handcuffs."
icon_state = "alienboxCuffs"
New()
..()
for(var/i in 1 to 7)
new /obj/item/weapon/restraints/handcuffs/alien(src)
/obj/item/weapon/storage/box/fakesyndiesuit
name = "boxed space suit and helmet"
desc = "A sleek, sturdy box used to hold replica spacesuits."
+1 -1
View File
@@ -127,7 +127,7 @@
C.handcuffed = null
if(C.buckled && C.buckled.buckle_requires_restraints)
C.buckled.unbuckle_mob()
C.update_inv_handcuffed()
C.update_handcuffed()
return
else
..()
+7 -1
View File
@@ -129,7 +129,13 @@
return
/mob/proc/unset_machine()
src.machine = null
if(machine)
machine.on_unset_machine(src)
machine = null
//called when the user unsets the machine.
/atom/movable/proc/on_unset_machine(mob/user)
return
/mob/proc/set_machine(var/obj/O)
if(src.machine)
+5 -1
View File
@@ -108,7 +108,11 @@
to_chat(user, "<span class='warning'>Nothing interesting happens!</span>")
return
to_chat(user, "<span class='notice'>You emag the barsign. Takeover in progress...</span>")
sleep(100) //10 seconds
addtimer(src, "post_emag", 100)
/obj/structure/sign/barsign/proc/post_emag()
if(broken || emagged)
return
set_sign(new /datum/barsign/hiddensigns/syndibarsign)
emagged = 1
req_access = list(access_syndicate)
@@ -11,9 +11,11 @@
var/wall_mounted = 0 //never solid (You can always pass over it)
var/health = 100
var/lastbang
var/cutting_tool = /obj/item/weapon/weldingtool
var/sound = 'sound/machines/click.ogg'
var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate
//then open it in a populated area to crash clients.
var/cutting_sound = 'sound/items/Welder.ogg'
var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate then open it in a populated area to crash clients.
var/material_drop = /obj/item/stack/sheet/metal
/obj/structure/closet/New()
..()
@@ -136,7 +138,6 @@
/obj/structure/closet/proc/toggle(mob/user as mob)
if(!(src.opened ? src.close() : src.open()))
to_chat(user, "<span class='notice'>It won't budge!</span>")
return
// this should probably use dump_contents()
/obj/structure/closet/ex_act(severity)
@@ -169,7 +170,6 @@
for(var/atom/movable/A as mob|obj in src)
A.forceMove(loc)
qdel(src)
return
/obj/structure/closet/attack_animal(mob/living/simple_animal/user as mob)
if(user.environment_smash)
@@ -259,16 +259,24 @@
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
if(istype(W,/obj/item/tk_grab))
return 0
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(!WT.remove_fuel(0,user))
to_chat(user, "<span class='notice'>You need more welding fuel to complete this task.</span>")
return
new /obj/item/stack/sheet/metal(src.loc)
for(var/mob/M in viewers(src))
M.show_message("<span class='notice'>\The [src] has been cut apart by [user] with \the [WT].</span>", 3, "You hear welding.", 2)
qdel(src)
return
if(istype(W, cutting_tool))
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(!WT.remove_fuel(0, user))
return
to_chat(user, "<span class='notice'>You begin cutting \the [src] apart...</span>")
playsound(loc, cutting_sound, 40, 1)
if(do_after(user, 40, 1, target = src))
if(!opened || !WT.isOn())
return
playsound(loc, cutting_sound, 50, 1)
visible_message("<span class='notice'>[user] slices apart \the [src].</span>",
"<span class='notice'>You cut \the [src] apart with \the [WT].</span>",
"<span class='italics'>You hear welding.</span>")
var/turf/T = get_turf(src)
new material_drop(T)
qdel(src)
return
if(isrobot(user))
return
if(!usr.drop_item())
@@ -291,7 +299,6 @@
M.show_message("<span class='warning'>[src] has been [welded?"welded shut":"unwelded"] by [user.name].</span>", 3, "You hear welding.", 2)
else
src.attack_hand(user)
return
/obj/structure/closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
..()
@@ -315,7 +322,6 @@
if(user != O)
user.show_viewers("<span class='danger'>[user] stuffs [O] into [src]!</span>")
src.add_fingerprint(user)
return
/obj/structure/closet/attack_ai(mob/user)
if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) //Robots can open/close it, but not the AI
@@ -6,6 +6,8 @@
icon_closed = "cardboard"
health = 10
sound = 'sound/effects/rustle2.ogg'
material_drop = /obj/item/stack/sheet/cardboard
cutting_sound = 'sound/items/poster_ripped.ogg'
var/move_delay = 0
var/egged = 0
@@ -3,4 +3,5 @@
desc = "A crate which can sustain life for a while."
icon_state = "critter"
icon_opened = "critteropen"
icon_closed = "critter"
icon_closed = "critter"
material_drop = /obj/item/stack/sheet/wood
@@ -193,7 +193,6 @@
to_chat(user, "\red Cabinet locked.")
else
to_chat(user, "\blue Cabinet unlocked.")
return
update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers
var/hasaxe = 0
@@ -6,7 +6,6 @@
/obj/structure/closet/athletic_mixed/New()
..()
sleep(2)
new /obj/item/clothing/under/shorts/grey(src)
new /obj/item/clothing/under/shorts/black(src)
new /obj/item/clothing/under/shorts/red(src)
@@ -25,7 +24,6 @@
/obj/structure/closet/boxinggloves/New()
..()
sleep(2)
new /obj/item/clothing/gloves/boxing/blue(src)
new /obj/item/clothing/gloves/boxing/green(src)
new /obj/item/clothing/gloves/boxing/yellow(src)
@@ -38,7 +36,6 @@
/obj/structure/closet/masks/New()
..()
sleep(2)
new /obj/item/clothing/mask/luchador(src)
new /obj/item/clothing/mask/luchador/rudos(src)
new /obj/item/clothing/mask/luchador/tecnicos(src)
@@ -52,7 +49,6 @@
/obj/structure/closet/lasertag/red/New()
..()
sleep(2)
new /obj/item/weapon/gun/energy/laser/redtag(src)
new /obj/item/weapon/gun/energy/laser/redtag(src)
new /obj/item/weapon/gun/energy/laser/redtag(src)
@@ -69,7 +65,6 @@
/obj/structure/closet/lasertag/blue/New()
..()
sleep(2)
new /obj/item/weapon/gun/energy/laser/bluetag(src)
new /obj/item/weapon/gun/energy/laser/bluetag(src)
new /obj/item/weapon/gun/energy/laser/bluetag(src)
@@ -36,7 +36,6 @@
/obj/structure/closet/gimmick/russian/New()
..()
sleep(2)
new /obj/item/clothing/head/ushanka(src)
new /obj/item/clothing/head/ushanka(src)
new /obj/item/clothing/head/ushanka(src)
@@ -58,7 +57,6 @@
/obj/structure/closet/gimmick/tacticool/New()
..()
sleep(2)
new /obj/item/clothing/glasses/eyepatch(src)
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/gloves/combat(src)
@@ -83,16 +81,11 @@
icon_opened = "syndicateopen"
anchored = 1
/obj/structure/closet/thunderdome/New()
..()
sleep(2)
/obj/structure/closet/thunderdome/tdred
name = "red-team Thunderdome closet"
/obj/structure/closet/thunderdome/tdred/New()
..()
sleep(2)
new /obj/item/clothing/suit/armor/tdome/red(src)
new /obj/item/clothing/suit/armor/tdome/red(src)
new /obj/item/clothing/suit/armor/tdome/red(src)
@@ -120,7 +113,6 @@
/obj/structure/closet/thunderdome/tdgreen/New()
..()
sleep(2)
new /obj/item/clothing/suit/armor/tdome/green(src)
new /obj/item/clothing/suit/armor/tdome/green(src)
new /obj/item/clothing/suit/armor/tdome/green(src)
@@ -16,7 +16,6 @@
/obj/structure/closet/gmcloset/New()
..()
sleep(2)
new /obj/item/clothing/head/that(src)
new /obj/item/clothing/head/that(src)
new /obj/item/device/radio/headset/headset_service(src)
@@ -45,7 +44,6 @@
/obj/structure/closet/chefcloset/New()
..()
sleep(2)
new /obj/item/clothing/under/waiter(src)
new /obj/item/clothing/under/waiter(src)
new /obj/item/device/radio/headset/headset_service(src)
@@ -74,7 +72,6 @@
/obj/structure/closet/jcloset/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/janitor(src)
new /obj/item/device/radio/headset/headset_service(src)
new /obj/item/weapon/cartridge/janitor(src)
@@ -104,7 +101,6 @@
/obj/structure/closet/lawcloset/New()
..()
sleep(2)
new /obj/item/clothing/under/lawyer/female(src)
new /obj/item/clothing/under/lawyer/black(src)
new /obj/item/clothing/under/lawyer/red(src)
@@ -7,7 +7,6 @@
/obj/structure/closet/l3closet/New()
..()
sleep(2)
new /obj/item/weapon/storage/bag/bio( src )
new /obj/item/clothing/suit/bio_suit/general( src )
new /obj/item/clothing/head/bio_hood/general( src )
@@ -20,7 +19,6 @@
/obj/structure/closet/l3closet/general/New()
..()
sleep(2)
contents = list()
new /obj/item/clothing/suit/bio_suit/general( src )
new /obj/item/clothing/head/bio_hood/general( src )
@@ -33,7 +31,6 @@
/obj/structure/closet/l3closet/virology/New()
..()
sleep(2)
contents = list()
new /obj/item/weapon/storage/bag/bio( src )
new /obj/item/clothing/suit/bio_suit/virology( src )
@@ -49,7 +46,6 @@
/obj/structure/closet/l3closet/security/New()
..()
sleep(2)
contents = list()
new /obj/item/clothing/suit/bio_suit/security( src )
new /obj/item/clothing/head/bio_hood/security( src )
@@ -62,7 +58,6 @@
/obj/structure/closet/l3closet/janitor/New()
..()
sleep(2)
contents = list()
new /obj/item/clothing/suit/bio_suit/janitor( src )
new /obj/item/clothing/head/bio_hood/janitor( src )
@@ -75,7 +70,6 @@
/obj/structure/closet/l3closet/scientist/New()
..()
sleep(2)
contents = list()
new /obj/item/weapon/storage/bag/bio( src )
new /obj/item/clothing/suit/bio_suit/scientist( src )
@@ -7,7 +7,6 @@
/obj/structure/closet/malf/suits/New()
..()
sleep(2)
new /obj/item/weapon/tank/jetpack/void(src)
new /obj/item/clothing/mask/breath(src)
new /obj/item/clothing/head/helmet/space/nasavoid(src)
@@ -11,7 +11,6 @@
New()
..()
sleep(2)
new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
@@ -22,7 +21,6 @@
new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
return
/obj/structure/closet/secure_closet/bar/update_icon()
if(broken)
@@ -10,14 +10,12 @@
New()
..()
sleep(2)
new /obj/item/clothing/under/rank/cargotech(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/device/radio/headset/headset_cargo(src)
new /obj/item/clothing/gloves/fingerless(src)
new /obj/item/clothing/head/soft(src)
// new /obj/item/weapon/cartridge/quartermaster(src)
return
/obj/structure/closet/secure_closet/quartermaster
name = "quartermaster's locker"
@@ -31,7 +29,6 @@
New()
..()
sleep(2)
new /obj/item/clothing/under/rank/cargo(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/device/radio/headset/headset_cargo(src)
@@ -42,5 +39,4 @@
new /obj/item/weapon/tank/emergency_oxygen(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/glasses/meson(src)
new /obj/item/clothing/head/soft(src)
return
new /obj/item/clothing/head/soft(src)
@@ -11,7 +11,6 @@
/obj/structure/closet/secure_closet/chaplain/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/chaplain(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/suit/nun(src)
@@ -29,5 +28,4 @@
new /obj/item/clothing/gloves/ring/silver(src)
new /obj/item/clothing/gloves/ring/silver(src)
new /obj/item/clothing/gloves/ring/gold(src)
new /obj/item/clothing/gloves/ring/gold(src)
return
new /obj/item/clothing/gloves/ring/gold(src)
@@ -10,7 +10,6 @@
New()
..()
sleep(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/industrial(src)
else
@@ -32,7 +31,6 @@
new /obj/item/device/flash(src)
new /obj/item/taperoll/engineering(src)
new /obj/item/clothing/head/beret/eng(src)
return
/obj/structure/closet/secure_closet/engineering_electrical
name = "electrical supplies locker"
@@ -47,7 +45,6 @@
New()
..()
sleep(2)
new /obj/item/clothing/gloves/color/yellow(src)
new /obj/item/clothing/gloves/color/yellow(src)
new /obj/item/weapon/storage/toolbox/electrical(src)
@@ -60,7 +57,6 @@
new /obj/item/device/multitool(src)
new /obj/item/device/multitool(src)
new /obj/item/clothing/head/beret/eng
return
@@ -77,14 +73,12 @@
New()
..()
sleep(2)
new /obj/item/clothing/head/welding(src)
new /obj/item/clothing/head/welding(src)
new /obj/item/clothing/head/welding(src)
new /obj/item/weapon/weldingtool/largetank(src)
new /obj/item/weapon/weldingtool/largetank(src)
new /obj/item/weapon/weldingtool/largetank(src)
return
@@ -101,7 +95,6 @@
New()
..()
sleep(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/industrial(src)
else
@@ -116,7 +109,6 @@
new /obj/item/weapon/cartridge/engineering(src)
new /obj/item/taperoll/engineering(src)
new /obj/item/clothing/head/beret/eng(src)
return
/obj/structure/closet/secure_closet/atmos_personal
name = "technician's locker"
@@ -131,7 +123,6 @@
New()
..()
sleep(2)
new /obj/item/device/radio/headset/headset_eng(src)
new /obj/item/weapon/cartridge/atmos(src)
new /obj/item/weapon/storage/toolbox/mechanical(src)
@@ -147,6 +138,4 @@
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
new /obj/item/weapon/watertank/atmos(src)
new /obj/item/clothing/suit/fire/atmos(src)
new /obj/item/clothing/head/hardhat/atmos(src)
return
new /obj/item/clothing/head/hardhat/atmos(src)
@@ -21,7 +21,6 @@
var/list/bombs = search_contents_for(/obj/item/device/transfer_valve)
if(!isemptylist(bombs)) // You're fucked.
..(severity)
return
/obj/structure/closet/secure_closet/freezer/kitchen
name = "kitchen cabinet"
@@ -29,8 +28,7 @@
New()
..()
sleep(2)
for(var/i = 0, i < 3, i++)
for(var/i in 1 to 3)
new /obj/item/weapon/reagent_containers/food/condiment/flour(src)
new /obj/item/weapon/reagent_containers/food/condiment/rice(src)
new /obj/item/weapon/reagent_containers/food/condiment/sugar(src)
@@ -54,10 +52,8 @@
New()
..()
sleep(2)
for(var/i = 0, i < 4, i++)
for(var/i in 1 to 4)
new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src)
return
@@ -73,14 +69,11 @@
New()
..()
sleep(2)
for(var/i = 0, i < 5, i++)
for(var/i in 1 to 5)
new /obj/item/weapon/reagent_containers/food/drinks/milk(src)
for(var/i = 0, i < 5, i++)
new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src)
for(var/i = 0, i < 2, i++)
for(var/i in 1 to 2)
new /obj/item/weapon/storage/fancy/egg_box(src)
return
@@ -97,9 +90,7 @@
New()
..()
sleep(2)
dispense_cash(6700,src)
return
dispense_cash(6700, src)
@@ -11,7 +11,6 @@
New()
..()
sleep(2)
switch(rand(1,2))
if(1)
new /obj/item/clothing/suit/apron(src)
@@ -24,5 +23,4 @@
new /obj/item/device/radio/headset/headset_service(src)
new /obj/item/clothing/mask/bandana/botany(src)
new /obj/item/weapon/minihoe(src)
new /obj/item/weapon/hatchet(src)
return
new /obj/item/weapon/hatchet(src)
@@ -12,7 +12,6 @@
New()
..()
sleep(2)
new /obj/item/weapon/storage/box/autoinjectors(src)
new /obj/item/weapon/storage/box/syringes(src)
new /obj/item/weapon/reagent_containers/dropper(src)
@@ -23,7 +22,6 @@
new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src)
new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
return
@@ -41,14 +39,12 @@
New()
..()
sleep(2)
new /obj/item/weapon/tank/anesthetic(src)
new /obj/item/weapon/tank/anesthetic(src)
new /obj/item/weapon/tank/anesthetic(src)
new /obj/item/clothing/mask/breath/medical(src)
new /obj/item/clothing/mask/breath/medical(src)
new /obj/item/clothing/mask/breath/medical(src)
return
@@ -64,7 +60,6 @@
New()
..()
sleep(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/medic(src)
else
@@ -79,7 +74,6 @@
new /obj/item/weapon/storage/belt/medical(src)
new /obj/item/clothing/glasses/hud/health(src)
new /obj/item/clothing/shoes/sandal/white(src)
return
//Exam Room
/obj/structure/closet/secure_closet/exam
@@ -96,7 +90,6 @@
New()
..()
sleep(2)
new /obj/item/weapon/storage/box/syringes(src)
new /obj/item/weapon/reagent_containers/dropper(src)
new /obj/item/weapon/storage/belt/medical(src)
@@ -111,7 +104,6 @@
new /obj/item/weapon/storage/firstaid/fire(src)
new /obj/item/weapon/storage/firstaid/o2(src)
new /obj/item/weapon/storage/firstaid/toxin(src)
return
// Psychiatrist's pill bottle
@@ -138,14 +130,11 @@
New()
..()
sleep(2)
new /obj/item/clothing/suit/straight_jacket(src)
new /obj/item/weapon/reagent_containers/syringe(src)
new /obj/item/weapon/reagent_containers/glass/bottle/ether(src)
new /obj/item/weapon/storage/pill_bottle/psychiatrist(src)
return
/obj/structure/closet/secure_closet/CMO
name = "chief medical officer's locker"
req_access = list(access_cmo)
@@ -158,7 +147,6 @@
New()
..()
sleep(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/medic(src)
else
@@ -187,7 +175,6 @@
new /obj/item/device/flash(src)
new /obj/item/weapon/reagent_containers/hypospray/CMO(src)
new /obj/item/organ/internal/cyberimp/eyes/hud/medical(src)
return
@@ -198,12 +185,10 @@
New()
..()
sleep(2)
new /obj/item/device/assembly/signaler(src)
new /obj/item/device/radio/electropack(src)
new /obj/item/device/radio/electropack(src)
new /obj/item/device/radio/electropack(src)
return
@@ -221,10 +206,8 @@
New()
..()
sleep(2)
new /obj/item/weapon/storage/box/pillbottles(src)
new /obj/item/weapon/storage/box/pillbottles(src)
return
/obj/structure/closet/secure_closet/medical_wall
name = "first aid closet"
@@ -266,12 +249,10 @@
New()
..()
sleep(2)
new /obj/item/clothing/suit/space/eva/paramedic(src)
new /obj/item/clothing/head/helmet/space/eva/paramedic(src)
new /obj/item/clothing/head/helmet/space/eva/paramedic(src)
new /obj/item/device/sensor_device(src)
return
/obj/structure/closet/secure_closet/reagents
name = "chemical storage closet"
@@ -287,11 +268,9 @@
New()
..()
sleep(2)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/phenol(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/ammonia(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/oil(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acetone(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acid(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine(src)
return
@@ -6,15 +6,13 @@
/obj/structure/closet/secure_closet/personal/New()
..()
spawn(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/duffel(src)
if(prob(50))
new /obj/item/weapon/storage/backpack(src)
else
new /obj/item/weapon/storage/backpack/satchel_norm(src)
new /obj/item/device/radio/headset( src )
return
if(prob(50))
new /obj/item/weapon/storage/backpack/duffel(src)
if(prob(50))
new /obj/item/weapon/storage/backpack(src)
else
new /obj/item/weapon/storage/backpack/satchel_norm(src)
new /obj/item/device/radio/headset( src )
/obj/structure/closet/secure_closet/personal/patient
@@ -22,11 +20,9 @@
/obj/structure/closet/secure_closet/personal/patient/New()
..()
spawn(4)
contents = list()
new /obj/item/clothing/under/color/white( src )
new /obj/item/clothing/shoes/white( src )
return
contents.Cut()
new /obj/item/clothing/under/color/white( src )
new /obj/item/clothing/shoes/white( src )
@@ -52,11 +48,9 @@
/obj/structure/closet/secure_closet/personal/cabinet/New()
..()
spawn(4)
contents = list()
new /obj/item/weapon/storage/backpack/satchel/withwallet( src )
new /obj/item/device/radio/headset( src )
return
contents.Cut()
new /obj/item/weapon/storage/backpack/satchel/withwallet( src )
new /obj/item/device/radio/headset( src )
/obj/structure/closet/secure_closet/personal/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if (src.opened)
@@ -91,4 +85,3 @@
emag_act(user)
else
to_chat(user, "\red Access Denied")
return
@@ -10,7 +10,6 @@
New()
..()
sleep(2)
new /obj/item/weapon/storage/backpack/science(src)
new /obj/item/weapon/storage/backpack/satchel_tox(src)
new /obj/item/clothing/under/rank/scientist(src)
@@ -22,7 +21,6 @@
new /obj/item/weapon/tank/air(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/shoes/sandal/white(src)
return
@@ -38,7 +36,6 @@
New()
..()
sleep(2)
new /obj/item/clothing/suit/bio_suit/scientist(src)
new /obj/item/clothing/head/bio_hood/scientist(src)
new /obj/item/clothing/under/rank/research_director(src)
@@ -52,7 +49,6 @@
new /obj/item/clothing/suit/armor/reactive(src)
new /obj/item/device/flash(src)
new /obj/item/device/laser_pointer(src)
return
/obj/structure/closet/secure_closet/research_reagents
name = "research chemical storage closet"
@@ -68,7 +64,6 @@
New()
..()
sleep(2)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
@@ -82,5 +77,4 @@
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/oil(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acetone(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acid(src)
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine(src)
return
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine(src)
@@ -10,7 +10,6 @@
New()
..()
sleep(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/captain(src)
else
@@ -27,7 +26,6 @@
new /obj/item/device/radio/headset/heads/captain/alt(src)
new /obj/item/clothing/gloves/color/captain(src)
new /obj/item/weapon/gun/energy/gun(src)
return
@@ -43,7 +41,6 @@
New()
..()
sleep(2)
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/head/hopcap(src)
new /obj/item/weapon/cartridge/hop(src)
@@ -55,7 +52,6 @@
new /obj/item/device/flash(src)
new /obj/item/weapon/mining_voucher(src)
new /obj/item/clothing/accessory/petcollar(src)
return
/obj/structure/closet/secure_closet/hop2
name = "head of personnel's attire"
@@ -69,7 +65,6 @@
New()
..()
sleep(2)
new /obj/item/clothing/under/rank/head_of_personnel(src)
new /obj/item/clothing/under/dress/dress_hop(src)
new /obj/item/clothing/under/dress/dress_hr(src)
@@ -82,7 +77,6 @@
new /obj/item/clothing/shoes/leather(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/under/rank/head_of_personnel_whimsy(src)
return
@@ -98,7 +92,6 @@
New()
..()
sleep(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/security(src)
else
@@ -121,7 +114,6 @@
new /obj/item/weapon/storage/belt/security/sec(src)
new /obj/item/taperoll/police(src)
new /obj/item/weapon/gun/energy/hos(src)
return
@@ -138,7 +130,6 @@
New()
..()
sleep(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/security(src)
else
@@ -161,7 +152,6 @@
new /obj/item/weapon/gun/energy/advtaser(src)
new /obj/item/weapon/storage/belt/security/sec(src)
new /obj/item/weapon/storage/box/holobadge(src)
return
@@ -177,7 +167,6 @@
New()
..()
sleep(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/security(src)
else
@@ -194,7 +183,6 @@
new /obj/item/clothing/head/helmet(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/taperoll/police(src)
return
/obj/structure/closet/secure_closet/brigdoc
name = "brig physician's locker"
@@ -208,7 +196,6 @@
New()
..()
sleep(2)
if(prob(50))
new /obj/item/weapon/storage/backpack/medic(src)
else
@@ -225,7 +212,6 @@
new /obj/item/clothing/shoes/white(src)
new /obj/item/device/radio/headset/headset_sec/alt(src)
new /obj/item/clothing/shoes/sandal/white(src)
return
/obj/structure/closet/secure_closet/blueshield
name = "blueshield's locker"
@@ -239,7 +225,6 @@
New()
..()
sleep(2)
new /obj/item/weapon/storage/briefcase(src)
new /obj/item/weapon/storage/firstaid/adv(src)
new /obj/item/weapon/storage/belt/security/sec(src)
@@ -257,7 +242,6 @@
new /obj/item/clothing/accessory/holster(src)
new /obj/item/clothing/accessory/blue(src)
new /obj/item/clothing/shoes/jackboots/jacksandals(src)
return
/obj/structure/closet/secure_closet/ntrep
name = "\improper Nanotrasen Representative's locker"
@@ -271,7 +255,6 @@
New()
..()
sleep(2)
new /obj/item/weapon/storage/briefcase(src)
new /obj/item/device/paicard(src)
new /obj/item/device/flash(src)
@@ -283,7 +266,6 @@
new /obj/item/clothing/under/lawyer/female(src)
new /obj/item/clothing/head/ntrep(src)
new /obj/item/clothing/shoes/sandal/fancy(src)
return
/obj/structure/closet/secure_closet/security/cargo
@@ -292,7 +274,6 @@
..()
new /obj/item/clothing/accessory/armband/cargo(src)
new /obj/item/device/encryptionkey/headset_cargo(src)
return
/obj/structure/closet/secure_closet/security/engine
@@ -300,7 +281,6 @@
..()
new /obj/item/clothing/accessory/armband/engine(src)
new /obj/item/device/encryptionkey/headset_eng(src)
return
/obj/structure/closet/secure_closet/security/science
@@ -308,7 +288,6 @@
..()
new /obj/item/clothing/accessory/armband/science(src)
new /obj/item/device/encryptionkey/headset_sci(src)
return
/obj/structure/closet/secure_closet/security/med
@@ -316,7 +295,6 @@
..()
new /obj/item/clothing/accessory/armband/medgreen(src)
new /obj/item/device/encryptionkey/headset_med(src)
return
/obj/structure/closet/secure_closet/detective
@@ -331,7 +309,6 @@
New()
..()
sleep(2)
new /obj/item/clothing/under/det(src)
new /obj/item/clothing/suit/storage/det_suit(src)
new /obj/item/clothing/suit/storage/forensics/blue(src)
@@ -351,7 +328,6 @@
new /obj/item/clothing/accessory/holster/armpit(src)
new /obj/item/clothing/glasses/sunglasses/yeah(src)
new /obj/item/device/flashlight/seclite(src)
return
/obj/structure/closet/secure_closet/detective/update_icon()
if(broken)
@@ -372,10 +348,8 @@
New()
..()
sleep(2)
new /obj/item/weapon/reagent_containers/ld50_syringe/lethal(src)
new /obj/item/weapon/reagent_containers/ld50_syringe/lethal(src)
return
@@ -386,9 +360,9 @@
var/id = null
New()
..()
new /obj/item/clothing/under/color/orange/prison( src )
new /obj/item/clothing/shoes/orange( src )
return
@@ -398,7 +372,6 @@
New()
..()
sleep(2)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/weapon/paper/Court (src)
new /obj/item/weapon/paper/Court (src)
@@ -407,7 +380,6 @@
new /obj/item/clothing/suit/judgerobe (src)
new /obj/item/clothing/head/powdered_wig (src)
new /obj/item/weapon/storage/briefcase(src)
return
/obj/structure/closet/secure_closet/wall
name = "wall locker"
@@ -108,8 +108,6 @@
health -= Proj.damage
check_health()
return
/obj/structure/closet/statue/attack_animal(mob/living/simple_animal/user as mob)
if(user.environment_smash)
for(var/mob/M in src)
@@ -11,7 +11,6 @@
/obj/structure/closet/syndicate/personal/New()
..()
sleep(2)
new /obj/item/clothing/under/syndicate(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/ammo_box/magazine/m10mm(src)
@@ -24,7 +23,6 @@
/obj/structure/closet/syndicate/suits/New()
..()
sleep(2)
new /obj/item/clothing/head/helmet/space/rig/syndi(src)
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/clothing/suit/space/rig/syndi(src)
@@ -35,7 +33,6 @@
/obj/structure/closet/syndicate/nuclear/New()
..()
sleep(2)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
@@ -55,7 +52,6 @@
new /obj/item/weapon/pinpointer/nukeop(src)
new /obj/item/weapon/pinpointer/nukeop(src)
new /obj/item/device/pda/syndicate(src)
return
/obj/structure/closet/syndicate/resources/
desc = "An old, dusty locker."
@@ -67,9 +63,6 @@
var/rare_min = 5 //Minimum HONK of HONK in the stack HONK HONK rare minerals
var/rare_max = 20 //Maximum HONK HONK HONK in the HONK for HONK rare HONK
sleep(2)
var/pickednum = rand(1, 50)
//Sad trombone
@@ -114,12 +107,11 @@
if(pickednum == 50)
new /obj/item/weapon/tank/jetpack/carbondioxide(src)
return
/obj/structure/closet/syndicate/resources/everything
desc = "It's an emergency storage closet for repairs."
New()
..()
var/list/resources = list(
/obj/item/stack/sheet/metal,
/obj/item/stack/sheet/glass,
@@ -133,11 +125,7 @@
/obj/item/stack/rods
)
sleep(2)
for(var/i = 0, i<2, i++)
for(var/i in 1 to 2)
for(var/res in resources)
var/obj/item/stack/R = new res(src)
R.amount = R.max_amount
return
R.amount = R.max_amount
@@ -80,8 +80,7 @@
/obj/structure/closet/firecloset/full/New()
..()
sleep(4)
contents = list()
contents.Cut()
new /obj/item/clothing/suit/fire/firefighter(src)
new /obj/item/clothing/mask/gas(src)
@@ -167,7 +166,6 @@
/obj/structure/closet/bombcloset/New()
..()
sleep(2)
new /obj/item/clothing/suit/bomb_suit( src )
new /obj/item/clothing/under/color/black( src )
new /obj/item/clothing/shoes/black( src )
@@ -183,7 +181,6 @@
/obj/structure/closet/bombclosetsecurity/New()
..()
sleep(2)
new /obj/item/clothing/suit/bomb_suit/security( src )
new /obj/item/clothing/under/rank/security( src )
new /obj/item/clothing/shoes/brown( src )
@@ -204,7 +201,6 @@
/obj/structure/closet/hydrant/New()
..()
sleep(2)
new /obj/item/clothing/suit/fire/firefighter(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/device/flashlight(src)
@@ -9,7 +9,6 @@
/obj/structure/closet/wardrobe/generic/New()
..()
sleep(2)
new /obj/item/clothing/under/color/blue(src)
new /obj/item/clothing/under/color/blue(src)
new /obj/item/clothing/under/color/blue(src)
@@ -19,7 +18,6 @@
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/brown(src)
return
/obj/structure/closet/wardrobe/red
@@ -29,7 +27,6 @@
/obj/structure/closet/wardrobe/red/New()
..()
sleep(2)
new /obj/item/weapon/storage/backpack/duffel/security(src)
new /obj/item/weapon/storage/backpack/duffel/security(src)
new /obj/item/clothing/mask/bandana/red(src)
@@ -54,8 +51,6 @@
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/beret/sec(src)
return
/obj/structure/closet/redcorp
name = "corporate security wardrobe"
icon_state = "red"
@@ -63,7 +58,6 @@
/obj/structure/closet/redcorp/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/security/corp(src)
new /obj/item/clothing/under/rank/security/corp(src)
new /obj/item/clothing/under/rank/security/corp(src)
@@ -78,14 +72,12 @@
/obj/structure/closet/wardrobe/pink/New()
..()
sleep(2)
new /obj/item/clothing/under/color/pink(src)
new /obj/item/clothing/under/color/pink(src)
new /obj/item/clothing/under/color/pink(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/brown(src)
return
/obj/structure/closet/wardrobe/black
name = "black wardrobe"
@@ -94,7 +86,6 @@
/obj/structure/closet/wardrobe/black/New()
..()
sleep(2)
new /obj/item/clothing/under/color/black(src)
new /obj/item/clothing/under/color/black(src)
new /obj/item/clothing/under/color/black(src)
@@ -109,7 +100,6 @@
new /obj/item/clothing/head/soft/black(src)
new /obj/item/clothing/head/soft/black(src)
new /obj/item/clothing/head/soft/black(src)
return
/obj/structure/closet/wardrobe/green
name = "green wardrobe"
@@ -118,14 +108,12 @@
/obj/structure/closet/wardrobe/green/New()
..()
sleep(2)
new /obj/item/clothing/under/color/green(src)
new /obj/item/clothing/under/color/green(src)
new /obj/item/clothing/under/color/green(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
return
/obj/structure/closet/wardrobe/xenos
name = "xenos wardrobe"
@@ -134,13 +122,11 @@
/obj/structure/closet/wardrobe/xenos/New()
..()
sleep(2)
new /obj/item/clothing/suit/unathi/mantle(src)
new /obj/item/clothing/suit/unathi/robe(src)
new /obj/item/clothing/shoes/sandal(src)
new /obj/item/clothing/shoes/sandal(src)
new /obj/item/clothing/shoes/sandal(src)
return
/obj/structure/closet/wardrobe/orange
@@ -151,14 +137,12 @@
/obj/structure/closet/wardrobe/orange/New()
..()
sleep(2)
new /obj/item/clothing/under/color/orange/prison(src)
new /obj/item/clothing/under/color/orange/prison(src)
new /obj/item/clothing/under/color/orange/prison(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
return
/obj/structure/closet/wardrobe/yellow
@@ -168,14 +152,12 @@
/obj/structure/closet/wardrobe/yellow/New()
..()
sleep(2)
new /obj/item/clothing/under/color/yellow(src)
new /obj/item/clothing/under/color/yellow(src)
new /obj/item/clothing/under/color/yellow(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
return
/obj/structure/closet/wardrobe/atmospherics_yellow
@@ -185,7 +167,6 @@
/obj/structure/closet/wardrobe/atmospherics_yellow/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
@@ -198,7 +179,6 @@
new /obj/item/clothing/head/beret/atmos(src)
new /obj/item/clothing/head/beret/atmos(src)
new /obj/item/clothing/head/beret/atmos(src)
return
@@ -209,7 +189,6 @@
/obj/structure/closet/wardrobe/engineering_yellow/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/engineer(src)
new /obj/item/clothing/under/rank/engineer(src)
new /obj/item/clothing/under/rank/engineer(src)
@@ -222,7 +201,6 @@
new /obj/item/clothing/head/beret/eng(src)
new /obj/item/clothing/head/beret/eng(src)
new /obj/item/clothing/head/beret/eng(src)
return
/obj/structure/closet/wardrobe/white
@@ -232,14 +210,12 @@
/obj/structure/closet/wardrobe/white/New()
..()
sleep(2)
new /obj/item/clothing/under/color/white(src)
new /obj/item/clothing/under/color/white(src)
new /obj/item/clothing/under/color/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
return
/obj/structure/closet/wardrobe/medical_white
name = "medical doctor's wardrobe"
@@ -248,7 +224,6 @@
/obj/structure/closet/wardrobe/medical_white/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/nursesuit (src)
new /obj/item/clothing/head/nursehat (src)
new /obj/item/clothing/under/rank/nurse(src)
@@ -265,7 +240,6 @@
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
return
/obj/structure/closet/wardrobe/pjs
name = "Pajama wardrobe"
@@ -274,7 +248,6 @@
/obj/structure/closet/wardrobe/pjs/New()
..()
sleep(2)
new /obj/item/clothing/under/pj/red(src)
new /obj/item/clothing/under/pj/red(src)
new /obj/item/clothing/under/pj/blue(src)
@@ -283,7 +256,6 @@
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/slippers(src)
new /obj/item/clothing/shoes/slippers(src)
return
/obj/structure/closet/wardrobe/toxins_white
@@ -293,7 +265,6 @@
/obj/structure/closet/wardrobe/toxins_white/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/under/rank/scientist(src)
@@ -306,7 +277,6 @@
new /obj/item/clothing/shoes/slippers
new /obj/item/clothing/shoes/slippers
new /obj/item/clothing/shoes/slippers
return
/obj/structure/closet/wardrobe/robotics_black
@@ -316,7 +286,6 @@
/obj/structure/closet/wardrobe/robotics_black/New()
..()
sleep(2)
new /obj/item/clothing/glasses/hud/diagnostic(src)
new /obj/item/clothing/glasses/hud/diagnostic(src)
new /obj/item/clothing/under/rank/roboticist(src)
@@ -329,7 +298,6 @@
new /obj/item/clothing/gloves/fingerless(src)
new /obj/item/clothing/head/soft/black(src)
new /obj/item/clothing/head/soft/black(src)
return
/obj/structure/closet/wardrobe/chemistry_white
@@ -339,7 +307,6 @@
/obj/structure/closet/wardrobe/chemistry_white/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/chemist(src)
new /obj/item/clothing/under/rank/chemist(src)
new /obj/item/clothing/shoes/white(src)
@@ -354,7 +321,6 @@
new /obj/item/weapon/storage/bag/chemistry(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/mask/gas(src)
return
/obj/structure/closet/wardrobe/genetics_white
@@ -364,7 +330,6 @@
/obj/structure/closet/wardrobe/genetics_white/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/geneticist(src)
new /obj/item/clothing/under/rank/geneticist(src)
new /obj/item/clothing/shoes/white(src)
@@ -375,7 +340,6 @@
new /obj/item/weapon/storage/backpack/genetics(src)
new /obj/item/weapon/storage/backpack/satchel_gen(src)
new /obj/item/weapon/storage/backpack/satchel_gen(src)
return
/obj/structure/closet/wardrobe/virology_white
@@ -385,7 +349,6 @@
/obj/structure/closet/wardrobe/virology_white/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/virologist(src)
new /obj/item/clothing/under/rank/virologist(src)
new /obj/item/clothing/shoes/white(src)
@@ -398,7 +361,6 @@
new /obj/item/weapon/storage/backpack/virology(src)
new /obj/item/weapon/storage/backpack/satchel_vir(src)
new /obj/item/weapon/storage/backpack/satchel_vir(src)
return
/obj/structure/closet/wardrobe/medic_white
@@ -408,7 +370,6 @@
/obj/structure/closet/wardrobe/medic_white/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical/blue(src)
@@ -420,7 +381,6 @@
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
return
/obj/structure/closet/wardrobe/grey
@@ -430,7 +390,6 @@
/obj/structure/closet/wardrobe/grey/New()
..()
sleep(2)
new /obj/item/clothing/under/color/grey(src)
new /obj/item/clothing/under/color/grey(src)
new /obj/item/clothing/under/color/grey(src)
@@ -446,7 +405,6 @@
new /obj/item/clothing/under/assistantformal(src)
if(prob(40))
new /obj/item/clothing/under/assistantformal(src)
return
/obj/structure/closet/wardrobe/mixed
@@ -456,7 +414,6 @@
/obj/structure/closet/wardrobe/mixed/New()
..()
sleep(2)
new /obj/item/clothing/under/color/blue(src)
new /obj/item/clothing/under/color/yellow(src)
new /obj/item/clothing/under/color/green(src)
@@ -471,4 +428,3 @@
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/purple(src)
new /obj/item/clothing/shoes/leather(src)
return
@@ -212,7 +212,6 @@
return
src.add_fingerprint(user)
src.toggle(user)
return
// Called when a crate is delivered by MULE at a location, for notifying purposes
/obj/structure/closet/crate/proc/notifyRecipient(var/destination)
@@ -317,7 +316,6 @@
src.broken = 1
update_icon()
to_chat(user, "<span class='notice'>You unlock \the [src].</span>")
return
/obj/structure/closet/crate/secure/emp_act(severity)
for(var/obj/O in src)
@@ -513,7 +511,6 @@
if(!M.anchored)
M.forceMove(src)
break
return
/obj/structure/closet/crate/secure/large
name = "large crate"
@@ -541,7 +538,6 @@
if(!M.anchored)
M.forceMove(src)
break
return
//fluff variant
/obj/structure/closet/crate/secure/large/reinforced
@@ -274,3 +274,12 @@
mineral = "metal"
walltype = "iron"
canSmoothWith = list(/obj/structure/falsewall/iron, /turf/simulated/wall/mineral/iron)
/obj/structure/falsewall/abductor
name = "alien wall"
desc = "A wall with alien alloy plating."
icon = 'icons/turf/walls/abductor_wall.dmi'
icon_state = "abductor"
mineral = "abductor"
walltype = "abductor"
canSmoothWith = list(/obj/structure/falsewall/abductor, /turf/simulated/wall/mineral/abductor)
+11 -5
View File
@@ -89,12 +89,18 @@
health = 160
reinf = 1
New()
..()
color = null
/obj/structure/window/full/shuttle/New()
..()
color = null
update_icon() //icon_state has to be set manually
return
/obj/structure/window/full/shuttle/update_icon() //icon_state has to be set manually
return
/obj/structure/window/full/shuttle/shuttleRotate(rotation)
..()
var/matrix/M = transform
M.Turn(rotation)
transform = M
/obj/structure/window/full/shuttle/dark
icon = 'icons/turf/shuttle.dmi'
+1 -8
View File
@@ -10,13 +10,6 @@
var/planchette = "A"
var/lastuser = null
/obj/structure/spirit_board/proc/announce_to_ghosts()
for(var/mob/dead/observer/O in player_list)
if(O.client)
var/area/A = get_area(src)
if(A)
to_chat(O, "\blue <b>Someone has begun playing with a [src.name] in [A.name]!. (<a href='?src=\ref[O];jump=\ref[src]'>Teleport</a>)</b>")
/obj/structure/spirit_board/examine(mob/user)
..(user)
to_chat(user, "[initial(desc)] The planchette is sitting at \"[planchette]\".")
@@ -37,7 +30,7 @@
if(virgin)
virgin = 0
announce_to_ghosts()
notify_ghosts("Someone has begun playing with a [src.name] in [get_area(src)]!", source = src)
planchette = input("Choose the letter.", "Seance!") in list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
add_logs(M, src, "picked a letter on", addition="which was \"[planchette]\".")
+6
View File
@@ -2,6 +2,12 @@
name = "shuttle"
icon = 'icons/turf/shuttle.dmi'
/obj/structure/shuttle/shuttleRotate(rotation)
..()
var/matrix/M = transform
M.Turn(rotation)
transform = M
/obj/structure/shuttle/window
name = "shuttle window"
icon = 'icons/obj/podwindows.dmi'
@@ -0,0 +1,48 @@
/turf/simulated/floor/mineral
name = "mineral floor"
icon_state = ""
var/list/icons = list()
/turf/simulated/floor/mineral/New()
..()
broken_states = list("[initial(icon_state)]_dam")
/turf/simulated/floor/mineral/update_icon()
if(!..())
return 0
if(!broken && !burnt)
if( !(icon_state in icons) )
icon_state = initial(icon_state)
// ALIEN ALLOY
/turf/simulated/floor/mineral/abductor
name = "alien floor"
icon_state = "alienpod1"
floor_tile = /obj/item/stack/tile/mineral/abductor
icons = list("alienpod1", "alienpod2", "alienpod3", "alienpod4", "alienpod5", "alienpod6", "alienpod7", "alienpod8", "alienpod9")
/turf/simulated/floor/mineral/New()
..()
icon_state = "alienpod[rand(1,9)]"
/turf/simulated/floor/mineral/break_tile()
return //unbreakable
/turf/simulated/floor/mineral/abductor/burn_tile()
return //unburnable
/turf/simulated/floor/mineral/abductor/make_plating()
return ChangeTurf(/turf/simulated/floor/plating/abductor2)
/turf/simulated/floor/plating/abductor2
name = "alien plating"
icon_state = "alienplating"
/turf/simulated/floor/plating/abductor2/break_tile()
return //unbreakable
/turf/simulated/floor/plating/abductor2/burn_tile()
return //unburnable
+9 -1
View File
@@ -292,4 +292,12 @@
/turf/simulated/floor/plasteel/airless/New()
..()
name = "floor"
name = "floor"
/turf/simulated/floor/plating/abductor
name = "alien floor"
icon_state = "alienpod1"
/turf/simulated/floor/plating/abductor/New()
..()
icon_state = "alienpod[rand(1,9)]"
+2 -1
View File
@@ -36,7 +36,8 @@
T.transform = transform
//why don't shuttle walls habe smoothwall? now i gotta do rotation the dirty way
/turf/simulated/shuttle/wall/shuttleRotate(rotation)
/turf/simulated/shuttle/shuttleRotate(rotation)
..()
var/matrix/M = transform
M.Turn(rotation)
transform = M
+11 -1
View File
@@ -175,4 +175,14 @@
icon_state = "iron"
walltype = "iron"
mineral = "rods"
canSmoothWith = list(/turf/simulated/wall/mineral/iron, /obj/structure/falsewall/iron)
canSmoothWith = list(/turf/simulated/wall/mineral/iron, /obj/structure/falsewall/iron)
/turf/simulated/wall/mineral/abductor
name = "alien wall"
desc = "A wall with alien alloy plating."
icon = 'icons/turf/walls/abductor_wall.dmi'
icon_state = "abductor"
walltype = "abductor"
mineral = "abductor"
explosion_block = 3
canSmoothWith = list(/turf/simulated/wall/mineral/abductor, /obj/structure/falsewall/abductor)
+9 -1
View File
@@ -27,4 +27,12 @@
/turf/unsimulated/floor/chasm/New()
spawn(1)
smooth_icon(src)
smooth_icon_neighbors(src)
smooth_icon_neighbors(src)
/turf/unsimulated/floor/abductor
name = "alien floor"
icon_state = "alienpod1"
/turf/unsimulated/floor/abductor/New()
..()
icon_state = "alienpod[rand(1,9)]"
+5 -1
View File
@@ -23,4 +23,8 @@ turf/unsimulated/wall/splashscreen
layer = FLY_LAYER
/turf/unsimulated/wall/other
icon_state = "r_wall"
icon_state = "r_wall"
/turf/unsimulated/wall/abductor
icon_state = "alien1"
explosion_block = 50
+11 -16
View File
@@ -713,23 +713,18 @@
set category = "Spacepod"
set src = usr.loc
var/list/pod_door_types = list(/obj/machinery/door/poddoor/two_tile_hor/, /obj/machinery/door/poddoor/two_tile_ver/, \
/obj/machinery/door/poddoor/three_tile_hor, /obj/machinery/door/poddoor/three_tile_ver, \
/obj/machinery/door/poddoor/four_tile_hor, /obj/machinery/door/poddoor/four_tile_ver)
if(CheckIfOccupant2(usr)) return
for(var/obj/machinery/door/poddoor/P in orange(3,src))
if(is_type_in_list(P,pod_door_types))
var/mob/living/carbon/human/L = usr
if(P.check_access(L.get_active_hand()) || P.check_access(L.wear_id))
if(P.density)
P.open()
return 1
else
P.close()
return 1
to_chat(usr, "<span class='warning'>Access denied.</span>")
return
for(var/obj/machinery/door/poddoor/multi_tile/P in orange(3,src))
var/mob/living/carbon/human/L = usr
if(P.check_access(L.get_active_hand()) || P.check_access(L.wear_id))
if(P.density)
P.open()
return 1
else
P.close()
return 1
to_chat(usr, "<span class='warning'>Access denied.</span>")
return
to_chat(usr, "<span class='warning'>You are not close to any pod doors.</span>")
return
+4
View File
@@ -749,6 +749,10 @@ var/global/nologevent = 0
if (ticker.mode.config_tag == "changeling")
return 2
return 1
if(M.mind in ticker.mode.abductors)
if (ticker.mode.config_tag == "abduction")
return 2
return 1
if(isrobot(M))
var/mob/living/silicon/robot/R = M
if(R.emagged)
+6
View File
@@ -515,6 +515,12 @@
if(ticker.mode.shadowling_thralls.len)
dat += check_role_table("Shadowling Thralls", ticker.mode.shadowling_thralls, src)
if(ticker.mode.abductors.len)
dat += check_role_table("Abductors", ticker.mode.abductors, src)
if(ticker.mode.abductees.len)
dat += check_role_table("Abductees", ticker.mode.abductees, src)
if(ticker.mode.vampires.len)
dat += check_role_table("Vampires", ticker.mode.vampires, src)
+4
View File
@@ -63,6 +63,10 @@
log_admin("[key_name(usr)] has spawned vox raiders.")
if(!src.makeVoxRaiders())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
if("9")
log_admin("[key_name(usr)] has spawned an abductor team.")
if(!src.makeAbductorTeam())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"])
var/adminckey = href_list["dbsearchadmin"]
-2
View File
@@ -682,7 +682,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/cloaking_device(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/proto(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store)
@@ -814,7 +813,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wcoat(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/saber(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/cloaking_device(M), slot_r_store)
var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M)
for(var/obj/item/briefcase_item in sec_briefcase)

Some files were not shown because too many files have changed in this diff Show More