diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm index ed87bda5846..f5fd004225f 100644 --- a/_maps/map_files/MetaStation/z2.dmm +++ b/_maps/map_files/MetaStation/z2.dmm @@ -882,36 +882,63 @@ "qX" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/holding) "qY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "qZ" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding) -"ra" = (/turf/unsimulated/wall/vault,/area/abductor_ship) -"rb" = (/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rc" = (/obj/effect/landmark/abductor/console,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rd" = (/obj/effect/landmark/abductor/console{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"re" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/obj/item/weapon/paper/abductor,/obj/item/weapon/scalpel/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rf" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rg" = (/obj/structure/table,/obj/item/weapon/retractor/alien,/obj/item/weapon/hemostat/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rh" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"ri" = (/obj/structure/optable,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rj" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rk" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rl" = (/obj/effect/landmark/abductor/agent{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rm" = (/obj/structure/table,/obj/item/weapon/cautery,/obj/item/weapon/surgical_drapes,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rn" = (/obj/machinery/abductor/experiment{team = 1},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"ro" = (/obj/effect/landmark/abductor/console{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rp" = (/obj/effect/landmark/abductor/console{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rq" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rr" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rs" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rt" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"ru" = (/obj/machinery/abductor/pad{team = 1},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rv" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rw" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rx" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"ry" = (/obj/structure/rack,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rz" = (/obj/machinery/computer/security{name = "Human Observation Console"; network = list("SS13","Abductor")},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rA" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rB" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rC" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"rD" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) +"ra" = (/turf/unsimulated/wall/abductor{icon_state = "alien21"},/area/abductor_ship) +"rb" = (/turf/unsimulated/wall/abductor{icon_state = "alien20"},/area/abductor_ship) +"rc" = (/turf/unsimulated/wall/abductor{icon_state = "alien23"},/area/abductor_ship) +"rd" = (/turf/unsimulated/wall/abductor{icon_state = "alien22"},/area/abductor_ship) +"re" = (/turf/unsimulated/wall/abductor{icon_state = "alien24"},/area/abductor_ship) +"rf" = (/turf/unsimulated/wall/abductor{icon_state = "alien16"},/area/abductor_ship) +"rg" = (/obj/machinery/abductor/experiment{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rh" = (/turf/unsimulated/wall/abductor{icon_state = "alien17"},/area/abductor_ship) +"ri" = (/obj/machinery/abductor/pad{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rj" = (/obj/effect/landmark/abductor/console,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rk" = (/turf/unsimulated/wall/abductor{icon_state = "alien19"},/area/abductor_ship) +"rl" = (/turf/unsimulated/wall/abductor{icon_state = "alien18"},/area/abductor_ship) +"rm" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rn" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"ro" = (/obj/effect/landmark/abductor/console{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rp" = (/turf/unsimulated/wall/abductor{icon_state = "alien14"},/area/abductor_ship) +"rq" = (/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rr" = (/obj/machinery/computer/camera_advanced/abductor{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rs" = (/turf/unsimulated/wall/abductor{icon_state = "alien15"},/area/abductor_ship) +"rt" = (/obj/structure/closet/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"ru" = (/obj/machinery/computer/camera_advanced/abductor{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rv" = (/turf/unsimulated/wall/abductor{icon_state = "alien12"},/area/abductor_ship) +"rw" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rx" = (/obj/item/weapon/retractor/alien,/obj/item/weapon/hemostat/alien,/obj/structure/table/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"ry" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rz" = (/obj/structure/optable/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rA" = (/turf/unsimulated/wall/abductor{icon_state = "alien13"},/area/abductor_ship) +"rB" = (/obj/item/weapon/storage/box/handcuffs,/obj/structure/table/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rC" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rD" = (/obj/effect/landmark/abductor/agent{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rE" = (/turf/unsimulated/wall/abductor{icon_state = "alien10"},/area/abductor_ship) +"rF" = (/obj/item/weapon/surgical_drapes,/obj/item/weapon/paper/abductor,/obj/item/weapon/scalpel/alien,/obj/structure/table/abductor,/obj/item/weapon/cautery/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rG" = (/turf/unsimulated/wall/abductor{icon_state = "alien11"},/area/abductor_ship) +"rH" = (/turf/unsimulated/wall/abductor{icon_state = "alien6"},/area/abductor_ship) +"rI" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rJ" = (/turf/unsimulated/wall/abductor{icon_state = "alien7"},/area/abductor_ship) +"rK" = (/obj/structure/stool/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rL" = (/obj/structure/table/abductor,/obj/item/weapon/surgicaldrill/alien,/obj/item/weapon/circular_saw/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rM" = (/turf/unsimulated/wall/abductor{icon_state = "alien9"},/area/abductor_ship) +"rN" = (/turf/unsimulated/wall/abductor{icon_state = "alien8"},/area/abductor_ship) +"rO" = (/turf/unsimulated/wall/abductor{icon_state = "alien2"},/area/abductor_ship) +"rP" = (/turf/unsimulated/wall/abductor,/area/abductor_ship) +"rQ" = (/turf/unsimulated/wall/abductor{icon_state = "alien4"},/area/abductor_ship) +"rR" = (/turf/unsimulated/wall/abductor{icon_state = "alien3"},/area/abductor_ship) +"rS" = (/turf/unsimulated/wall/abductor{icon_state = "alien5"},/area/abductor_ship) +"rT" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rU" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rV" = (/obj/effect/landmark/abductor/console{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rW" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rX" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rY" = (/obj/effect/landmark/abductor/console{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rZ" = (/obj/machinery/computer/camera_advanced/abductor{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"sa" = (/obj/machinery/computer/camera_advanced/abductor{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"sb" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"sc" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"sd" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"se" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababadaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeag @@ -1127,24 +1154,24 @@ abababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararararaabababrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarararararnrcruraraabrararvrdrwrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarxryrarbrbrbrbreraabrarerbrbrbrbrarxryraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarbrbrarjrfrzrhrgraabrargrkrzrlrjrarbrbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarbrbrbrbrbrbrbrmraabrarmrbrbrbrbrbrbrbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarararararbrirbraraabrararbrirbrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararararaabababrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrbrardrcreabababrbrardrcreababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrfrhrgrjrirlrkabrfrhrmrornrlrkabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrprrrqrqrqrtrsabrprurqrqrqrtrsabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrvrxrwrzryrBrAabrvrxrCrzrDrBrAabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrErFrqrqrqrtrGabrErFrqrqrqrtrGabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrHrJrIrLrKrNrMabrHrJrIrLrKrNrMabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrPrOrRrQrSabababrPrOrRrQrSababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrbrardrcreabababrbrardrcreababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrfrhrTrVrUrlrkabrfrhrWrYrXrlrkabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrprZrqrqrqrtrsabrpsarqrqrqrtrsabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrvrxsbrzscrBrAabrvrxsdrzserBrAabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrErFrqrqrqrtrGabrErFrqrqrqrtrGabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrHrJrIrLrKrNrMabrHrJrIrLrKrNrMabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrPrOrRrQrSabababrPrOrRrQrSababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararararaabababrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararArorBraraabrararCrprDraraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarerbrbrbrbraabrarerbrbrbrbraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrargrqrzrrrjraabrargrsrzrtrjraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarmrbrbrbrbraabrarmrbrbrbrbraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararbrirbraraabrararbrirbraraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarararbraabababrarararbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarxrbrbraabababrarxrbrbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababraryrbrbraabababraryrbrbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararararaabababrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm index 83e61cd5c85..c95ba677a27 100644 --- a/_maps/map_files/generic/z2.dmm +++ b/_maps/map_files/generic/z2.dmm @@ -834,36 +834,36 @@ "qb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "qc" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding) "qd" = (/obj/docking_port/stationary/transit{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship_transit"; width = 35},/turf/space/transit/horizontal,/area/space) -"qe" = (/turf/unsimulated/wall/vault,/area/abductor_ship) -"qf" = (/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qg" = (/obj/effect/landmark/abductor/console,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qh" = (/obj/structure/stool/bed/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qi" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qj" = (/obj/structure/table,/obj/item/weapon/retractor/alien,/obj/item/weapon/hemostat/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qk" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"ql" = (/obj/structure/optable,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qm" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qn" = (/obj/structure/rack,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qo" = (/obj/machinery/abductor/experiment{team = 1},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qp" = (/obj/effect/landmark/abductor/console{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qq" = (/obj/effect/landmark/abductor/console{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qr" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qs" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qt" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qu" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qv" = (/obj/effect/landmark/abductor/console{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qw" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qx" = (/obj/effect/landmark/abductor/agent{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qy" = (/obj/machinery/abductor/pad{team = 1},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qz" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qA" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qB" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qC" = (/obj/structure/closet/acloset,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) +"qe" = (/turf/unsimulated/wall/abductor{icon_state = "alien21"},/area/abductor_ship) +"qf" = (/turf/unsimulated/wall/abductor{icon_state = "alien20"},/area/abductor_ship) +"qg" = (/turf/unsimulated/wall/abductor{icon_state = "alien23"},/area/abductor_ship) +"qh" = (/turf/unsimulated/wall/abductor{icon_state = "alien22"},/area/abductor_ship) +"qi" = (/turf/unsimulated/wall/abductor{icon_state = "alien24"},/area/abductor_ship) +"qj" = (/turf/unsimulated/wall/abductor{icon_state = "alien16"},/area/abductor_ship) +"qk" = (/obj/machinery/abductor/experiment{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"ql" = (/turf/unsimulated/wall/abductor{icon_state = "alien17"},/area/abductor_ship) +"qm" = (/obj/machinery/abductor/pad{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qn" = (/obj/effect/landmark/abductor/console,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qo" = (/turf/unsimulated/wall/abductor{icon_state = "alien19"},/area/abductor_ship) +"qp" = (/turf/unsimulated/wall/abductor{icon_state = "alien18"},/area/abductor_ship) +"qq" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qr" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qs" = (/obj/effect/landmark/abductor/console{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qt" = (/turf/unsimulated/wall/abductor{icon_state = "alien14"},/area/abductor_ship) +"qu" = (/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qv" = (/obj/machinery/computer/camera_advanced/abductor{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qw" = (/turf/unsimulated/wall/abductor{icon_state = "alien15"},/area/abductor_ship) +"qx" = (/obj/structure/closet/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qy" = (/obj/machinery/computer/camera_advanced/abductor{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qz" = (/turf/unsimulated/wall/abductor{icon_state = "alien12"},/area/abductor_ship) +"qA" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qB" = (/obj/item/weapon/retractor/alien,/obj/item/weapon/hemostat/alien,/obj/structure/table/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qC" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/abductor,/area/abductor_ship) "qD" = (/obj/structure/stool,/turf/unsimulated/floor{icon_state = "neutral"; dir = 8},/area/tdome/tdomeobserve) -"qE" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qF" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qG" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"qH" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) +"qE" = (/obj/structure/optable/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qF" = (/turf/unsimulated/wall/abductor{icon_state = "alien13"},/area/abductor_ship) +"qG" = (/obj/item/weapon/storage/box/handcuffs,/obj/structure/table/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"qH" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) "qI" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome/tdomeobserve) "qJ" = (/obj/machinery/door/airlock/centcom{name = "Crate Storage"; req_access_txt = "106"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/suppy) "qK" = (/obj/structure/stool,/turf/unsimulated/floor{icon_state = "neutral"; dir = 4},/area/tdome/tdomeobserve) @@ -881,8 +881,34 @@ "qW" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/tdome/tdomeobserve) "qX" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses,/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome/tdomeobserve) "qY" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/tdome/tdomeobserve) -"qZ" = (/obj/machinery/computer/camera_advanced{name = "Human Observation Console"; networks = list("SS13","Abductor")},/turf/unsimulated/floor/bluegrid,/area/abductor_ship) -"ra" = (/obj/structure/table,/obj/item/weapon/cautery,/obj/item/weapon/surgical_drapes,/obj/item/weapon/paper/abductor,/obj/item/weapon/scalpel/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship) +"qZ" = (/obj/effect/landmark/abductor/agent{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"ra" = (/turf/unsimulated/wall/abductor{icon_state = "alien10"},/area/abductor_ship) +"rb" = (/obj/item/weapon/surgical_drapes,/obj/item/weapon/paper/abductor,/obj/item/weapon/scalpel/alien,/obj/structure/table/abductor,/obj/item/weapon/cautery/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rc" = (/turf/unsimulated/wall/abductor{icon_state = "alien11"},/area/abductor_ship) +"rd" = (/turf/unsimulated/wall/abductor{icon_state = "alien6"},/area/abductor_ship) +"re" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rf" = (/turf/unsimulated/wall/abductor{icon_state = "alien7"},/area/abductor_ship) +"rg" = (/obj/structure/stool/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rh" = (/obj/structure/table/abductor,/obj/item/weapon/surgicaldrill/alien,/obj/item/weapon/circular_saw/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"ri" = (/turf/unsimulated/wall/abductor{icon_state = "alien9"},/area/abductor_ship) +"rj" = (/turf/unsimulated/wall/abductor{icon_state = "alien8"},/area/abductor_ship) +"rk" = (/turf/unsimulated/wall/abductor{icon_state = "alien2"},/area/abductor_ship) +"rl" = (/turf/unsimulated/wall/abductor,/area/abductor_ship) +"rm" = (/turf/unsimulated/wall/abductor{icon_state = "alien4"},/area/abductor_ship) +"rn" = (/turf/unsimulated/wall/abductor{icon_state = "alien3"},/area/abductor_ship) +"ro" = (/turf/unsimulated/wall/abductor{icon_state = "alien5"},/area/abductor_ship) +"rp" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rq" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rr" = (/obj/effect/landmark/abductor/console{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rs" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rt" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"ru" = (/obj/effect/landmark/abductor/console{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rv" = (/obj/machinery/computer/camera_advanced/abductor{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rw" = (/obj/machinery/computer/camera_advanced/abductor{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rx" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"ry" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rz" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) +"rA" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababadaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeag @@ -1107,21 +1133,21 @@ abababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqeqeqeabababqeqeqeqeqeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqoqgqyqeqeabqeqeqzqvqAqeqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqZqfqfqfqCqeabqeqZqfqfqfqCqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqjqiqlqkqBqeabqeqjqwqlqxqBqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeraqfqfqfqCqeabqeraqfqfqfqCqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqmqnqhqeqeabqeqeqmqnqhqeqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqeqeqeabababqeqeqeqeqeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqfqeqhqgqiabababqfqeqhqgqiababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqjqlqkqnqmqpqoabqjqlqqqsqrqpqoabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqtqvquququqxqwabqtqyquququqxqwabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqzqBqAqEqCqGqFabqzqBqHqEqZqGqFabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarbquququqxrcabrarbquququqxrcabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrdrfrerhrgrjriabrdrfrerhrgrjriabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrlrkrnrmroabababrlrkrnrmroababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqeqeqeabababqeqeqeqeqeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqEqpqFqeqeabqeqeqGqqqHqeqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqZqfqfqfqCqeabqeqZqfqfqfqCqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqjqrqlqsqBqeabqeqjqtqlquqBqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeraqfqfqfqCqeabqeraqfqfqfqCqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqmqnqhqeqeabqeqeqmqnqhqeqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqeqeqeabababqeqeqeqeqeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqfqeqhqgqiabababqfqeqhqgqiababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqjqlrprrrqqpqoabqjqlrsrurtqpqoabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqtrvquququqxqwabqtrwquququqxqwabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqzqBrxqEryqGqFabqzqBrzqErAqGqFabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarbquququqxrcabrarbquququqxrcabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrdrfrerhrgrjriabrdrfrerhrgrjriabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrlrkrnrmroabababrlrkrnrmroababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 4598cd77308..8675d6cca0e 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -68,6 +68,7 @@ #define NOGUNS 512 #define NOBLOOD 1024 #define NOFIRE 2048 +#define VIRUSIMMUNE 4096 /* These defines are used specifically with the atom/movable/languages bitmask. diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 48abda03c83..952c22982ef 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -128,3 +128,9 @@ if(!CanContractDisease(D)) return 0 AddDisease(D) + + +/mob/living/carbon/human/CanContractDisease(var/datum/disease/D) + if(dna && VIRUSIMMUNE in dna.species.specflags) + return 0 + return ..() \ No newline at end of file diff --git a/code/game/gamemodes/abduction/abduction.dm b/code/game/gamemodes/abduction/abduction.dm index cd605c9e280..90b2deaa6a3 100644 --- a/code/game/gamemodes/abduction/abduction.dm +++ b/code/game/gamemodes/abduction/abduction.dm @@ -35,7 +35,7 @@ return 1 -/datum/game_mode/abduction/proc/make_abductor_team(var/team_number) +/datum/game_mode/abduction/proc/make_abductor_team(var/team_number,var/preset_agent=null,var/preset_scientist=null) //Team Name team_names[team_number] = "Mothership [pick(possible_changeling_IDs)]" //TODO Ensure unique and actual alieny names //Team Objective @@ -43,26 +43,40 @@ team_objective.team = team_number team_objectives[team_number] = team_objective //Team Members - if(antag_candidates.len >=2) - var/datum/mind/scientist = pick(antag_candidates) + + if(!preset_agent || !preset_scientist) + if(antag_candidates.len <=2) + return 0 + + var/datum/mind/scientist + var/datum/mind/agent + + if(!preset_scientist) + scientist = pick(antag_candidates) antag_candidates -= scientist - var/datum/mind/agent = pick(antag_candidates) + else + scientist = preset_scientist + + if(!preset_agent) + agent = pick(antag_candidates) antag_candidates -= agent + else + agent = preset_agent - scientist.assigned_role = "MODE" - scientist.special_role = "Abductor" - log_game("[scientist.key] (ckey) has been selected as an abductor team [team_number] scientist.") - agent.assigned_role = "MODE" - agent.special_role = "Abductor" - log_game("[agent.key] (ckey) has been selected as an abductor team [team_number] agent.") + scientist.assigned_role = "MODE" + scientist.special_role = "Abductor" + log_game("[scientist.key] (ckey) has been selected as an abductor team [team_number] scientist.") - abductors += agent - abductors += scientist - scientists[team_number] = scientist - agents[team_number] = agent - return 1 - return 0 + agent.assigned_role = "MODE" + agent.special_role = "Abductor" + 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 @@ -218,6 +232,7 @@ 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) /datum/game_mode/abduction/proc/equip_scientist(var/mob/living/carbon/human/scientist,var/team_number) diff --git a/code/game/gamemodes/abduction/abduction_gear.dm b/code/game/gamemodes/abduction/abduction_gear.dm index 689d8555d04..65291af6744 100644 --- a/code/game/gamemodes/abduction/abduction_gear.dm +++ b/code/game/gamemodes/abduction/abduction_gear.dm @@ -479,20 +479,58 @@ Congratulations! You are now trained for xenobiology research!"} user <<"The baton is in restrain mode." -obj/item/weapon/scalpel/alien +/obj/item/weapon/scalpel/alien name = "alien scalpel" icon = 'icons/obj/abductor.dmi' -obj/item/weapon/hemostat/alien +/obj/item/weapon/hemostat/alien name = "alien hemostat" icon = 'icons/obj/abductor.dmi' -obj/item/weapon/retractor/alien +/obj/item/weapon/retractor/alien name = "alien retractor" icon = 'icons/obj/abductor.dmi' +/obj/item/weapon/circular_saw/alien + name = "alien saw" + icon = 'icons/obj/abductor.dmi' + +/obj/item/weapon/surgicaldrill/alien + name = "alien drill" + icon = 'icons/obj/abductor.dmi' + +/obj/item/weapon/cautery/alien + name = "alien cautery" + icon = 'icons/obj/abductor.dmi' + /obj/item/clothing/head/helmet/abductor name = "Agent Headgear" desc = "Abducting with style. Spiky style." icon_state = "alienhelmet" item_state = "alienhelmet" + blockTracking = 1 + +// Operating Table / Beds / Lockers + +/obj/structure/optable/abductor + icon = 'icons/obj/abductor.dmi' + icon_state = "bed" + can_buckle = 1 + buckle_lying = 1 + +/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/table/abductor + name = "alien table" + desc = "Advanced flat surface technology at work!" + icon_state = "alientable" + +/obj/structure/closet/abductor + name = "alien locker" + desc = "Contains secrets of the universe" + icon_state = "abductor" + icon_door = "abductor" \ No newline at end of file diff --git a/code/game/gamemodes/abduction/abduction_machinery.dm b/code/game/gamemodes/abduction/abduction_machinery.dm deleted file mode 100644 index 05a99e9eb34..00000000000 --- a/code/game/gamemodes/abduction/abduction_machinery.dm +++ /dev/null @@ -1,500 +0,0 @@ -/obj/machinery/abductor - var/team = 0 - -/obj/machinery/abductor/console - name = "Abductor console" - desc = "Ship command center." - icon = 'icons/obj/abductor.dmi' - icon_state = "console" - density = 1 - anchored = 1.0 - 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/list/datum/icon_snapshot/disguises = list() - -/obj/machinery/abductor/console/attack_hand(var/mob/user as mob) - if(..()) - return - if(!IsAbductor(user)) - return - user.set_machine(src) - var/dat = "" - dat += "

Abductsoft 3000

" - - if(experiment != null) - var/points = experiment.points - dat += "Collected Samples : [points]
" - else - dat += "NO EXPERIMENT MACHINE DETECTED
" - - if(pad!=null) - dat += "Activate Teleporter
" - dat += "Set Teleporter
" - if(gizmo!=null && gizmo.marked!=null) - dat += "Retrieve Mark
" - else - dat += "Retrieve Mark
" - else - dat += "NO TELEPAD DETECTED
" - - if(vest!=null) - dat += "

Agent Vest Mode


" - var/mode = vest.mode - if(mode == VEST_STEALTH) - dat += "Combat" - dat += "Stealth" - else - dat += "Combat" - dat += "Stealth" - - dat+="
" - dat += "Select Agent Vest Disguise
" - else - dat += "NO AGENT VEST DETECTED" - 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 - if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.set_machine(src) - if(href_list["teleporter_set"]) - TeleporterSet() - else 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() - src.updateUsrDialog() - -/obj/machinery/abductor/console/proc/TeleporterSet() - var/A = null - A = input("Select area to teleport to", "Teleport", A) in teleportlocs - if(pad!=null) - pad.teleport_target = teleportlocs[A] - return - -/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() - 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) - vest.SetDisguise(chosen) - return - -/obj/machinery/abductor/console/proc/Initialize() - - 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 - -/obj/machinery/abductor/console/proc/AddSnapshot(var/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/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/area/teleport_target - -/obj/machinery/abductor/proc/IsAbductor(var/mob/living/carbon/human/H) - if(!H.dna) - return 0 - return H.dna.species.id == "abductor" - -/obj/machinery/abductor/proc/IsAgent(var/mob/living/carbon/human/H) - if(H.dna.species.id == "abductor") - var/datum/species/abductor/S = H.dna.species - return S.agent - return 0 - -/obj/machinery/abductor/proc/IsScientist(var/mob/living/carbon/human/H) - if(H.dna.species.id == "abductor") - var/datum/species/abductor/S = H.dna.species - return S.scientist - return 0 - -/obj/machinery/abductor/proc/TeleportToArea(var/mob/living/target,var/area/thearea) - var/list/L = list() - for(var/turf/T in get_area_turfs(thearea.type)) - if(!T.density) - var/clear = 1 - for(var/obj/O in T) - if(O.density) - clear = 0 - break - if(clear) - L+=T - if(!L.len) - return - - if(target && target.buckled) - target.buckled.unbuckle_mob() - - var/list/tempL = L - var/attempt = null - var/success = 0 - while(tempL.len) - attempt = pick(tempL) - target.Move(attempt) - if(get_turf(target) == attempt) - success = 1 - break - else - tempL.Remove(attempt) - if(!success) - target.loc = pick(L) - -/obj/machinery/abductor/pad/proc/Warp(var/mob/living/target) - target.Move(src.loc) - -/obj/machinery/abductor/pad/proc/Send() - flick("alien-pad", src) - for(var/mob/living/target in src.loc) - TeleportToArea(target,teleport_target) - spawn(0) - anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir) - -/obj/machinery/abductor/pad/proc/Retrieve(var/mob/living/carbon/human/target) - flick("alien-pad", src) - spawn(0) - anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir) - Warp(target) - -/obj/machinery/abductor/experiment - name = "Experimental machinery" - desc = "A human-sized coffin sporting wide array of automatic surgery tools" - icon = 'icons/obj/abductor.dmi' - icon_state = "experiment-open" - density = 0 - anchored = 1 - state_open = 1 - var/points = 0 - var/list/history = new - var/flash = " - || - " - var/obj/machinery/abductor/console/console - -/obj/machinery/abductor/experiment/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target)) - return - if(IsAbductor(target)) - return - close_machine(target) - -/obj/machinery/abductor/experiment/allow_drop() - return 0 - -/obj/machinery/abductor/experiment/attack_hand(mob/user) - if(..()) - return - - experimentUI(user) - -/obj/machinery/abductor/experiment/open_machine() - if(!state_open && !panel_open) - ..() - -/obj/machinery/abductor/experiment/close_machine(mob/target) - for(var/mob/living/carbon/C in loc) - if(IsAbductor(C)) - return - if(state_open && !panel_open) - ..(target) - -/obj/machinery/abductor/experiment/proc/dissection_icon(var/mob/living/carbon/human/H) - var/icon/photo = null - var/g = (H.gender == FEMALE) ? "f" : "m" - if(!config.mutant_races || H.dna.species.use_skintones) - photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.skin_tone]_[g]_s") - else - photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.dna.species.id]_[g]_s") - photo.Blend("#[H.dna.mutant_color]", ICON_MULTIPLY) - - var/icon/eyes_s - if(EYECOLOR in H.dna.species.specflags) - eyes_s = icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[H.dna.species.eyes]_s") - eyes_s.Blend("#[H.eye_color]", ICON_MULTIPLY) - - var/datum/sprite_accessory/S - S = hair_styles_list[H.hair_style] - if(S && (HAIR in H.dna.species.specflags)) - var/icon/hair_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s") - hair_s.Blend("#[H.hair_color]", ICON_MULTIPLY) - eyes_s.Blend(hair_s, ICON_OVERLAY) - - S = facial_hair_styles_list[H.facial_hair_style] - if(S && (FACEHAIR in H.dna.species.specflags)) - var/icon/facial_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s") - facial_s.Blend("#[H.facial_hair_color]", ICON_MULTIPLY) - eyes_s.Blend(facial_s, ICON_OVERLAY) - - if(eyes_s) - photo.Blend(eyes_s, ICON_OVERLAY) - - var/icon/splat = icon("icon" = 'icons/mob/dam_human.dmi',"icon_state" = "chest30") - photo.Blend(splat,ICON_OVERLAY) - - return photo - -/obj/machinery/abductor/experiment/proc/experimentUI(mob/user) - var/dat - dat += "

Experiment

" - if(occupant) - var/obj/item/weapon/photo/P = new - P.photocreate(null, icon(dissection_icon(occupant), dir = SOUTH)) - user << browse_rsc(P.img, "dissection_img") - dat += "
" - dat += "" //Avert your eyes - dat += "" - dat += "Probe
" - dat += "Dissect
" - dat += "Analyze
" - dat += "
" - else - dat += " Experiment " - - if(!occupant) - dat += "

Machine Unoccupied

" - else - dat += "

Subject Status :

" - dat += "[occupant.name] => " - switch(occupant.stat) - if(0) - dat += "Conscious" - if(1) - dat += "Unconscious" - else - dat += "DEAD" - dat += "
" - dat += "[flash]" - dat += "
" - dat += "Scan" - dat += "Close" : "open=1'>Open"]" - 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["open"]) - open_machine() - return - if(href_list["close"]) - close_machine() - 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(var/mob/occupant,var/type) - var/mob/living/carbon/human/H = occupant - var/point_reward = 0 - if(H in history) - return "Specimen already in the database" - if(H.stat == DEAD) - say("Specimen deceased - please provide fresh sample.") - return "Specimen Deceased" - var/obj/item/gland/GlandTest = locate() in H - if(!GlandTest) - say("Experimental dissection not detected!") - return "No glands detected!" - if(H.mind != null || H.ckey != null) - history += H - say("Processing Specimen...") - sleep(5) - switch(text2num(type)) - if(1) - H << "You feel violated." - if(2) - H << "You feel being sliced and put back together." - if(3) - H << "You feel under intense scrutiny." - sleep(5) - H << "Your mind snaps!" - var/objtype = pick(typesof(/datum/objective/abductee/) - /datum/objective/abductee/) - var/datum/objective/abductee/O = new objtype() - H.mind.objectives += O - var/obj_count = 1 - H << "Your current objectives:" - for(var/datum/objective/objective in H.mind.objectives) - H << "Objective #[obj_count]: [objective.explanation_text]" - obj_count++ - - for(var/obj/item/gland/G in H) - G.Start() - point_reward++ - if(point_reward > 0) - open_machine() - SendBack(H) - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - points += point_reward - return "Experiment Successfull! [point_reward] new data-points collected." - else - playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 1) - return "Experiment Failed! No replacement organ detected." - else - say("Brain Activity Nonexistant - Disposing Sample...") - open_machine() - SendBack(H) - return "Specimen Braindead - Disposed" - return "ERROR" - - -/obj/machinery/abductor/experiment/proc/SendBack(var/mob/living/carbon/human/H) - H.Sleeping(8) - var/area/A - if(console && console.pad && console.pad.teleport_target) - A = console.pad.teleport_target - else - A = teleportlocs[pick(teleportlocs)] - TeleportToArea(H,A) - -/obj/machinery/abductor/experiment/update_icon() - if(state_open) - icon_state = "experiment-open" - else - icon_state = "experiment" - -/obj/machinery/abductor/experiment/say_quote(text) - return "beeps, \"[text]\"" - - -/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 = typesof(/obj/item/gland) - /obj/item/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(var/mob/user as mob) - if(..()) - return - if(!IsAbductor(user)) - return - user.set_machine(src) - var/box_css = {" - "} - 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 += "[amount]" - if(item_count == 3) // Three boxes per line - dat +="

" - 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/gland)) - user.drop_item() - W.loc = 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 - if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.set_machine(src) - if(href_list["dispense"]) - Dispense(text2num(href_list["dispense"])) - src.updateUsrDialog() - -/obj/machinery/abductor/gland_dispenser/proc/Dispense(var/count) - if(amounts[count]>0) - amounts[count]-- - var/T = gland_types[count] - new T(get_turf(src)) \ No newline at end of file diff --git a/code/game/gamemodes/abduction/abduction_surgery.dm b/code/game/gamemodes/abduction/abduction_surgery.dm index 62308897062..72da671e016 100644 --- a/code/game/gamemodes/abduction/abduction_surgery.dm +++ b/code/game/gamemodes/abduction/abduction_surgery.dm @@ -5,6 +5,7 @@ location = "chest" user_species_restricted = 1 user_species_ids = list("abductor") + ignore_clothes = 1 /datum/surgery_step/extract_organ accept_hand = 1 diff --git a/code/game/gamemodes/abduction/gland.dm b/code/game/gamemodes/abduction/gland.dm index 4a0110ac30b..b20e7c98b85 100644 --- a/code/game/gamemodes/abduction/gland.dm +++ b/code/game/gamemodes/abduction/gland.dm @@ -3,10 +3,9 @@ desc = "Eww" icon = 'icons/obj/abductor.dmi' icon_state = "gland" - var/cooldown_low = 30 - var/cooldown_high = 30 - var/cooldown_current = 0 - var/cooldown = 0 + var/cooldown_low = 300 + var/cooldown_high = 300 + var/next_activation = 0 var/uses // -1 For inifinite var/active = 0 var/mob/living/carbon/human/host @@ -19,6 +18,7 @@ /obj/item/gland/proc/Start() active = 1 + next_activation = world.time + rand(cooldown_low,cooldown_high) SSobj.processing |= src /obj/item/gland/proc/Inject(var/mob/living/carbon/human/target) @@ -30,16 +30,14 @@ if(!active) SSobj.processing.Remove(src) return - cooldown++ - if(cooldown >= cooldown_current) + if(next_activation <= world.time) //This gives a chance to transplant the gland active into someone else if you're fast if(!HostCheck()) active = 0 return activate() uses-- - cooldown = 0 - cooldown_current = rand(cooldown_low,cooldown_high) + next_activation = world.time + rand(cooldown_low,cooldown_high) if(uses == 0) active = 0 @@ -47,8 +45,8 @@ return /obj/item/gland/heals - cooldown_low = 20 - cooldown_high = 40 + cooldown_low = 200 + cooldown_high = 400 uses = -1 icon_state = "health" @@ -59,8 +57,8 @@ obj/item/gland/heals/activate() host.adjustFireLoss(-20) /obj/item/gland/slime - cooldown_low = 60 - cooldown_high = 120 + cooldown_low = 600 + cooldown_high = 1200 uses = -1 icon_state = "slime" @@ -82,8 +80,8 @@ obj/item/gland/slime/activate() Slime.Leader = host /obj/item/gland/mindshock - cooldown_low = 30 - cooldown_high = 30 + cooldown_low = 300 + cooldown_high = 300 uses = -1 icon_state = "mindshock" @@ -98,9 +96,9 @@ obj/item/gland/slime/activate() H.confused += 20 /obj/item/gland/pop - cooldown_low = 120 - cooldown_high = 180 - uses = 5 + cooldown_low = 900 + cooldown_high = 1800 + uses = 6 icon_state = "species" /obj/item/gland/pop/activate() @@ -111,8 +109,8 @@ obj/item/gland/slime/activate() return /obj/item/gland/ventcrawling - cooldown_low = 180 - cooldown_high = 240 + cooldown_low = 1800 + cooldown_high = 2400 uses = 1 icon_state = "vent" @@ -124,8 +122,8 @@ obj/item/gland/slime/activate() /obj/item/gland/viral - cooldown_low = 180 - cooldown_high = 240 + cooldown_low = 1800 + cooldown_high = 2400 uses = 1 icon_state = "viral" @@ -140,18 +138,17 @@ obj/item/gland/slime/activate() /obj/item/gland/emp //TODO : Replace with something more interesting - cooldown_low = 90 - cooldown_high = 160 - uses = 5 + cooldown_low = 900 + cooldown_high = 1600 + uses = 10 icon_state = "emp" /obj/item/gland/emp/activate() empulse(get_turf(host), 2, 5, 1) - /obj/item/gland/spiderman - cooldown_low = 90 - cooldown_high = 160 + cooldown_low = 450 + cooldown_high = 900 uses = 10 icon_state = "spider" @@ -161,12 +158,98 @@ obj/item/gland/slime/activate() new /obj/effect/spider/spiderling(host.loc) /obj/item/gland/egg - cooldown_low = 60 - cooldown_high = 90 + cooldown_low = 300 + cooldown_high = 600 uses = -1 icon_state = "egg" /obj/item/gland/egg/activate() var/obj/item/weapon/reagent_containers/food/snacks/egg/egg = new(host.loc) egg.reagents.add_reagent("sacid",20) - egg.desc += " It smells bad." \ No newline at end of file + egg.desc += " It smells bad." + +/obj/item/gland/bloody + cooldown_low = 200 + cooldown_high = 400 + uses = -1 + +/obj/item/gland/bloody/activate() + host.adjustBruteLoss(15) + + host.visible_message("[host] skin erupts with blood!",\ + "Your skin erupts with blood! It hurts!") + + for(var/turf/T in oview(3,host)) //Make this respect walls and such + T.add_blood_floor(host) + for(var/mob/living/carbon/human/H in oview(3,host)) //Blood decals for simple animals would be neat. aka Carp with blood on it. + if(H.wear_suit) + H.wear_suit.add_blood(host) + H.update_inv_wear_suit(0) + else if(H.w_uniform) + H.w_uniform.add_blood(host) + H.update_inv_w_uniform(0) + +/obj/item/gland/bodysnatch + cooldown_low = 600 + cooldown_high = 600 + uses = 1 + +/obj/item/gland/bodysnatch/activate() + //spawn cocoon with clone greytide snpc inside + var/obj/effect/cocoon/abductor/C = new (get_turf(host)) + C.Copy(host) + C.Start() + host.gib() + return + +/obj/effect/cocoon/abductor + name = "Slimy cocoon" + desc = "You can see something 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(var/mob/living/carbon/human/H) + var/mob/living/carbon/human/interactive/greytide/clone = new(src) + hardset_dna(clone,H.dna.uni_identity,H.dna.struc_enzymes,H.real_name, H.dna.blood_type, H.dna.species.type, H.dna.mutant_color) + + //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_ears,\ + slot_glasses,slot_belt,slot_s_store,slot_l_store,slot_r_store,slot_wear_id) + + 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 + SSobj.processing |= src + +/obj/effect/cocoon/abductor/process() + if(world.time > hatch_time) + SSobj.processing.Remove(src) + for(var/mob/M in contents) + src.visible_message("[src] hatches!") + M.loc = src.loc + qdel(src) + +/obj/item/gland/plasma + cooldown_low = 1200 + cooldown_high = 2400 + uses = 1 + +/obj/item/gland/plasma/activate() + host << "You feel bloated." + sleep(150) + host << "Your stomach feels about to explode!" + sleep(50) + host.visible_message("[host] explodes in a cloud of plasma!") + var/turf/simulated/T = get_turf(host) + if(istype(T)) + T.atmos_spawn_air(SPAWN_TOXINS|SPAWN_20C,300) + host.gib() + return \ No newline at end of file diff --git a/code/game/gamemodes/abduction/machinery/camera.dm b/code/game/gamemodes/abduction/machinery/camera.dm new file mode 100644 index 00000000000..52773d60e1a --- /dev/null +++ b/code/game/gamemodes/abduction/machinery/camera.dm @@ -0,0 +1,142 @@ +/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/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(var/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) + +/obj/machinery/computer/camera_advanced/abductor/proc/IsAbductor(var/mob/living/carbon/human/H) + return H.dna.species.id == "abductor" + +/obj/machinery/computer/camera_advanced/abductor/proc/IsScientist(var/mob/living/carbon/human/H) + var/datum/species/abductor/S = H.dna.species + return S.scientist + +/obj/machinery/computer/camera_advanced/abductor/attack_hand(var/mob/user as mob) + 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) + if(C.client) + C.client.perspective = MOB_PERSPECTIVE + C.client.eye = src + C.client.images -= remote_eye.user_image + C.remote_control = null + C.unset_machine() + src.Remove(C) + + +/datum/action/teleport_in + name = "Send To" + action_type = AB_INNATE + button_icon_state = "beam_down" + +/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" + action_type = AB_INNATE + button_icon_state = "beam_up" + +/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" + action_type = AB_INNATE + button_icon_state = "beam_down" + +/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" + action_type = AB_INNATE + button_icon_state = "vest_mode" + +/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" + action_type = AB_INNATE + button_icon_state = "vest_disguise" + +/datum/action/vest_disguise_swap/Activate() + if(!target || !iscarbon(owner)) + return + var/obj/machinery/abductor/console/console = target + console.SelectDisguise(remote=1) diff --git a/code/game/gamemodes/abduction/machinery/console.dm b/code/game/gamemodes/abduction/machinery/console.dm new file mode 100644 index 00000000000..bfaeefa3e2c --- /dev/null +++ b/code/game/gamemodes/abduction/machinery/console.dm @@ -0,0 +1,184 @@ +//Common + +/obj/machinery/abductor + var/team = 0 + +/obj/machinery/abductor/proc/IsAbductor(var/mob/living/carbon/human/H) + if(!H.dna) + return 0 + return H.dna.species.id == "abductor" + +/obj/machinery/abductor/proc/IsAgent(var/mob/living/carbon/human/H) + if(H.dna.species.id == "abductor") + var/datum/species/abductor/S = H.dna.species + return S.agent + return 0 + +/obj/machinery/abductor/proc/IsScientist(var/mob/living/carbon/human/H) + if(H.dna.species.id == "abductor") + var/datum/species/abductor/S = H.dna.species + return S.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.0 + 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/attack_hand(var/mob/user as mob) + if(..()) + return + if(!IsAbductor(user)) + user << "You start mashing alien buttons at random!" + if(do_after(user,100)) + TeleporterSend() + return + user.set_machine(src) + var/dat = "" + dat += "

Abductsoft 3000

" + + if(experiment != null) + var/points = experiment.points + dat += "Collected Samples : [points]
" + else + dat += "NO EXPERIMENT MACHINE DETECTED
" + + if(pad!=null) + dat += "Emergency Teleporter System." + dat += "Consider using primary observation console first." + dat += "Activate Teleporter
" + dat += "Set Teleporter
" + if(gizmo!=null && gizmo.marked!=null) + dat += "Retrieve Mark
" + else + dat += "Retrieve Mark
" + else + dat += "NO TELEPAD DETECTED
" + + if(vest!=null) + dat += "

Agent Vest Mode


" + var/mode = vest.mode + if(mode == VEST_STEALTH) + dat += "Combat" + dat += "Stealth" + else + dat += "Combat" + dat += "Stealth" + + dat+="
" + dat += "Select Agent Vest Disguise
" + else + dat += "NO AGENT VEST DETECTED" + 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_set"]) + TeleporterSet() + else 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() + src.updateUsrDialog() + +/obj/machinery/abductor/console/proc/TeleporterSet() + var/A = null + A = input("Select area to teleport to", "Teleport", A) in teleportlocs + if(pad!=null && in_range(usr,src)) + pad.teleport_target = teleportlocs[A] + return + +/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(var/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/Initialize() + + 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(var/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(O as obj, user as mob, params) + if(istype(O, /obj/item/device/abductor/gizmo)) + var/obj/item/device/abductor/gizmo/G = O + user << "You link the tool to the console." + 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 + user << "You link the vest to the console." + vest = V + else + ..() \ No newline at end of file diff --git a/code/game/gamemodes/abduction/machinery/dispenser.dm b/code/game/gamemodes/abduction/machinery/dispenser.dm new file mode 100644 index 00000000000..d346e0366a5 --- /dev/null +++ b/code/game/gamemodes/abduction/machinery/dispenser.dm @@ -0,0 +1,82 @@ +/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 = typesof(/obj/item/gland) - /obj/item/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(var/mob/user as mob) + if(..()) + return + if(!IsAbductor(user)) + return + user.set_machine(src) + var/box_css = {" + "} + 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 += "[amount]" + if(item_count == 3) // Three boxes per line + dat +="

" + 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/gland)) + user.drop_item() + W.loc = 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(var/count) + if(amounts[count]>0) + amounts[count]-- + var/T = gland_types[count] + new T(get_turf(src)) \ No newline at end of file diff --git a/code/game/gamemodes/abduction/machinery/experiment.dm b/code/game/gamemodes/abduction/machinery/experiment.dm new file mode 100644 index 00000000000..371011323df --- /dev/null +++ b/code/game/gamemodes/abduction/machinery/experiment.dm @@ -0,0 +1,204 @@ +/obj/machinery/abductor/experiment + name = "Experimental machinery" + desc = "A human-sized coffin sporting wide array of automatic surgery tools" + icon = 'icons/obj/abductor.dmi' + icon_state = "experiment-open" + density = 0 + anchored = 1 + state_open = 1 + var/points = 0 + var/list/history = new + var/flash = " - || - " + var/obj/machinery/abductor/console/console + +/obj/machinery/abductor/experiment/MouseDrop_T(mob/target, mob/user) + if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target)) + return + if(IsAbductor(target)) + return + close_machine(target) + +/obj/machinery/abductor/experiment/allow_drop() + return 0 + +/obj/machinery/abductor/experiment/attack_hand(mob/user) + if(..()) + return + + experimentUI(user) + +/obj/machinery/abductor/experiment/open_machine() + if(!state_open && !panel_open) + ..() + +/obj/machinery/abductor/experiment/close_machine(mob/target) + for(var/mob/living/carbon/C in loc) + if(IsAbductor(C)) + return + if(state_open && !panel_open) + ..(target) + +/obj/machinery/abductor/experiment/proc/dissection_icon(var/mob/living/carbon/human/H) + var/icon/photo = null + var/g = (H.gender == FEMALE) ? "f" : "m" + if(!config.mutant_races || H.dna.species.use_skintones) + photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.skin_tone]_[g]_s") + else + photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.dna.species.id]_[g]_s") + photo.Blend("#[H.dna.mutant_color]", ICON_MULTIPLY) + + var/icon/eyes_s + if(EYECOLOR in H.dna.species.specflags) + eyes_s = icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[H.dna.species.eyes]_s") + eyes_s.Blend("#[H.eye_color]", ICON_MULTIPLY) + + var/datum/sprite_accessory/S + S = hair_styles_list[H.hair_style] + if(S && (HAIR in H.dna.species.specflags)) + var/icon/hair_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s") + hair_s.Blend("#[H.hair_color]", ICON_MULTIPLY) + eyes_s.Blend(hair_s, ICON_OVERLAY) + + S = facial_hair_styles_list[H.facial_hair_style] + if(S && (FACEHAIR in H.dna.species.specflags)) + var/icon/facial_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s") + facial_s.Blend("#[H.facial_hair_color]", ICON_MULTIPLY) + eyes_s.Blend(facial_s, ICON_OVERLAY) + + if(eyes_s) + photo.Blend(eyes_s, ICON_OVERLAY) + + var/icon/splat = icon("icon" = 'icons/mob/dam_human.dmi',"icon_state" = "chest30") + photo.Blend(splat,ICON_OVERLAY) + + return photo + +/obj/machinery/abductor/experiment/proc/experimentUI(mob/user) + var/dat + dat += "

Experiment

" + if(occupant) + var/obj/item/weapon/photo/P = new + P.photocreate(null, icon(dissection_icon(occupant), dir = SOUTH)) + user << browse_rsc(P.img, "dissection_img") + dat += "
" + dat += "" //Avert your eyes + dat += "" + dat += "Probe
" + dat += "Dissect
" + dat += "Analyze
" + dat += "
" + else + dat += " Experiment " + + if(!occupant) + dat += "

Machine Unoccupied

" + else + dat += "

Subject Status :

" + dat += "[occupant.name] => " + switch(occupant.stat) + if(0) + dat += "Conscious" + if(1) + dat += "Unconscious" + else + dat += "DEAD" + dat += "
" + dat += "[flash]" + dat += "
" + dat += "Scan" + dat += "Close" : "open=1'>Open"]" + 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["open"]) + open_machine() + return + if(href_list["close"]) + close_machine() + 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(var/mob/occupant,var/type) + var/mob/living/carbon/human/H = occupant + var/point_reward = 0 + if(H in history) + return "Specimen already in the database" + if(H.stat == DEAD) + say("Specimen deceased - please provide fresh sample.") + return "Specimen Deceased" + var/obj/item/gland/GlandTest = locate() in H + if(!GlandTest) + say("Experimental dissection not detected!") + return "No glands detected!" + if(H.mind != null || H.ckey != null) + history += H + say("Processing Specimen...") + sleep(5) + switch(text2num(type)) + if(1) + H << "You feel violated." + if(2) + H << "You feel being sliced and put back together." + if(3) + H << "You feel under intense scrutiny." + sleep(5) + H << "Your mind snaps!" + var/objtype = pick(typesof(/datum/objective/abductee/) - /datum/objective/abductee/) + var/datum/objective/abductee/O = new objtype() + H.mind.objectives += O + var/obj_count = 1 + H << "Your current objectives:" + for(var/datum/objective/objective in H.mind.objectives) + H << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + + for(var/obj/item/gland/G in H) + G.Start() + point_reward++ + if(point_reward > 0) + open_machine() + SendBack(H) + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + points += point_reward + return "Experiment Successfull! [point_reward] new data-points collected." + else + playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 1) + return "Experiment Failed! No replacement organ detected." + else + say("Brain Activity Nonexistant - Disposing Sample...") + open_machine() + SendBack(H) + return "Specimen Braindead - Disposed" + return "ERROR" + + +/obj/machinery/abductor/experiment/proc/SendBack(var/mob/living/carbon/human/H) + H.Sleeping(8) + var/area/A + if(console && console.pad && console.pad.teleport_target) + A = console.pad.teleport_target + else + A = teleportlocs[pick(teleportlocs)] + TeleportToArea(H,A) + +/obj/machinery/abductor/experiment/update_icon() + if(state_open) + icon_state = "experiment-open" + else + icon_state = "experiment" + +/obj/machinery/abductor/experiment/say_quote(text) + return "beeps, \"[text]\"" \ No newline at end of file diff --git a/code/game/gamemodes/abduction/machinery/pad.dm b/code/game/gamemodes/abduction/machinery/pad.dm new file mode 100644 index 00000000000..081f746a085 --- /dev/null +++ b/code/game/gamemodes/abduction/machinery/pad.dm @@ -0,0 +1,86 @@ +/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/area/teleport_target + +/obj/machinery/abductor/proc/TeleportToArea(var/mob/living/target,var/area/thearea) + var/list/L = list() + for(var/turf/T in get_area_turfs(thearea.type)) + if(!T.density) + var/clear = 1 + for(var/obj/O in T) + if(O.density) + clear = 0 + break + if(clear) + L+=T + if(!L.len) + return + + if(target && target.buckled) + target.buckled.unbuckle_mob() + + var/list/tempL = L + var/attempt = null + var/success = 0 + while(tempL.len) + attempt = pick(tempL) + target.Move(attempt) + if(get_turf(target) == attempt) + success = 1 + break + else + tempL.Remove(attempt) + if(!success) + target.loc = pick(L) + +/obj/machinery/abductor/pad/proc/Warp(var/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 src.loc) + TeleportToArea(target,teleport_target) + spawn(0) + anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir) + +/obj/machinery/abductor/pad/proc/Retrieve(var/mob/living/carbon/human/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(var/place,var/mob/living/target) + var/obj/effect/teleport_abductor/F = new(place) + var/datum/effect/effect/system/spark_spread/S = new + S.set_up(10,0,place) + S.start() + sleep(80) + qdel(F) + flick("alien-pad", src) + target.forceMove(place) + anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir) + +/obj/machinery/abductor/pad/proc/PadToLoc(var/place) + var/obj/effect/teleport_abductor/F = new(place) + var/datum/effect/effect/system/spark_spread/S = new + S.set_up(10,0,place) + S.start() + sleep(80) + qdel(F) + 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/teleport_abductor + name = "Huh" + icon = 'icons/obj/abductor.dmi' + icon_state = "teleport" diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 8559097293f..169100a2ab8 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -3,15 +3,22 @@ desc = "Used to access the various cameras on the station." icon_state = "cameras" //circuit = /obj/item/weapon/circuitboard/security - var/mob/camera/aiEye/remote/eyeobj = new() + var/mob/camera/aiEye/remote/eyeobj var/mob/living/carbon/human/current_user = null var/list/networks = list("SS13") var/datum/action/camera_off/off_action = new var/datum/action/camera_jump/jump_action = new -/obj/machinery/computer/camera_advanced/New() +/obj/machinery/computer/camera_advanced/proc/CreateEye() + eyeobj = new() eyeobj.origin = src +/obj/machinery/computer/camera_advanced/proc/GrantActions(var/mob/living/carbon/user) + off_action.target = user + off_action.Grant(user) + jump_action.target = user + jump_action.Grant(user) + /obj/machinery/computer/camera_advanced/check_eye(var/mob/user as mob) if (get_dist(user, src) > 1 || user.eye_blind) off_action.Activate() @@ -24,11 +31,11 @@ if(!iscarbon(user)) return var/mob/living/carbon/L = user + if(!current_user) - off_action.target = user - off_action.Grant(user) - jump_action.target = user - jump_action.Grant(user) + if(!eyeobj) + CreateEye() + GrantActions(user) current_user = user eyeobj.user = user eyeobj.name = "Camere Eye ([user.name])" @@ -43,6 +50,8 @@ eyeobj.setLoc(get_turf(C)) break eyeobj.initialized = 1 + else + eyeobj.setLoc(eyeobj.loc) else user << "The console is already in use!" @@ -57,6 +66,11 @@ var/visible_icon = 0 var/image/user_image = null +/mob/camera/aiEye/remote/GetViewerClient() + if(user) + return user.client + return null + /mob/camera/aiEye/remote/setLoc(var/T) if(user) if(!isturf(user.loc)) diff --git a/code/game/turfs/unsimulated/floor.dm b/code/game/turfs/unsimulated/floor.dm index a3ba0d120b0..ca6b69118a5 100644 --- a/code/game/turfs/unsimulated/floor.dm +++ b/code/game/turfs/unsimulated/floor.dm @@ -24,4 +24,8 @@ /turf/unsimulated/floor/grass/New() ..() - icon_state = "grass[rand(1,4)]" + icon_state = "grass[rand(1,4)]" + +/turf/unsimulated/floor/abductor + name = "alien floor" + icon_state = "alienpod1" diff --git a/code/game/turfs/unsimulated/walls.dm b/code/game/turfs/unsimulated/walls.dm index e22ce3dd5fb..27392e1e9d6 100644 --- a/code/game/turfs/unsimulated/walls.dm +++ b/code/game/turfs/unsimulated/walls.dm @@ -65,4 +65,7 @@ turf/unsimulated/wall/splashscreen /turf/unsimulated/shuttle/floor name = "floor" - icon_state = "floor" \ No newline at end of file + icon_state = "floor" + +/turf/unsimulated/wall/abductor + icon_state = "alien1" \ No newline at end of file diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index c78793ac84a..2c5d28b6409 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -506,7 +506,11 @@ client/proc/one_click_antag() teams_finished = round(ticker.mode.abductors.len / 2) var/number = teams_finished + 1 - var/datum/game_mode/abduction/temp = new + var/datum/game_mode/abduction/temp + if(ticker.mode.config_tag == "abductor") + temp = ticker.mode + else + temp = new var/agent_mind = pick(candidates) candidates -= agent_mind @@ -525,13 +529,14 @@ client/proc/one_click_antag() temp.team_names.len = number temp.scientists[number] = scientist_mind temp.agents[number] = agent_mind - temp.abductors = list(agent_mind,scientist_mind) - temp.make_abductor_team(number) + temp.abductors |= list(agent_mind,scientist_mind) + temp.make_abductor_team(number,preset_scientist=scientist_mind,preset_agent=agent_mind) temp.post_setup_team(number) - ticker.mode.abductors += temp.abductors if(ticker.mode.config_tag == "abductor") var/datum/game_mode/abduction/A = ticker.mode A.teams += 1 + else + ticker.mode.abductors |= temp.abductors return 1 else diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm index b9ca12ef44a..d120133867a 100644 --- a/code/modules/mob/living/carbon/human/species_types.dm +++ b/code/modules/mob/living/carbon/human/species_types.dm @@ -232,7 +232,7 @@ // Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck. name = "Golem" id = "golem" - specflags = list(NOBREATH,HEATRES,COLDRES,NOGUNS,NOBLOOD,RADIMMUNE) + specflags = list(NOBREATH,HEATRES,COLDRES,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE) speedmod = 3 armor = 55 punchmod = 5 @@ -281,7 +281,7 @@ say_mod = "rattles" sexes = 0 meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton - specflags = list(NOBREATH,HEATRES,COLDRES,NOBLOOD,RADIMMUNE) + specflags = list(NOBREATH,HEATRES,COLDRES,NOBLOOD,RADIMMUNE,VIRUSIMMUNE) /* ZOMBIES */ @@ -325,7 +325,7 @@ say_mod = "gibbers" sexes = 0 invis_sight = SEE_INVISIBLE_LEVEL_ONE - specflags = list(NOBLOOD,NOBREATH) + specflags = list(NOBLOOD,NOBREATH,VIRUSIMMUNE) var/scientist = 0 // vars to not pollute spieces list with castes var/agent = 0 var/team = 1 diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 9ebf44a97f3..48adee0e407 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -22,17 +22,9 @@ // Add an AI eye to the chunk, then update if changed. /datum/camerachunk/proc/add(mob/camera/aiEye/eye) - if(istype(eye,/mob/camera/aiEye/remote)) - var/mob/camera/aiEye/remote/cameye = eye - if(!cameye.user) - return - if(cameye.user.client) - cameye.user.client.images += obscured - else: - if(!eye.ai) - return - if(eye.ai.client) - eye.ai.client.images += obscured + var/client/client = eye.GetViewerClient() + if(client) + client.images += obscured eye.visibleCameraChunks += src visible++ seenby += eye @@ -42,18 +34,9 @@ // Remove an AI eye from the chunk, then update if changed. /datum/camerachunk/proc/remove(mob/camera/aiEye/eye) - if(istype(eye,/mob/camera/aiEye/remote)) - var/mob/camera/aiEye/remote/cameye = eye - if(!cameye.user) - return - if(cameye.user.client) - cameye.user.client.images -= obscured - else - if(!eye.ai) - return - if(eye.ai.client) - eye.ai.client.images -= obscured - + var/client/client = eye.GetViewerClient() + if(client) + client.images -= obscured eye.visibleCameraChunks -= src seenby -= eye if(visible > 0) @@ -123,15 +106,9 @@ var/mob/camera/aiEye/m = eye if(!m) continue - if(istype(m,/mob/camera/aiEye/remote)) - var/mob/camera/aiEye/remote/cam = eye - if(cam.user) - cam.user.client.images -= t.obscured - else - if(!m.ai) - continue - if(m.ai.client) - m.ai.client.images -= t.obscured + var/client/client = m.GetViewerClient() + if(client) + client.images -= t.obscured for(var/turf in visRemoved) var/turf/t = turf @@ -145,15 +122,9 @@ if(!m) seenby -= m continue - if(istype(m,/mob/camera/aiEye/remote)) - var/mob/camera/aiEye/remote/cam = eye - if(cam.user) - cam.user.client.images += t.obscured - else - if(!m.ai) - continue - if(m.ai.client) - m.ai.client.images += t.obscured + var/client/client = m.GetViewerClient() + if(client) + client.images += t.obscured changed = 0 diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index b5e313bb050..d24c734f219 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -31,6 +31,11 @@ /mob/camera/aiEye/Move() return 0 +/mob/camera/aiEye/proc/GetViewerClient() + if(ai) + return ai.client + return null + // AI MOVEMENT @@ -120,3 +125,6 @@ acceleration = !acceleration usr << "Camera acceleration has been toggled [acceleration ? "on" : "off"]." + + + diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index 360e4607720..8d74a3d4623 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -41,7 +41,7 @@ var/datum/surgery/S = available_surgeries[P] var/datum/surgery/procedure = new S.type if(procedure) - if(get_location_accessible(M, procedure.location)) + if(get_location_accessible(M, procedure.location) || procedure.ignore_clothes) if(procedure.location == "anywhere") // if location == "anywhere" change location to the surgeon's target, otherwise leave location as is. procedure.location = user.zone_sel.selecting M.surgeries += procedure diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 88e590ca8dc..fff1661c6bd 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -11,6 +11,7 @@ var/has_multi_loc = 0 //Multiple locations - RR var/user_species_restricted = 0 //Surgery only performable BY species var/list/user_species_ids + var/ignore_clothes = 0 //This surgery ignores clothes /datum/surgery/proc/next_step(mob/user, mob/living/carbon/target) if(step_in_progress) return diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index eabe14f8802..bc98f542874 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/icons/obj/abductor.dmi b/icons/obj/abductor.dmi index fbec59cf88a..dbb322992eb 100644 Binary files a/icons/obj/abductor.dmi and b/icons/obj/abductor.dmi differ diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index b69cc7be2ea..b222152c602 100644 Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index adaa8481569..ccdac8d866d 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 9894e89c626..15ec64bf77e 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index d129a462dff..c9ab9f06a05 100644 Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ diff --git a/tgstation.dme b/tgstation.dme index d6d0235eea7..0c2af60d550 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -284,9 +284,13 @@ #include "code\game\gamemodes\setupgame.dm" #include "code\game\gamemodes\abduction\abduction.dm" #include "code\game\gamemodes\abduction\abduction_gear.dm" -#include "code\game\gamemodes\abduction\abduction_machinery.dm" #include "code\game\gamemodes\abduction\abduction_surgery.dm" #include "code\game\gamemodes\abduction\gland.dm" +#include "code\game\gamemodes\abduction\machinery\camera.dm" +#include "code\game\gamemodes\abduction\machinery\console.dm" +#include "code\game\gamemodes\abduction\machinery\dispenser.dm" +#include "code\game\gamemodes\abduction\machinery\experiment.dm" +#include "code\game\gamemodes\abduction\machinery\pad.dm" #include "code\game\gamemodes\blob\blob.dm" #include "code\game\gamemodes\blob\blob_finish.dm" #include "code\game\gamemodes\blob\blob_report.dm"