From b56522f6e5f808b09a4420ee27c1fbcf8eaeb9c3 Mon Sep 17 00:00:00 2001 From: Kano <89972582+kano-dot@users.noreply.github.com> Date: Tue, 17 Mar 2026 12:31:34 +0300 Subject: [PATCH] Ports lore consoles for mapping related things (#21986) ## About PR Ports https://github.com/ParadiseSS13/Paradise/pull/29896, all credit goes to warriorstar-orion for this very solid feature! Additionally, the consoles can be edited by storytellers or any ghost that has admin permissions ## Images Screenshot_30 Screenshot_31 ### Asset Licenses The following assets that **have not** been created by myself are included in this PR: | Path | Original Author | License | | --- | --- | --- | | `loreconsole.dm`, `LoreConsole.tsx`, `LoreConsole.scss`, `amberpos.scss` | warriorstar-orion (Paradise Station) | AGPL 3 | | `loreconsole` icon_state in icons/obj/modular_computers/modular_terminal.dmi | warriorstar-orion (Paradise Station) | CC 3.0 BY-SA | --- aurorastation.dme | 1 + code/game/machinery/computer/computer.dm | 2 +- code/game/machinery/computer/loreconsole.dm | 97 ++++++++++++++++++ code/game/machinery/machinery.dm | 15 ++- .../kano-dot-lore-consoles-port.yml | 6 ++ .../modular_computers/modular_terminal.dmi | Bin 66612 -> 67707 bytes .../quarantined_outpost.dmm | 52 ++-------- .../quarantined_outpost_objects.dm | 28 ++--- tgui/packages/tgui/index.tsx | 1 + tgui/packages/tgui/interfaces/LoreConsole.tsx | 71 +++++++++++++ .../tgui/styles/interfaces/LoreConsole.scss | 17 +++ tgui/packages/tgui/styles/main.scss | 1 + .../packages/tgui/styles/themes/amberpos.scss | 81 +++++++++++++++ 13 files changed, 309 insertions(+), 63 deletions(-) create mode 100644 code/game/machinery/computer/loreconsole.dm create mode 100644 html/changelogs/kano-dot-lore-consoles-port.yml create mode 100644 tgui/packages/tgui/interfaces/LoreConsole.tsx create mode 100644 tgui/packages/tgui/styles/interfaces/LoreConsole.scss create mode 100644 tgui/packages/tgui/styles/themes/amberpos.scss diff --git a/aurorastation.dme b/aurorastation.dme index cf918ba819f..1ef9a3bc63a 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1042,6 +1042,7 @@ #include "code\game\machinery\computer\computer.dm" #include "code\game\machinery\computer\guestpass.dm" #include "code\game\machinery\computer\law.dm" +#include "code\game\machinery\computer\loreconsole.dm" #include "code\game\machinery\computer\Operating.dm" #include "code\game\machinery\computer\pod.dm" #include "code\game\machinery\computer\robot.dm" diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 7e760c3fe9b..f782227bfb9 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -89,7 +89,7 @@ if(dir == SOUTH) layer = ABOVE_HUMAN_LAYER ClearOverlays() - if(stat & NOPOWER) + if(!interact_offline && (stat & NOPOWER)) // we only stop here if we care about power set_light(0) return else diff --git a/code/game/machinery/computer/loreconsole.dm b/code/game/machinery/computer/loreconsole.dm new file mode 100644 index 00000000000..40bd7614d3b --- /dev/null +++ b/code/game/machinery/computer/loreconsole.dm @@ -0,0 +1,97 @@ +/datum/lore_console_entry + var/title + var/body + +/datum/lore_console_entry/New(title_ = "", body_) + title = title_ + body = body_ + +/** + * A useful object to convey the lore of your away_site maps, opposed to papers + * How to use it? + * * Create `new/datum/lore_console_entry(title, body)` instances in the `entries` list + * * This list can contain multiple datum entries, each entry represents a page + */ +ABSTRACT_TYPE(/obj/machinery/computer/terminal/loreconsole) + name = "information terminal" + desc = "A terminal with a blank screen, waiting to receive an input." + icon_screen = "loreconsole" + icon_keyboard = "power_key" + light_power_on = 2 + var/list/entries = list() + +/obj/machinery/computer/terminal/loreconsole/attack_hand(mob/user) + ui_interact(user) + +/obj/machinery/computer/terminal/loreconsole/ui_state(mob/user) + return GLOB.default_state + +/obj/machinery/computer/terminal/loreconsole/ui_interact(mob/user, datum/tgui/ui = null) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "LoreConsole", name) + ui.open() + +/obj/machinery/computer/terminal/loreconsole/ui_static_data(mob/user) + var/list/data = list() + data["entries"] = list() + for(var/datum/lore_console_entry/entry as anything in entries) + data["entries"] += list(list("title" = entry.title, "body" = entry.body)) + + return data + +// Allows storytellers and ghosts with admin perms edit entries. +/obj/machinery/computer/terminal/loreconsole/attack_ghost(mob/user) + if(isstoryteller(user) || check_rights(R_ADMIN|R_FUN, TRUE, user)) + + var/choice = tgui_input_list(user, "Would you like to add, edit or remove entries?", "Manage Entries", list("Add", "Edit", "Remove")) + if(choice) + var/list/entry_titles + if(length(entries)) + for(var/datum/lore_console_entry/E in entries) + LAZYADDASSOC(entry_titles, E.title, E) // title is key, entry datum is its value + + switch(choice) + if("Add") + var/new_title = tgui_input_text(user, "Enter the title of the entry", "Entry Title") + var/new_body = tgui_input_text(user, "Enter the body of the entry", "Entry Body", multiline = TRUE) + if(!new_title || !new_body) // no info, no entries + return + + entries += new/datum/lore_console_entry(new_title, new_body) + to_chat(user, SPAN_NOTICE("A new entry has been added.")) + return + + if("Edit") + if(!length(entries)) + to_chat(user, SPAN_WARNING("There are no entries to edit!")) + return + + var/edit_choice = tgui_input_list(user, "Choose an entry to edit.", "Manage Entries", entry_titles) + if(!edit_choice) + return + + var/datum/lore_console_entry/edit_datum = entry_titles[edit_choice] + edit_datum.title = tgui_input_text(user, "Enter the title of the entry", "Entry Title", default = edit_datum.title) + edit_datum.body = tgui_input_text(user, "Enter the body of the entry", "Entry Body", default = edit_datum.body, multiline = TRUE) + to_chat(user, SPAN_NOTICE("An entry has been edited.")) + return + + if("Remove") + if(!length(entries)) + to_chat(user, SPAN_WARNING("There are no entries to remove!")) + return + + var/remove_choice = tgui_input_list(user, "Choose an entry to remove.", "Manage Entries", entry_titles) + if(!remove_choice) + return + + var/datum/lore_console_entry/remove_datum = entry_titles[remove_choice] + entries -= remove_datum + to_chat(user, SPAN_NOTICE("An entry has been removed.")) + return + + ..() + +ABSTRACT_TYPE(/obj/machinery/computer/terminal/loreconsole/always_powered) + interact_offline = TRUE diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index a8da4f9dbce..b5f0d3fe340 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -141,15 +141,20 @@ Class Procs: var/uid var/panel_open = 0 var/global/gl_uid = 1 - var/interact_offline = 0 // Can the machine be interacted with while de-powered. - var/printing = 0 // Is this machine currently printing anything? - var/list/processing_parts // Component parts queued for processing by the machine. Expected type: `/obj/item/stock_parts` Unused currently + /// Can the machine be interacted with while de-powered? + var/interact_offline = FALSE + /// Is this machine currently printing anything? + var/printing = FALSE + /// Component parts queued for processing by the machine. Expected type: `/obj/item/stock_parts` Unused currently. + var/list/processing_parts /// Bitflag. What is being processed. One of `MACHINERY_PROCESS_*`. var/processing_flags - var/clicksound //played sound on usage - var/clickvol = 40 //volume + /// Played sound on usage. + var/clicksound + /// Volume. + var/clickvol = 40 /// Signaller attached to the machine var/obj/item/assembly/signaler/signaler /// Overmap sector the machine is linked to diff --git a/html/changelogs/kano-dot-lore-consoles-port.yml b/html/changelogs/kano-dot-lore-consoles-port.yml new file mode 100644 index 00000000000..2809b2fd8a8 --- /dev/null +++ b/html/changelogs/kano-dot-lore-consoles-port.yml @@ -0,0 +1,6 @@ +author: Kano + +delete-after: True + +changes: + - rscadd: "Ported lore consoles from Paradise Station." diff --git a/icons/obj/modular_computers/modular_terminal.dmi b/icons/obj/modular_computers/modular_terminal.dmi index 8fb790834b989913673ccc09c07907c8875eea25..6e381874f5c0c7fe11fdee32ccdfcfb2d544805f 100644 GIT binary patch delta 22594 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

TJUFg`T^;^w?IN9$87iCMvC;)TDy8Sc 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 Y#?-4xuO1Dz0KXuet2Z@EuiSm~FHacy{Qv*} delta 21491 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 Zd~liW8DIN6NEwPBIA(2URd(1t_HUR8X@vj) diff --git a/maps/away/away_site/quarantined_outpost/quarantined_outpost.dmm b/maps/away/away_site/quarantined_outpost/quarantined_outpost.dmm index 1ff44df3fb5..5f1a257205f 100644 --- a/maps/away/away_site/quarantined_outpost/quarantined_outpost.dmm +++ b/maps/away/away_site/quarantined_outpost/quarantined_outpost.dmm @@ -797,10 +797,6 @@ /obj/item/material/knife{ pixel_x = -9 }, -/obj/item/storage/box/produce{ - pixel_y = 9; - pixel_x = 6 - }, /obj/item/reagent_containers/food/condiment/enzyme{ pixel_y = 3 }, @@ -4229,13 +4225,16 @@ pixel_x = -9; pixel_y = 8 }, -/obj/item/paper/fluff/quarantined_outpost/maintenance_log{ - pixel_x = 5 - }, /obj/item/pen/black{ pixel_y = -2; pixel_x = -8 }, +/obj/item/clipboard{ + pixel_x = 5 + }, +/obj/item/paper{ + pixel_x = 5 + }, /turf/simulated/floor/tiled/gunmetal/full, /area/quarantined_outpost/server_relay/south_east) "cYX" = ( @@ -8963,10 +8962,6 @@ "gcC" = ( /obj/effect/floor_decal/industrial/hatch/grey, /obj/structure/table/rack/retail_shelf, -/obj/item/storage/box/freezer/organcooler{ - pixel_y = 16; - pixel_x = 8 - }, /obj/item/reagent_containers/glass/bottle/inaprovaline{ pixel_x = -8 }, @@ -16403,10 +16398,6 @@ "kVw" = ( /obj/structure/table/standard, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/storage/box/flares{ - pixel_y = 13; - pixel_x = 2 - }, /obj/random/dirt_75, /turf/simulated/floor/tiled/dark/full/airless, /area/quarantined_outpost/security) @@ -20080,10 +20071,6 @@ dir = 6 }, /obj/structure/table/standard, -/obj/item/storage/box/sharps{ - pixel_y = 11; - pixel_x = 6 - }, /obj/item/reagent_containers/spray/cleaner{ desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; icon_state = "sterilesprayblue"; @@ -20503,15 +20490,6 @@ }, /turf/simulated/floor/plating, /area/quarantined_outpost/elevator_hallway) -"nIX" = ( -/obj/structure/railing/mapped{ - dir = 8 - }, -/obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/machinery/portable_atmospherics/canister/empty/boron, -/obj/effect/decal/rolling_fog, -/turf/simulated/floor/plating, -/area/quarantined_outpost/research) "nJg" = ( /obj/effect/decal/cleanable/blood, /turf/simulated/floor/tiled/white, @@ -22498,9 +22476,6 @@ }, /obj/random/dirt_75, /obj/effect/floor_decal/industrial/outline/custodial, -/obj/structure/janitorialcart{ - dir = 4 - }, /turf/simulated/floor/tiled, /area/quarantined_outpost/dorm_hallway) "oWe" = ( @@ -22612,8 +22587,6 @@ /obj/structure/closet/crate/freezer{ name = "Fridge" }, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/freezer/organcooler, /turf/simulated/floor/tiled/freezer{ name = "cooled tiles"; temperature = 253.15 @@ -23885,7 +23858,6 @@ /obj/machinery/light/small/broken{ dir = 8 }, -/obj/machinery/portable_atmospherics/canister/empty/boron, /obj/effect/floor_decal/corner/yellow{ dir = 8 }, @@ -24261,10 +24233,6 @@ /area/quarantined_outpost/cargo_bay) "qfQ" = ( /obj/structure/table/standard, -/obj/item/storage/box/sharps{ - pixel_y = 12; - pixel_x = -7 - }, /obj/item/reagent_containers/spray/cleaner{ desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; icon_state = "sterilesprayblue"; @@ -28418,8 +28386,6 @@ }, /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/closet/secure_closet/guncabinet, -/obj/item/storage/box/shotgunshells, -/obj/item/storage/box/shotgunshells, /obj/item/ammo_magazine/c762/sol, /obj/item/ammo_magazine/c762/sol, /obj/item/ammo_magazine/c762/sol, @@ -28427,7 +28393,6 @@ /obj/item/ammo_magazine/c762/sol, /obj/item/ammo_magazine/c762/sol, /obj/item/ammo_magazine/c762/sol, -/obj/item/storage/box/shotgunshells, /turf/simulated/floor/tiled/dark/full/airless, /area/quarantined_outpost/security) "sOv" = ( @@ -34550,7 +34515,6 @@ dir = 4 }, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/structure/engineeringcart/half_filled, /obj/machinery/light/small/maybe_broken/decayed{ dir = 1 }, @@ -35336,9 +35300,9 @@ /area/quarantined_outpost/entrance_maintenance) "xwn" = ( /obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/computer/terminal/inactive, /obj/effect/decal/cleanable/cobweb2, /obj/random/dirt_75, +/obj/machinery/computer/terminal/loreconsole/always_powered/quarantined_outpost/maintenance_log, /turf/simulated/floor/tiled/gunmetal/full, /area/quarantined_outpost/server_relay/south_east) "xwE" = ( @@ -75670,7 +75634,7 @@ dPa ksz kgg ppZ -nIX +cLu cLu cLu aMQ diff --git a/maps/away/away_site/quarantined_outpost/quarantined_outpost_objects.dm b/maps/away/away_site/quarantined_outpost/quarantined_outpost_objects.dm index 71f3bcdf169..b2da36a8fdb 100644 --- a/maps/away/away_site/quarantined_outpost/quarantined_outpost_objects.dm +++ b/maps/away/away_site/quarantined_outpost/quarantined_outpost_objects.dm @@ -1112,9 +1112,21 @@ GLOBAL_LIST_EMPTY(trackables_pool) /obj/structure/filler/ex_act() return -/*###################################### - PAPERS -######################################*/ +/*#################################### + PAPERS & LORE CONSOLES +####################################*/ + +/obj/machinery/computer/terminal/loreconsole/always_powered/quarantined_outpost/maintenance_log + entries = list( + new/datum/lore_console_entry( + "\[11 FEB 2274 - CYCLE 451 - ATKINSON\]", {" +


+ Regular check-up, all green. +

+ We're pushing more and more processing into the labs, even though the gear wasn't built for this kind of workload. Miracles don't happen by itself, + we need proper requipment and being in the middle of nowhere is no excuse. Open a ticket, get us some real hardware. Maybe then we can stop having to + manually pulse this box every time the red lights start blinking. + "})) /obj/item/paper/fluff/quarantined_outpost/engineers_note name = "crumpled instructions" @@ -1140,16 +1152,6 @@ GLOBAL_LIST_EMPTY(trackables_pool) ...bring the equipment to... dispose of... if you see any, make sure they stay down... burn... "} -/obj/item/paper/fluff/quarantined_outpost/maintenance_log - name = "maintenance log" - info = {" - ... -

- - \[11 FEB 2274 - CYCLE 451 - ATKINSON\] Regular check-up, all green. Lately we allocate more and more processing space for the labs, even though these equipments - weren't meant to pull off such an intense workload. We may be in the middle of damn nowhere, but hoping for miracles won't get you too far either. Put a ticket, - get us some proper hardware and then maybe you will see less blinking red lights in the box that we have to pulse to reboot every now and then. - "} - /obj/item/paper/fluff/quarantined_outpost/venusians_note name = "hastily written note" info = {" diff --git a/tgui/packages/tgui/index.tsx b/tgui/packages/tgui/index.tsx index c9868e38c12..8d2595cb74e 100644 --- a/tgui/packages/tgui/index.tsx +++ b/tgui/packages/tgui/index.tsx @@ -33,6 +33,7 @@ import './styles/themes/hammertail.scss'; import './styles/themes/hephaestus.scss'; import './styles/themes/sol.scss'; import './styles/themes/vaurca.scss'; +import './styles/themes/amberpos.scss'; import { StoreProvider, configureStore } from './store'; diff --git a/tgui/packages/tgui/interfaces/LoreConsole.tsx b/tgui/packages/tgui/interfaces/LoreConsole.tsx new file mode 100644 index 00000000000..616b7e56303 --- /dev/null +++ b/tgui/packages/tgui/interfaces/LoreConsole.tsx @@ -0,0 +1,71 @@ +import { useBackend, useLocalState } from '../backend'; +import { Box, Button, Section, Stack } from '../components'; +import { Window } from '../layouts'; + +type LoreEntry = { + title?: string; + body: string; +}; + +type LoreConsoleData = { + entries: LoreEntry[]; +}; + +export const LoreConsole = (props, context) => { + const { data } = useBackend(context); + const { entries } = data; + const [currentPage, setCurrentPage] = useLocalState( + context, + 'currentPage', + 0, + ); + const entry = entries[currentPage]; + + return ( + + + {entries.length > 1 && ( + +
+ + +
+
+ )} + +

{entry.title && entry.title}

+ +
+
+
+ ); +}; diff --git a/tgui/packages/tgui/styles/interfaces/LoreConsole.scss b/tgui/packages/tgui/styles/interfaces/LoreConsole.scss new file mode 100644 index 00000000000..8aa6e81c243 --- /dev/null +++ b/tgui/packages/tgui/styles/interfaces/LoreConsole.scss @@ -0,0 +1,17 @@ +@use '../base.scss'; + +$background-color: rgba(0, 0, 0, 0.33) !default; + +.LoreConsole__titleText { + font-size: 300%; + font-weight: bold; + margin: 0; + padding: 4px; +} + +.LoreConsole__entryText { + color: chocolate; + font-size: 150%; + font-family: 'Courier New', Courier, monospace; + padding: 32px; +} diff --git a/tgui/packages/tgui/styles/main.scss b/tgui/packages/tgui/styles/main.scss index 13155322f24..3f4fb553e78 100644 --- a/tgui/packages/tgui/styles/main.scss +++ b/tgui/packages/tgui/styles/main.scss @@ -54,6 +54,7 @@ @include meta.load-css('./interfaces/PersonalCrafting.scss'); @include meta.load-css('./interfaces/RequestManager.scss'); @include meta.load-css('./interfaces/Radio.scss'); +@include meta.load-css('./interfaces/LoreConsole.scss'); // Layouts @include meta.load-css('./layouts/Layout.scss'); diff --git a/tgui/packages/tgui/styles/themes/amberpos.scss b/tgui/packages/tgui/styles/themes/amberpos.scss new file mode 100644 index 00000000000..3f2f815d8de --- /dev/null +++ b/tgui/packages/tgui/styles/themes/amberpos.scss @@ -0,0 +1,81 @@ +.theme-amberpos:root { + // Base + --color-base: hsl(24, 100%, 5%); + --color-primary: hsl(from var(--color-base) h s calc(l - 30)); + --color-label: #d86c00; + --secondary-saturation: 10; + --secondary-lightness-adjustment: -56; + --base-gradient-spread: 0; + --border-radius-unit: 0; + --base-font-stack: + ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, + 'DejaVu Sans Mono', monospace; + + // Components + --button-color: var(--color-label); + --button-background-default: var(--color-base); + --button-background-selected: hsl(0, 90%, 35%); + --button-background-caution: hsl(30, 85%, 40%); + --button-background-danger: hsl(31, 100%, 30%); + --progress-bar-background: hsl(0, 0%, 0%, 0.5); + --input-background: transparent; + + // Background + body, + :root { + background-color: var(--color-base); + } + + .Window, + .Window__dimmer { + background-color: var(--color-base); + background-image: none; + } + + .Button { + font-family: var(--base-font-stack); + border: var(--border-thickness-small) outset var(--color-base); + outline: var(--border-thickness-tiny) solid hsl(60, 6%, 8%); + + &-disabled { + color: hsl(60, 6%, 77%); + font-family: var(--base-font-stack); + + &:hover { + color: hsl(0, 0%, 100%); + } + } + + &--selected { + color: var(--color-white); + border-style: inset; + } + } + + .Section { + font-family: var(--base-font-stack); + + &__titleText { + color: var(--color-label); + } + } + + div, + h1, + h2, + h3, + h4 { + font-family: var(--base-font-stack); + color: var(--color-label); + } + + h1 { + font-size: 250%; + padding: 32px; + padding-bottom: 0; + } + + h2 { + font-size: 120%; + } +}