diff --git a/_maps/map_files/LayeniaStation/LayeniaStation.dmm b/_maps/map_files/LayeniaStation/LayeniaStation.dmm index 2e078ae6..679b485e 100644 --- a/_maps/map_files/LayeniaStation/LayeniaStation.dmm +++ b/_maps/map_files/LayeniaStation/LayeniaStation.dmm @@ -979,7 +979,7 @@ "cNT" = (/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "drain"; name = "drain"},/obj/machinery/light{dir = 4; pixel_x = 7; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{dir = 10; name = "air supply pipe"},/turf/open/floor/plasteel/white/side{dir = 8},/area/science/research) "cNY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel,/area/maintenance/disposal/incinerator) "cOu" = (/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/white/corner{dir = 1},/area/science/misc_lab) -"cOv" = (/obj/structure/medkit_cabinet{pixel_y = 27},/obj/machinery/camera{c_tag = "Bridge West"; dir = 6},/turf/open/floor/plasteel/dark/side,/area/bridge) +"cOv" = (/obj/machinery/camera{c_tag = "Bridge West"; dir = 6},/obj/machinery/computer/lore_terminal/command,/turf/open/floor/plasteel/dark/side,/area/bridge) "cOH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{icon_state = "2-4"},/turf/open/floor/plasteel,/area/maintenance/disposal/incinerator) "cOU" = (/obj/effect/turf_decal/stripes/line{dir = 1},/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 6},/turf/open/floor/engine,/area/engine/engineering/reactor_core) "cOZ" = (/mob/living/simple_animal/opossum/Trims,/turf/open/floor/plasteel,/area/quartermaster/storage) @@ -1662,7 +1662,7 @@ "eMc" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 1; frequency = 1441; id = "inc_in"},/obj/structure/sign/warning/vacuum/external{pixel_x = -32},/turf/open/floor/engine/vacuum,/area/science/mixing) "eMm" = (/turf/closed/wall/r_wall,/area/crew_quarters/toilet/restrooms) "eMs" = (/obj/structure/reagent_dispensers/water_cooler,/obj/machinery/camera{c_tag = "Courtroom South"; dir = 1},/turf/open/floor/plasteel/dark,/area/security/courtroom) -"eMv" = (/obj/effect/turf_decal/tile/blue{dir = 8},/obj/machinery/light{dir = 8; pixel_x = -7; pixel_y = 0},/obj/structure/filingcabinet/filingcabinet,/turf/open/floor/plasteel/dark/corner,/area/bridge) +"eMv" = (/obj/effect/turf_decal/tile/blue{dir = 8},/obj/machinery/light{dir = 8; pixel_x = -7; pixel_y = 0},/obj/structure/medkit_cabinet{pixel_y = 27},/turf/open/floor/plasteel/dark/corner,/area/bridge) "eMG" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/hydroponics) "eMS" = (/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "drain"; name = "drain"},/turf/open/floor/carpet/red,/area/crew_quarters/bar) "eMZ" = (/obj/machinery/atmospherics/components/binary/pump{dir = 8; layer = 2.4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{dir = 9; name = "scrubbers pipe"},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel/dark,/area/security/execution/transfer) @@ -3003,7 +3003,7 @@ "iJG" = (/obj/effect/decal/cleanable/oil{icon_state = "floor5"},/turf/open/floor/plasteel,/area/security/prison) "iJM" = (/obj/effect/turf_decal/stripes/box,/obj/structure/railing{dir = 8},/obj/structure/railing,/turf/open/floor/plating{initial_gas_mix = "o2=22;n2=82;TEMP=180"; planetary_atmos = 1},/area/layenia) "iJN" = (/obj/effect/turf_decal/loading_area{icon_state = "drain"; name = "drain"},/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "drain"; name = "drain"},/turf/open/floor/carpet,/area/crew_quarters/dorms) -"iJO" = (/obj/structure/cable/yellow{icon_state = "2-4"},/turf/open/floor/plasteel/dark,/area/engine/engineering/reactor_control) +"iJO" = (/obj/structure/cable/yellow{icon_state = "2-4"},/obj/machinery/computer/lore_terminal,/turf/open/floor/plasteel/dark,/area/engine/engineering/reactor_control) "iJV" = (/obj/docking_port/stationary{dir = 2; dwidth = 1; height = 4; name = "escape pod loader"; roundstart_template = /datum/map_template/shuttle/escape_pod/default; width = 3},/turf/open/indestructible/concrete,/area/layenia/cloudlayer) "iJX" = (/mob/living/simple_animal/pet/cat{name = "Stray Maintenance Cat"},/turf/open/floor/plating,/area/maintenance/port) "iKj" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer3{name = "air supply pipe"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{dir = 4; name = "scrubbers pipe"},/turf/open/floor/plasteel{icon_state = "floor_plate"},/area/quartermaster/storage) @@ -4250,6 +4250,7 @@ "mBF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 9},/obj/effect/turf_decal/tile/yellow{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel,/area/engine/engineering) "mBH" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/storage/tech) "mCB" = (/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 8},/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/obj/machinery/door/airlock/glass{dir = 4; id_tag = "checkpointinner"; name = "inner airlock"},/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 8},/turf/open/floor/plasteel,/area/hallway/primary/port) +"mCD" = (/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral,/obj/machinery/computer/lore_terminal,/turf/open/floor/plasteel{dir = 1; icon_state = "floor_plate"},/area/engine/break_room) "mCJ" = (/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3{dir = 1; name = "air vent"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{name = "scrubbers pipe"},/turf/open/floor/plasteel/white,/area/science/research) "mCL" = (/obj/effect/turf_decal/tile/yellow{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{dir = 4; name = "air scrubber"},/obj/effect/landmark/start/station_engineer,/turf/open/floor/plasteel{icon_state = "floor_plate"},/area/engine/engineering) "mCS" = (/obj/machinery/door/poddoor/preopen{id = "medpriv4"; name = "privacy door"},/obj/effect/spawner/structure/window,/obj/machinery/door/firedoor,/turf/open/floor/plating,/area/medical/sleeper) @@ -7650,7 +7651,7 @@ "vNo" = (/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/hallway/primary/starboard) "vNs" = (/obj/machinery/door/firedoor,/obj/effect/turf_decal/loading_area{icon_state = "drain"; name = "drain"},/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel/white/corner{dir = 1},/area/hallway/primary/starboard) "vNw" = (/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/structure/sign/warning/electricshock{pixel_y = 32},/turf/open/floor/plasteel{dir = 1; icon_state = "floor_plate"},/area/hallway/primary/fore) -"vNz" = (/obj/effect/turf_decal/tile/blue{dir = 1},/turf/open/floor/plasteel/dark/side{dir = 4},/area/bridge) +"vNz" = (/obj/effect/turf_decal/tile/blue{dir = 1},/obj/structure/filingcabinet/filingcabinet,/turf/open/floor/plasteel/dark/side{dir = 4},/area/bridge) "vNJ" = (/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel{dir = 8; icon_state = "floor_trim"},/area/quartermaster/storage) "vNP" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer3{name = "air supply pipe"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{name = "scrubbers pipe"},/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel{icon_plating = "floor"; icon_state = "floor_whole"},/area/security/brig) "vNT" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{dir = 1; name = "scrubbers pipe"},/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{dir = 6; name = "air supply pipe"},/obj/structure/cable{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 6},/turf/open/floor/plasteel/white,/area/science/research) @@ -8660,7 +8661,7 @@ gTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgT gTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgfhgPqiEgorldiGpggnusgPqgPqgPqgPqgPqgPqgPqgPqtEktBctBctBctBcltjltyltNtBctBcalOxejwOpvQaosUqQOwOpxejxejxejxejxejxejxejxejxejxejxejxejxejnJFnJFnJFkgHsaaszVrmCrMcrIEsIglwHsYQrIEkgHwHEtqExBXqmDkLzepcyiagRGqfWqfWqfWqfWpomdaZnhrtpQhsNvjTrnrksylyiaPQqEMpIxrgGapkpvWcbhjArvjMjtybauluVrjZlyHlzihHVlzpoTllzRlAznJWxwylqPnDQdyjxIquHfwdefWagYWoulfZvxCxoInxKiaNNxMyylPxIDxMyoYslAPtjYvKfsXDlAUppMqYVyhesCHnrHnrHfbXxBmtHpvUrpcatEfflDhyclDkxBmxBmlHzlHPlIiklggTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWyfmyfmyfmyfmwuvldJjjNjTBaexoYSoYSgdOpGaoYSyfmyfmyfmgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTW gTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWiEgrCwwyjtmAnusgTWgTWgTWgPqiFlfoHfoHfoHalOtBctBctBctBclJVlJZbgPyfmyfmtEkgTWmcCxejxejxejpPQgPqgPqgPqgPqgPqgPqgPqgPqgPqnTytBctBctBcylMtBclVzudnsaarIEufCrIErIErIEuwGrIErIEkgHwLctqEvjTvjTvjTnrjwGNlLDepcqmDqmDepctbEhiPtYcvjTvjTvjTrnrksymSwciRlLHaHEksyksyiiZaeYlLWwtgsnasnasnahqkeZGhqkhHVlMuviIlMBlNDlNMlQBlQYnDQdyjyhusnauBGgmQtQVwdetvusnaaNougvuUajAmoScoScjAmjAmlwfxJUvKfxJUeholUMqRQclKwHwakBeQPwHwxBmdfEiaBxNTdPGbQixpjdfElVClXglXKlXRlZMklggTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWyfmyfmyfmyfmyfmyfmyfmyfmyfmoYSoYSoYSoYSyfmyfmgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTW gTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWmcCxejxejxejpPQgTWgTWgTWgPqiEgwOpwOpwOpmcBtBcyfmyfmmdxcfwlJZyfmyfmwcKylMgTWqITgTWgTWgTWqITgTWgTWgTWqITgTWgTWgTWtBctBctBctBcsGhtBctBcmcSlVzeVhwvTmqFmubmqFmqFjLTmdOgmBhGjuFXuTctqEmeemhdvjTjxhwSGswPmjYqmDqmDmjYvCcmSvnhrvjTtuhfGJuGRksysDlqOdqOdoexmlfksyddqcbhmlFacrhMbhCtpwZgGPmnmmnUvsnmoGmsibxfvsnmtrvsnvsnahEonRpoDpLnpLnpLnpLnpLnpLnpLnmuJlgdlgdmuJlgdlgdmuJlgdlgdmuJmvDhDllAUppMyhurOTejNmwbwyzgBUpsOiHEppEroIaskroIdbqiHEnQBkwxyfGcFHlZMklggTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWyfmyfmyfmyfmyfmyfmyfmyfmyfmyfmyfmyfmgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTW -gTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgPqgTWgTWgTWgTWgTWgPqiEgsRgdhjwQCwQCwQCwQCwQCwQCwQCwQCxHItccyeAyeAyeAtccyeAyeAyeAtccyeAyeAyeAtcccsUmGZmGZmGZmGZmGZmGZmGZmGZsTFsTFmGZvTTeAUeAUeAUeAUeAUudawLcwLcmAxmxIwLctqEcsNdfhgZZsTLmvdtWhbvjcqQcqQbvjprPaBFokpjRRjXIvSKgphmyLmAcsbigOQfPKwoppvimAOcbhmlFacrmAPmiRoLZvzHsXEpVJksEgWEgWEgWElfzmDAtljvuivzHdyjpSDpqZnSmuyIuyIuyIuyImEKuyIuyIuyImEKuyIuyIqLcuyIvsxkTJuyIuyIbWUppMyhuhtzuxuujhhRMaJvxBmdfEpXDnNwsLzjDLfpKoeWvRzbjlvpEitylZMklggTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTW +gTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgPqgTWgTWgTWgTWgTWgPqiEgsRgdhjwQCwQCwQCwQCwQCwQCwQCwQCxHItccyeAyeAyeAtccyeAyeAyeAtccyeAyeAyeAtcccsUmGZmGZmGZmGZmGZmGZmGZmGZsTFsTFmGZvTTeAUeAUeAUeAUeAUudawLcwLcmAxmxIwLctqEcsNdfhgZZsTLmvdtWhbvjcqQcqQbvjprPaBFokpjRRjXIvSKgphmyLmAcsbigOQfPKwoppvimAOcbhmlFacrmAPmiRoLZvzHsXEpVJksEgWEgWEgWElfzmDAtljvuivzHdyjpSDpqZnSmmCDuyIuyIuyImEKuyIuyIuyImEKuyIuyIqLcuyIvsxkTJuyIuyIbWUppMyhuhtzuxuujhhRMaJvxBmdfEpXDnNwsLzjDLfpKoeWvRzbjlvpEitylZMklggTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTW gTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgPqgTWgTWgTWgTWgTWgPqiEgwOpwQCkXhsqknrEmHDimRnrEmHGrvOuUVwkfsksnLurfRtCKskspdmrfRtCKsksnLurfRmIBhQzxutiCCmISwhPmKceAUxuxuRMmKdklDhIFczNeAUvPxkAGcvpeAUmLjwLcmLomNFmPgmQQtqEmeeuflmQSqYMiBkmiXmjYqmDqmDmjYcSgmiXgRGvjTqPVePPuSJksyksyqOdqOdqOdnQNnYUmAOcbhmlFmQVmRabwrnZvhBnjmipAJpAJpAJpAJievpAJbgcpfEbOZpfEffmxWFjFjxWFxWFxWFxWFxWFxWFxWFxWFxWFksCxWFxWFxWFxWFxWFlRsxWFxWFxWFdIffUCliQrRPmTssfmaJvxBmdfEmuplhWhtJhQObeNrOHxBmxBmovKlHPtByklggTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTW gTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgPqgTWgTWgTWgTWgTWgPqiEgwOpwQCmHDthhnrEmTDthhnrEmUbjyQuUVmUrxDBxDBxDBxDBaIpdgIaRwgekgekgekqDcuTiyeEaUQiCCossmUSpelmVWeljkSouXsuXspCWnUjmWgnGGylwfzteAUkgHwLcmWDeZcmXhmXttqEmxNmyFvjTvSAdvsepcepcqmDqmDepcepcepckWqvjTqPVqPVrnrmXLmXYqyLlIqykydBeksypvWcbhmlFmQVmZwxJomjBrjYndzuYxqMxncvuUXsVBuUXndzrJxnehnfuilSsqPvLHurhurhurhurhurhurhurhurhxYUurhurhurhurhurhurhjgwurhurhurhurhmZUiyyotGogZrYRhkBxBmcIbiUgdqFcXxegptXWsOYmBHqtzfoHfoHfoHwOpfoHxizeAAeAAgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTW gTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgGFfoHfoHfoHguZgTWgTWgTWgPqiEgwOpwQCmTDmuFnrEbgothhnrEdyTiztuUVrbJxDBkMHsXBkOneqNngJwFUkOnsXBqKiaJsuTiaTJcGyiCCvYBlUcngWeAUnhlbPJnhnnilniMaDReAUeAUeAUeAUeAUewvxGaxGaxGaxGaxGavjTvjTvjTvjTvjTvjTvjTvsGnkWsLgvsGvjTvjTvjTvjTxGaxGalsxksyksyksyksyksyksyksygkrmgBnlpwtgsnabnKreWnohreWjuMjuMjuMuOOiayuOOjuMjuMjuMmjHlkWcvQfMpnoQnoQnoQnoQjuMjuMnpMnpMnpMjuMnpMnpMnpMnpMnpMjuMnpMnpMnpMjuMjuMpMyhVJcztdsvsnaxBmxBmxBmxBmxBmxBmxBmxBmxBmuXIuXIuXIuXIuXIuXIeAAnqDeAAgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTWgTW diff --git a/hyperstation/code/game/machinery/lore_terminal.dm b/hyperstation/code/game/machinery/lore_terminal.dm new file mode 100644 index 00000000..8fcff766 --- /dev/null +++ b/hyperstation/code/game/machinery/lore_terminal.dm @@ -0,0 +1,234 @@ +GLOBAL_DATUM_INIT(lore_terminal_controller, /datum/lore_controller, new) + +/obj/machinery/computer/lore_terminal + name = "Staff Seegson info-link terminal" + desc = "A small CRT display with an inbuilt microcomputer which is loaded with an extensive database. These terminals contain eveyrthing from information about historical events to instruction manuals for common ship appliances." + icon = 'nsv13/icons/obj/computers.dmi' + icon_state = "terminal" + pixel_y = 26 //So they snap to walls correctly + density = FALSE + anchored = TRUE + idle_power_usage = 15 + var/access_tag = "ntcommon" //Every subtype of this type will be readable by this console. Use this for away terms as seen here \/ + var/list/entries = list() //Every entry that we've got. + var/in_use = FALSE //Stops sound spam + var/datum/looping_sound/computer_click/soundloop + +/obj/machinery/computer/lore_terminal/command //Put sensitive information on this one + name = "Command Seegson info-link terminal" + access_tag = "ntcommand" + req_access = list(ACCESS_HEADS) + +/obj/machinery/computer/lore_terminal/awaymission //Example for having a terminal preloaded with only a set list of files. + access_tag = "awaymission_default" + +/obj/machinery/computer/lore_terminal/Initialize() + . = ..() + get_entries() + soundloop = new(list(src), FALSE) + +/datum/looping_sound/computer_click + mid_sounds = list('nsv13/sound/effects/computer/scroll1.ogg','nsv13/sound/effects/computer/scroll2.ogg','nsv13/sound/effects/computer/scroll3.ogg','nsv13/sound/effects/computer/scroll5.ogg') + mid_length = 0.8 SECONDS + volume = 30 + +/obj/machinery/computer/lore_terminal/proc/get_entries() + for(var/X in GLOB.lore_terminal_controller.entries) + var/datum/lore_entry/instance = X + if(instance.access_tag == access_tag) + entries += instance + +/obj/machinery/computer/lore_terminal/attack_hand(mob/user) + . = ..() + if(!allowed(user)) + var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') + playsound(src, sound, 100, 1) + to_chat(user, "Access denied") + return + playsound(src, 'nsv13/sound/effects/computer/scroll_start.ogg', 100, 1) + user.set_machine(src) + var/dat + if(!entries.len) + get_entries() + for(var/X in entries) //Allows you to remove things individually + var/datum/lore_entry/content = X + dat += "[content.name]
" + var/datum/browser/popup = new(user, "cd C:/entries/local", name, 300, 500) + popup.set_content(dat) + popup.open() + + +/obj/machinery/computer/lore_terminal/Topic(href, href_list) + if(!in_range(src, usr)) + return + if(in_use) + var/sound = 'nsv13/sound/effects/computer/buzz2.ogg' + playsound(src, sound, 100, 1) + to_chat(usr, "ERROR: I/O function busy. A file is still loading...") + return + var/datum/lore_entry/content = locate(href_list["selectitem"]) + if(!content || !content?.content) + return + var/clicks = length(content.content) //Split the content into characters. 1 character = 1 click + var/dat = "\ + \ + \ + \ + \ + \ +

ACCESS FILE: C:/entries/local/[content.name]

\ +

Classification: [content.classified]

\ +
- � Seegson systems inc, 2257
\ +
\ +

[content.title]

\ + \ +

\ + \ + \ + \ + \ + \ + \ + " + usr << browse(dat, "window=lore_console[content.name];size=600x600") + playsound(src, pick('nsv13/sound/effects/computer/buzz.ogg','nsv13/sound/effects/computer/buzz2.ogg'), 100, TRUE) + in_use = TRUE //Stops you from crashing the server with infinite sounds + icon_state = "terminal_scroll" + clicks = clicks/3 + var/loops = clicks/3 //Each click sound has 4 clicks in it, so we only need to click 1/4th of the time per character yeet. + addtimer(CALLBACK(src, .proc/stop_clicking), loops) + soundloop?.start() + + +/obj/machinery/computer/lore_terminal/proc/stop_clicking() + soundloop?.stop() + icon_state = "terminal" + in_use = FALSE + +/datum/lore_controller + var/name = "Lore archive controller" + var/list/entries = list() //All the lore entries we have. + +/datum/lore_controller/New() + . = ..() + instantiate_lore_entries() + +/datum/lore_controller/proc/instantiate_lore_entries() + for(var/instance in subtypesof(/datum/lore_entry)) + var/datum/lore_entry/S = new instance + entries += S + +/datum/lore_entry + var/name = "Loredoc.txt" //"File display name" that the term shows (C://blah/yourfile.bmp) + var/title = null //What it's all about + var/classified = "Declassified" //Fluff, is this a restricted file or not? + var/content = null //You may choose to set this here, or via a .txt. file if it's long. Newlines / Enters will break it! + var/path = null //The location at which we're stored. If you don't have this, you don't get content + var/access_tag = "placeholder" //Set this to match the terminals that you want to be able to access it. EG "ntcommon" for declassified shit. + +/datum/lore_entry/New() + . = ..() + if(path) + content = file2text("[path]") + +/* + +TO GET THE COOL TYPEWRITER EFFECT, I HAD TO STRIP OUT THE HTML FORMATTING STUFF. +SPECIAL KEYS RESPOND AS FOLLOWS: + +` = newline (br) (AKA when you press enter) +~ = horizontal line (hr) +� = bullet point + +*/ + +/datum/lore_entry/station + name = "new_employees_memo.mail" + title = "Intercepted message" + path = "nsv13/lore_entries/welcome.txt" + access_tag = "ntcommon" + +/datum/lore_entry/station/meltdown_proceedures + name = "meltdown_proceedures.mail" + title = "Emergency proceedures regarding nuclear meltdowns:" + path = "nsv13/lore_entries/meltdowns.txt" + +/datum/lore_entry/command + name = "command_memo.mail" + title = "Intercepted Message" + access_tag = "ntcommand" + classified = "Restricted" + content = "SYSADMIN -> command@seegnet.kin. RE: Orientation. ` Greetings station command staff, congratulations on your placement! It is now company policy to attend all briefings as issued by centcom staff. Please speak to your centcom officer for clarification on the new procedures." + +/datum/lore_entry/command/xeno + name = "outpost_27.mail" + title = "Investigation Closed" + classified = "Classified" + content = "SYSADMIN -> command@seegnet.kin. RE: Outpost 27 Investigation. ` Until further notice, all communications, visits and trade with Outpost 27 must be denied. It is recommended that the subject is avoided. Stay safe through vigilance." + +/datum/lore_entry/away_example + title = "Intercepted log file" + access_tag = "awayexample" + +/datum/lore_entry/away_example/pilot_log + name = "pilot_log.txt" + content = "They're coming in hot! Prepare for flip and bur']###�$55%%% -=File Access Terminated=-" + +/datum/lore_entry/away_example/weapons_log + name = "weapon_systems_dump2259/11/25.txt" + content = "Life support systems terminated. Railgun system status: A6E3. Torpedo system status: ~@##6#6#^^6 -=File Access Terminated=-" diff --git a/nsv13/icons/obj/computers.dmi b/nsv13/icons/obj/computers.dmi new file mode 100644 index 00000000..8e9ad402 Binary files /dev/null and b/nsv13/icons/obj/computers.dmi differ diff --git a/nsv13/lore_entries/lore_terminal - Copy.html b/nsv13/lore_entries/lore_terminal - Copy.html new file mode 100644 index 00000000..3850b36b --- /dev/null +++ b/nsv13/lore_entries/lore_terminal - Copy.html @@ -0,0 +1,71 @@ + + + + + + + + + + + diff --git a/nsv13/lore_entries/lore_terminal.txt b/nsv13/lore_entries/lore_terminal.txt new file mode 100644 index 00000000..3850b36b --- /dev/null +++ b/nsv13/lore_entries/lore_terminal.txt @@ -0,0 +1,71 @@ + + + + + + + + + + + diff --git a/nsv13/lore_entries/meltdowns.txt b/nsv13/lore_entries/meltdowns.txt new file mode 100644 index 00000000..431dd7ed --- /dev/null +++ b/nsv13/lore_entries/meltdowns.txt @@ -0,0 +1 @@ +SYSADMIN -> Allcrew@seegnet.kin. RE: Emergency Meltdown proceedures. ` The nuclear reactor is an inherently safe engine, however this does not mean it is foolproof. Dilligence will mean the difference between having a safe, reliable power output which can last for decades, and a nuclear hellfire. `What to do during a meltdown: `-A reactor will melt down when the fission inside it produces an uncontrollable amount of heat (in excess of 300 degrees celsius). If this ever happens, a stationwide alarm will sound. If you hear this alarm, you must act quickly and calmly, as you will have approximately 1 - 2 minutes before the reactor explodes. `-To avert meltdown, simply locate the control console, and choose the 'SCRAM' setting (the button labelled AZ-5). This will immediately lower all control rods and attempt to cool the reactor. Injection of carbon dioxide via the moderator line will help this process. `-In the event of damaged control rods, IMMEDIATELY shut off all supply pumps, filters and evacuate the engineering section IMMEDIATELY to prevent unecessary loss of life. `-As a meltdown occurs, nuclear fuel is deposited all over the station, and must be cleaned up with a shovel. This spent fuel is HIGHLY radioactive, and must be handled with extreme care. If the unthinkable comes to pass, instruct crew to seek shelter in maintenance. To avoid complications, it is recommended that engineers equip radiation proof suits and gas masks, and proceed to clear a path to the evacuation arm with shovels. Remember: Stay safe through vigilance! \ No newline at end of file diff --git a/nsv13/lore_entries/welcome.txt b/nsv13/lore_entries/welcome.txt new file mode 100644 index 00000000..be29c5db --- /dev/null +++ b/nsv13/lore_entries/welcome.txt @@ -0,0 +1 @@ +SYSADMIN -> Allcrew@seegnet.kin. RE: Orientation. ` Greetings crew, congratulations on your placement! It is now company policy to attend all briefings as issued by command staff. Please speak to your commanding officer for clarification on the new procedures. \ No newline at end of file diff --git a/nsv13/sound/effects/computer/alarm.ogg b/nsv13/sound/effects/computer/alarm.ogg new file mode 100644 index 00000000..aa651b43 Binary files /dev/null and b/nsv13/sound/effects/computer/alarm.ogg differ diff --git a/nsv13/sound/effects/computer/alarm_2.ogg b/nsv13/sound/effects/computer/alarm_2.ogg new file mode 100644 index 00000000..022df8c7 Binary files /dev/null and b/nsv13/sound/effects/computer/alarm_2.ogg differ diff --git a/nsv13/sound/effects/computer/alarm_3.ogg b/nsv13/sound/effects/computer/alarm_3.ogg new file mode 100644 index 00000000..a1767b5f Binary files /dev/null and b/nsv13/sound/effects/computer/alarm_3.ogg differ diff --git a/nsv13/sound/effects/computer/alarm_4.ogg b/nsv13/sound/effects/computer/alarm_4.ogg new file mode 100644 index 00000000..518d3782 Binary files /dev/null and b/nsv13/sound/effects/computer/alarm_4.ogg differ diff --git a/nsv13/sound/effects/computer/buzz.ogg b/nsv13/sound/effects/computer/buzz.ogg new file mode 100644 index 00000000..174ad107 Binary files /dev/null and b/nsv13/sound/effects/computer/buzz.ogg differ diff --git a/nsv13/sound/effects/computer/buzz2.ogg b/nsv13/sound/effects/computer/buzz2.ogg new file mode 100644 index 00000000..8e38544f Binary files /dev/null and b/nsv13/sound/effects/computer/buzz2.ogg differ diff --git a/nsv13/sound/effects/computer/error.ogg b/nsv13/sound/effects/computer/error.ogg new file mode 100644 index 00000000..da4781cd Binary files /dev/null and b/nsv13/sound/effects/computer/error.ogg differ diff --git a/nsv13/sound/effects/computer/error2.ogg b/nsv13/sound/effects/computer/error2.ogg new file mode 100644 index 00000000..ab2f9544 Binary files /dev/null and b/nsv13/sound/effects/computer/error2.ogg differ diff --git a/nsv13/sound/effects/computer/error3.ogg b/nsv13/sound/effects/computer/error3.ogg new file mode 100644 index 00000000..d0534ed0 Binary files /dev/null and b/nsv13/sound/effects/computer/error3.ogg differ diff --git a/nsv13/sound/effects/computer/scroll1.ogg b/nsv13/sound/effects/computer/scroll1.ogg new file mode 100644 index 00000000..b7f660f0 Binary files /dev/null and b/nsv13/sound/effects/computer/scroll1.ogg differ diff --git a/nsv13/sound/effects/computer/scroll2.ogg b/nsv13/sound/effects/computer/scroll2.ogg new file mode 100644 index 00000000..2be4eee8 Binary files /dev/null and b/nsv13/sound/effects/computer/scroll2.ogg differ diff --git a/nsv13/sound/effects/computer/scroll3.ogg b/nsv13/sound/effects/computer/scroll3.ogg new file mode 100644 index 00000000..6ede48eb Binary files /dev/null and b/nsv13/sound/effects/computer/scroll3.ogg differ diff --git a/nsv13/sound/effects/computer/scroll4.ogg b/nsv13/sound/effects/computer/scroll4.ogg new file mode 100644 index 00000000..4c010036 Binary files /dev/null and b/nsv13/sound/effects/computer/scroll4.ogg differ diff --git a/nsv13/sound/effects/computer/scroll5.ogg b/nsv13/sound/effects/computer/scroll5.ogg new file mode 100644 index 00000000..24ade161 Binary files /dev/null and b/nsv13/sound/effects/computer/scroll5.ogg differ diff --git a/nsv13/sound/effects/computer/scroll_short.ogg b/nsv13/sound/effects/computer/scroll_short.ogg new file mode 100644 index 00000000..a26c926b Binary files /dev/null and b/nsv13/sound/effects/computer/scroll_short.ogg differ diff --git a/nsv13/sound/effects/computer/scroll_short_2.ogg b/nsv13/sound/effects/computer/scroll_short_2.ogg new file mode 100644 index 00000000..9c008075 Binary files /dev/null and b/nsv13/sound/effects/computer/scroll_short_2.ogg differ diff --git a/nsv13/sound/effects/computer/scroll_start.ogg b/nsv13/sound/effects/computer/scroll_start.ogg new file mode 100644 index 00000000..d0df8993 Binary files /dev/null and b/nsv13/sound/effects/computer/scroll_start.ogg differ diff --git a/nsv13/sound/effects/computer/startup.ogg b/nsv13/sound/effects/computer/startup.ogg new file mode 100644 index 00000000..06478a06 Binary files /dev/null and b/nsv13/sound/effects/computer/startup.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 7e80c6f2..e1440ddd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3053,6 +3053,7 @@ #include "hyperstation\code\datums\traits\good.dm" #include "hyperstation\code\datums\traits\neutral.dm" #include "hyperstation\code\datums\weather\oxygen_rain.dm" +#include "hyperstation\code\game\machinery\lore_terminal.dm" #include "hyperstation\code\game\objects\railings.dm" #include "hyperstation\code\game\objects\items\cosmetics.dm" #include "hyperstation\code\game\objects\items\storage\big_bag.dm"