From dc0d9e5e39878e9ccd07aadfb3bfccf6d830372c Mon Sep 17 00:00:00 2001 From: Martin Sukany Date: Tue, 24 Mar 2026 13:01:49 +0100 Subject: [PATCH] update --- README.org | 99 +- alien-rpg-save.el | 7 + alien-rpg.el | 1219 +++++++++++++++++ ...026-03-24_1234-Copilot-claude-opus-4.6.org | 548 ++++++++ paluby/paluba-B.org | 25 +- paluby/paluba-C.org | 12 +- paluby/paluba-D.org | 19 +- paluby/paluba-E.org | 8 +- paluby/paluba-F.org | 19 +- paluby/paluba-G.org | 21 +- paluby/paluba-H.org | 20 +- stanice.org | 32 +- workflow.org | 325 ++--- 13 files changed, 2016 insertions(+), 338 deletions(-) create mode 100644 alien-rpg-save.el create mode 100644 alien-rpg.el create mode 100644 gptel-chats/2026-03-24_1234-Copilot-claude-opus-4.6.org diff --git a/README.org b/README.org index 525a6bc..daae103 100644 --- a/README.org +++ b/README.org @@ -1,54 +1,79 @@ #+TITLE: Alien RPG — Mapy vesmírné stanice (přístupná verze) #+AUTHOR: Přístupný přepis map od Miroslava Křenka -#+DESCRIPTION: Kompletní textový přepis palubních plánů pro nevidomého hráče +#+DESCRIPTION: Kompletní přístupný herní systém pro nevidomého hráče #+STARTUP: overview * O tomto projektu -Tento adresář obsahuje kompletní textový přepis map vesmírné stanice -pro stolní RPG Alien. Mapy vytvořil Miroslav Křenek a obsahují -10 palub (A–J) ve formátu PDF. +Přístupný herní systém pro stolní RPG Alien. Obsahuje kompletní textový +přepis 10 palub vesmírné stanice a *interaktivní Elisp herní engine* +pro Doom Emacs. -Přepis je navržen tak, aby nevidomý hráč mohl plnohodnotně hrát -s vidícími spoluhráči. +Originální mapy vytvořil Miroslav Křenek (10 palub A–J, formát PDF). + +* Jak to funguje + +** Během hry: alien-rpg.el (SPC G prefix) + +Vše se ovládá přes =SPC G= v Doom Emacsu. Žádné otevírání souborů, +žádné hledání, žádné scrollování. Jeden stisk = jedna informace. + +Instalace — přidej do =~/.doom.d/config.el=: +#+begin_src emacs-lisp +(load! "~/alienrpg/alien-rpg") +#+end_src + +| Klávesa | Akce | +|-----------+-----------------------| +| =SPC G w= | Kde jsem | +| =SPC G m= | Přesun | +| =SPC G r= | Hodit kostkou | +| =SPC G s= | Stav postavy | +| =SPC G p= | Najít cestu | +| =SPC G k= | Klíčová místa | +| =SPC G h= | Nastavit Health | +| =SPC G S= | Nastavit Stress | + +Kompletní seznam: =SPC G= a počkej na which-key popup. + +** Před hrou: org soubory (referenční) + +Org soubory slouží k prostudování stanice *před* hrou. +Nejsou určeny k používání během hry (příliš dlouhé, pomalé). * Struktura souborů -| Soubor | Obsah | +| Soubor | Účel | |------------------------+----------------------------------------------------| +| =alien-rpg.el= | *HLAVNÍ* — interaktivní herní engine pro Doom Emacs | +| =workflow.org= | Návod, klávesové zkratky, příprava | | =README.org= | Tento soubor — rozcestník | -| =stanice.org= | Celkový přehled stanice, boční pohled, propojení | -| =workflow.org= | Návod jak hrát jako nevidomý hráč | -| =herni_karta.org= | Herní karta — prof. Héctor Navarre | -| =paluby/paluba-A.org= | Paluba A — Astrometrická observatoř | -| =paluby/paluba-B.org= | Paluba B — Řízení provozu | -| =paluby/paluba-C.org= | Paluba C — Zdraví a odpočinek | -| =paluby/paluba-D.org= | Paluba D — Recepce a výzkum | -| =paluby/paluba-E.org= | Paluba E — Kajuty a stravování | -| =paluby/paluba-F.org= | Paluba F — Nápravné zařízení | -| =paluby/paluba-G.org= | Paluba G — Hangáry a údržba | -| =paluby/paluba-GH.org= | Komunikační věž (propojení G a H) | -| =paluby/paluba-H.org= | Paluba H — Průmyslový komplex | -| =paluby/paluba-I.org= | Paluba I — Záchranné moduly | -| =paluby/paluba-J.org= | Paluba J — Strojovna reaktoru | +| =stanice.org= | Celkový přehled stanice (referenční) | +| =paluby/paluba-X.org= | Detailní popisy palub A–J (referenční) | +| =reference_pdf/= | Originální PDF mapy | -* Jak číst popisy palub +* Postava -Každý soubor paluby má stejnou strukturu: -1. *Základní info* — název, účel, měřítko -2. *Celkový popis* — slovní popis tvaru a rozložení -3. *Seznam místností* — každá místnost s přibližnou polohou -4. *Dveře a průchody* — kde jsou tlusté červené dveře (překážky) -5. *Průlezy a šachty* — vertikální propojení na jiné paluby -6. *Taktické poznámky* — co je důležité pro hraní +Prof. Héctor Navarre, Ph.D. — biochemický inženýr, 74 let. -* Konvence pro popis polohy +Silné hody (7 kostek): Ranged Combat, Manipulation +Střední hody (5 kostek): Close Combat, Heavy Machinery, Observation +Talent: Analýza (Observation → informace o organismu/předmětu) -Polohy jsou uváděny jako: -- *Sever* (S) = nahoře na mapě -- *Jih* (J) = dole na mapě -- *Západ* (Z) = vlevo na mapě -- *Východ* (V) = vpravo na mapě -- *Střed* = centrální část paluby +Data postavy jsou přímo v =alien-rpg.el= — =SPC G s= zobrazí stav, +=SPC G i= zobrazí dovednosti, =SPC G r= hodí kostkou. -Centrální šachta je vždy ve středu paluby (na palubách B–J). +* Přesnost dat + +Všechna data v =alien-rpg.el= jsou ověřena proti textovým vrstvám +originálních PDF map pomocí =pdftotext=. Místnosti a jejich názvy +odpovídají přesně textu na mapách. + +Propojení místností (graf sousedností) je odvozeno z prostorového +rozložení na mapách. Některé detaily (přesné tvary chodeb) nelze +z rastrových map extrahovat — v těchto případech je propojení +konzervativní (pouze zřejmé sousednosti). + +Sekce "Dveře" v org souborech palub byly přepracovány: předchozí +automatická detekce červených hran v PDF byla nespolehlivá a obsahovala +falešné pozitivy. Aktuální data uvádějí pouze ověřitelné informace. diff --git a/alien-rpg-save.el b/alien-rpg-save.el new file mode 100644 index 0000000..7b884e4 --- /dev/null +++ b/alien-rpg-save.el @@ -0,0 +1,7 @@ +;; Alien RPG — uložený herní stav +;; Uloženo: 2026-03-24 12:46 +(setq alien-rpg-state + '(:health 4 :stress 0 :current-room "F-vězeňská-služba" :weapons ("Maceta") + :armor nil :extra-gear nil :injuries nil :xp 0 :story-points 0 :notes nil + :buddy nil :rival nil) +) diff --git a/alien-rpg.el b/alien-rpg.el new file mode 100644 index 0000000..5970449 --- /dev/null +++ b/alien-rpg.el @@ -0,0 +1,1219 @@ +;;; alien-rpg.el --- Přístupný herní engine pro Alien RPG -*- lexical-binding: t; -*- +;; +;; Autor: Accessibility tool pro nevidomého hráče +;; Popis: Interaktivní navigace, sledování stavu, hod kostkou. +;; Všechna data v Elispu — žádné hledání v souborech. +;; Ovládání přes SPC G (Doom Emacs leader prefix). +;; +;; Filosofie: +;; - NULA závislosti na čtení org souborů během hry +;; - Minibuffer-driven: completion, ne hledání +;; - Jeden stisk → odpověď. Žádné scrollování. +;; - Přesnost: pouze data ověřená z PDF. Žádné vymyšlené dveře. +;; +;;; Code: + +(require 'cl-lib) + +;; ══════════════════════════════════════════════════════════════ +;; DATA: Paluby +;; ══════════════════════════════════════════════════════════════ + +(defvar alien-rpg-decks + '((:id "A" :name "Astrometrická observatoř" + :purpose "Astronomické pozorování" + :size "Malá (A2)" + :scale "5 m" + :position 1 + :notes "Izolovaná od centrální šachty. Přístup pouze z paluby B (západ). Slepá ulička.") + + (:id "B" :name "Řízení provozu" + :purpose "Velitelský můstek, řízení stanice" + :size "Střední (A2)" + :scale "5 m" + :position 2 + :notes "Strategicky nejdůležitější paluba. MU/TH/UR (hlavní počítač) a řídící středisko.") + + (:id "C" :name "Zdraví a odpočinek" + :purpose "Medicína, rekreace, botanika" + :size "Střední (A2)" + :scale "5 m" + :position 3 + :notes "Ošetřovna, laboratoř, arboretum, hydroponické zahrady.") + + (:id "D" :name "Recepce a výzkum" + :purpose "Vědecké laboratoře, příjem návštěvníků" + :size "Střední (A2)" + :scale "5 m" + :position 4 + :notes "Návštěvnický dokovací port (přístup do vesmíru). Astrofyzikální laboratoř.") + + (:id "E" :name "Kajuty a stravování" + :purpose "Ubytování posádky, stravování" + :size "Střední (A2)" + :scale "5 m" + :position 5 + :notes "6 kajut, jídelna, tělocvična. Poslední 'civilizovaná' paluba.") + + (:id "F" :name "Nápravné zařízení" + :purpose "Vězeňské zařízení" + :size "Velká (A1)" + :scale "5 m" + :position 6 + :notes "ZBROJNICE (sever-střed). Symetrické: západ = východ. 6 průlezů na G.") + + (:id "G" :name "Hangáry a údržba" + :purpose "Hangáry, dokovací porty, údržba" + :size "Velká (A1)" + :scale "5 m" + :position 7 + :notes "2 hangáry, 2 dok. porty, 4 EVA pody, kryopody. Nejvíce průlezů (9).") + + (:id "H" :name "Průmyslový komplex" + :purpose "Energetika, průmysl, tavení" + :size "Velmi velká (A1, 10m měřítko)" + :scale "10 m" + :position 8 + :notes "NEJVĚTŠÍ paluba! Nádrž toxických plynů, plasma, dílny. Průlezy na G.") + + (:id "I" :name "Záchranné moduly" + :purpose "Evakuace — únikové kapsle" + :size "Střední (A2)" + :scale "5 m" + :position 9 + :notes "Záchranné moduly/kapsle. Na mapě bez textových popisků místností.") + + (:id "J" :name "Strojovna reaktoru" + :purpose "Energetický reaktor stanice" + :size "Střední (A2)" + :scale "5 m" + :position 10 + :notes "Nejnižší paluba. 3 baterie. Slepá ulička (jen nahoru). Zničení = konec stanice.")) + "Data o palubách stanice. Ověřeno z PDF textových vrstev.") + +;; ══════════════════════════════════════════════════════════════ +;; DATA: Místnosti +;; ══════════════════════════════════════════════════════════════ + +(defvar alien-rpg-rooms + '(;; === Paluba A === + (:id "A-observatoř" :deck "A" :name "Observatoř" + :location "Celá paluba" :note "Jeden velký otevřený prostor. Pravděpodobně kopule/okna." + :connections ("B-průchod-A")) + + ;; === Paluba B === + (:id "B-observatoř" :deck "B" :name "Observatoř" + :location "Sever" :note "Pozorovací místnost" + :connections ("B-kancelář-vedoucího" "B-řídící-středisko")) + (:id "B-kancelář-vedoucího" :deck "B" :name "Kancelář vedoucího stanice" + :location "Sever-střed" :note "Může obsahovat důležité dokumenty/přístupy" + :connections ("B-observatoř" "B-zasedací" "B-řídící-středisko")) + (:id "B-zasedací" :deck "B" :name "Zasedací místnost" + :location "Severozápad" :note "Porady" + :connections ("B-kancelář-vedoucího" "B-průchod-A")) + (:id "B-řídící-středisko" :deck "B" :name "Řídící středisko" + :location "Sever-východ" :note "Hlavní velín. Monitorování a ovládání systémů stanice." + :connections ("B-observatoř" "B-kancelář-vedoucího" "B-wc-horní")) + (:id "B-wc-horní" :deck "B" :name "WC (horní)" + :location "Východ" :note "" + :connections ("B-řídící-středisko" "B-wc-dolní")) + (:id "B-wc-dolní" :deck "B" :name "WC (dolní)" + :location "Východ" :note "" + :connections ("B-wc-horní" "B-kuchyňka")) + (:id "B-průchod-A" :deck "B" :name "Průchod na palubu A" + :location "Západ" :note "Jediný přístup na palubu A" + :connections ("B-zasedací" "A-observatoř" "B-mu-th-ur")) + (:id "B-mu-th-ur" :deck "B" :name "MU/TH/UR" + :location "Jih-střed" :note "Hlavní počítač stanice (Mother). Protokoly, logy, senzory." + :connections ("B-průchod-A" "B-kuchyňka" "B-centrální-šachta")) + (:id "B-kuchyňka" :deck "B" :name "Kuchyňka" + :location "Jihovýchod" :note "" + :connections ("B-mu-th-ur" "B-sklad" "B-wc-dolní")) + (:id "B-sklad" :deck "B" :name "Sklad" + :location "Jihovýchod (jižněji)" :note "" + :connections ("B-kuchyňka" "B-centrální-šachta")) + (:id "B-centrální-šachta" :deck "B" :name "Centrální šachta" + :location "Střed" :note "Přístup na paluby C–J" + :connections ("B-mu-th-ur" "B-sklad" + "C-centrální-šachta" "D-centrální-šachta" "E-centrální-šachta" + "F-centrální-šachta" "G-centrální-šachta" "H-centrální-šachta" + "I-centrální-šachta" "J-centrální-šachta")) + + ;; === Paluba C === + (:id "C-společenská" :deck "C" :name "Společenská místnost" + :location "Sever-střed" :note "Velká místnost pro odpočinek" + :connections ("C-sauna" "C-ošetřovna" "C-centrální-šachta")) + (:id "C-sauna" :deck "C" :name "Sauna, sprchy, WC" + :location "Severovýchod" :note "Sauna, sprchy, WC — společná zóna. Vlhko, pára." + :connections ("C-společenská" "C-zotavovací")) + (:id "C-ošetřovna" :deck "C" :name "Ošetřovna a laboratoř" + :location "Sever-západ" :note "Léčení a analýza vzorků. Vědecké vybavení." + :connections ("C-společenská" "C-kajuta-lékař")) + (:id "C-zotavovací" :deck "C" :name "Zotavovací místnost" + :location "Sever-východ" :note "Pro rekonvalescenci" + :connections ("C-sauna" "C-kajuta-vedoucí")) + (:id "C-kajuta-lékař" :deck "C" :name "Kajuta/kancelář lékařského důstojníka" + :location "Střed-západ" :note "Bydlení a pracoviště lékaře" + :connections ("C-ošetřovna" "C-arboretum")) + (:id "C-kajuta-vedoucí" :deck "C" :name "Kajuta vedoucího stanice" + :location "Střed-východ" :note "Soukromé bydlení velitele. Může mít speciální přístupy." + :connections ("C-zotavovací" "C-arboretum")) + (:id "C-arboretum" :deck "C" :name "Arboretum" + :location "Střed" :note "Velký zelený prostor. Úkryt i past." + :connections ("C-kajuta-lékař" "C-kajuta-vedoucí" "C-hydro-zz" "C-hydro-v" "C-centrální-šachta")) + (:id "C-hydro-zz" :deck "C" :name "Hydroponické zahrady (západ)" + :location "Jihozápad" :note "Dvě zahrady vedle sebe. Produkce potravin." + :connections ("C-arboretum")) + (:id "C-hydro-v" :deck "C" :name "Hydroponická zahrada (východ)" + :location "Jihovýchod" :note "Třetí zahrada" + :connections ("C-arboretum")) + (:id "C-centrální-šachta" :deck "C" :name "Centrální šachta" + :location "Střed" :note "Přístup na paluby B, D–J" + :connections ("C-společenská" "C-arboretum" + "B-centrální-šachta" "D-centrální-šachta" "E-centrální-šachta" + "F-centrální-šachta" "G-centrální-šachta" "H-centrální-šachta" + "I-centrální-šachta" "J-centrální-šachta")) + + ;; === Paluba D === + (:id "D-měřící" :deck "D" :name "Měřící stanice" + :location "Sever-střed" :note "Vědecké měření" + :connections ("D-astro-lab" "D-kajuta-vědec")) + (:id "D-astro-lab" :deck "D" :name "Astrofyzikální laboratoř" + :location "Severozápad" :note "Hlavní vědecké pracoviště. Vybavení pro výzkum." + :connections ("D-měřící" "D-centrální-šachta")) + (:id "D-kajuta-vědec" :deck "D" :name "Kajuta/kancelář vědeckého důstojníka" + :location "Severovýchod" :note "Bydlení a pracoviště vědce" + :connections ("D-měřící" "D-wc")) + (:id "D-wc" :deck "D" :name "WC (dvě)" + :location "Střed-východ" :note "Dvě WC nad sebou" + :connections ("D-kajuta-vědec" "D-recepce")) + (:id "D-kancelář-inženýr" :deck "D" :name "Kancelář vedoucího inženýra" + :location "Jihozápad" :note "Technické informace o stanici" + :connections ("D-sklad" "D-recepce")) + (:id "D-sklad" :deck "D" :name "Sklad" + :location "Jihozápad (pod kanceláří)" :note "Zásoby, improvizované zbraně" + :connections ("D-kancelář-inženýr")) + (:id "D-recepce" :deck "D" :name "Recepce a VIP salónek" + :location "Střed-jih" :note "Příjem návštěvníků. Otevřený prostor — špatné krytí." + :connections ("D-wc" "D-kancelář-inženýr" "D-dokovací-port" "D-centrální-šachta")) + (:id "D-dokovací-port" :deck "D" :name "Návštěvnický dokovací port" + :location "Jih" :note "Přistání návštěvnických lodí. Přístup do vesmíru!" + :connections ("D-recepce")) + (:id "D-centrální-šachta" :deck "D" :name "Centrální šachta" + :location "Střed" :note "Přístup na paluby B–C, E–J" + :connections ("D-astro-lab" "D-recepce" + "B-centrální-šachta" "C-centrální-šachta" "E-centrální-šachta" + "F-centrální-šachta" "G-centrální-šachta" "H-centrální-šachta" + "I-centrální-šachta" "J-centrální-šachta")) + + ;; === Paluba E === + (:id "E-sklad" :deck "E" :name "Sklad" + :location "Severozápad" :note "Zásoby" + :connections ("E-kajuta-1" "E-prádelna")) + (:id "E-prádelna" :deck "E" :name "Prádelna" + :location "Sever-střed-východ" :note "Chemikálie" + :connections ("E-sklad" "E-kajuta-2")) + (:id "E-kajuta-1" :deck "E" :name "Kajuta 1 (levá horní)" + :location "Západ, řada 1" :note "Barikádovatelná" + :connections ("E-sklad" "E-kajuta-2" "E-kajuta-3" "E-chodba")) + (:id "E-kajuta-2" :deck "E" :name "Kajuta 2 (pravá horní)" + :location "Východ, řada 1" :note "Barikádovatelná" + :connections ("E-prádelna" "E-kajuta-1" "E-kajuta-4" "E-chodba")) + (:id "E-kajuta-3" :deck "E" :name "Kajuta 3 (levá střední)" + :location "Západ, řada 2" :note "Barikádovatelná" + :connections ("E-kajuta-1" "E-kajuta-4" "E-kajuta-5" "E-chodba")) + (:id "E-kajuta-4" :deck "E" :name "Kajuta 4 (pravá střední)" + :location "Východ, řada 2" :note "Barikádovatelná" + :connections ("E-kajuta-2" "E-kajuta-3" "E-kajuta-6" "E-chodba")) + (:id "E-kajuta-5" :deck "E" :name "Kajuta 5 (levá dolní)" + :location "Západ, řada 3" :note "Barikádovatelná" + :connections ("E-kajuta-3" "E-kajuta-6" "E-chodba")) + (:id "E-kajuta-6" :deck "E" :name "Kajuta 6 (pravá dolní)" + :location "Východ, řada 3" :note "Barikádovatelná" + :connections ("E-kajuta-4" "E-kajuta-5" "E-chodba")) + (:id "E-chodba" :deck "E" :name "Centrální chodba" + :location "Střed" :note "Propojuje kajuty, jídelnu a centrální šachtu" + :connections ("E-kajuta-1" "E-kajuta-2" "E-kajuta-3" "E-kajuta-4" + "E-kajuta-5" "E-kajuta-6" "E-jídelna" "E-centrální-šachta")) + (:id "E-jídelna" :deck "E" :name "Jídelna" + :location "Střed" :note "Velký otevřený prostor. Dobrý přehled ale špatné krytí." + :connections ("E-chodba" "E-wc" "E-sprchy-z" "E-šatna" "E-centrální-šachta")) + (:id "E-wc" :deck "E" :name "WC" + :location "Západ" :note "" + :connections ("E-jídelna" "E-sprchy-z")) + (:id "E-sprchy-z" :deck "E" :name "Sprchy (západ)" + :location "Jihozápad" :note "" + :connections ("E-wc" "E-jídelna")) + (:id "E-šatna" :deck "E" :name "Šatna a sprchy (východ)" + :location "Střed-východ" :note "" + :connections ("E-jídelna" "E-tělocvična")) + (:id "E-tělocvična" :deck "E" :name "Tělocvična" + :location "Jihovýchod" :note "Improvizované zbraně (tyče, závaží)" + :connections ("E-šatna")) + (:id "E-centrální-šachta" :deck "E" :name "Centrální šachta" + :location "Střed" :note "Přístup na paluby B–D, F–J" + :connections ("E-chodba" "E-jídelna" + "B-centrální-šachta" "C-centrální-šachta" "D-centrální-šachta" + "F-centrální-šachta" "G-centrální-šachta" "H-centrální-šachta" + "I-centrální-šachta" "J-centrální-šachta")) + + ;; === Paluba F === + (:id "F-vězeňská-služba" :deck "F" :name "Vězeňská služba" + :location "Severozápad" :note "Kanceláře vězeňského personálu" + :connections ("F-údržba-androidů" "F-zbrojnice" "F-sprchy-z")) + (:id "F-příprava-stravy" :deck "F" :name "Příprava stravy" + :location "Severovýchod" :note "" + :connections ("F-ošetřovna" "F-zbrojnice" "F-prádelna")) + (:id "F-údržba-androidů" :deck "F" :name "Údržba androidů" + :location "Západ" :note "Opravy/reprogramování androidů" + :connections ("F-vězeňská-služba" "F-sprchy-z")) + (:id "F-zbrojnice" :deck "F" :name "Zbrojnice" + :location "Sever-střed" :note "*** ZBRANĚ *** Klíčové místo!" + :connections ("F-vězeňská-služba" "F-příprava-stravy" "F-kuchyně")) + (:id "F-ošetřovna" :deck "F" :name "Ošetřovna" + :location "Východ" :note "Vězeňská ošetřovna" + :connections ("F-příprava-stravy" "F-prádelna")) + (:id "F-kuchyně" :deck "F" :name "Kuchyně" + :location "Střed (pod zbrojnicí)" :note "" + :connections ("F-zbrojnice" "F-centrální-šachta")) + (:id "F-sprchy-z" :deck "F" :name "Sprchy (západ)" + :location "Krajní západ" :note "" + :connections ("F-vězeňská-služba" "F-údržba-androidů" "F-sklad-z")) + (:id "F-sprchy-v" :deck "F" :name "Sprchy (východ)" + :location "Krajní východ" :note "" + :connections ("F-prádelna" "F-sklad-v")) + (:id "F-prádelna" :deck "F" :name "Prádelna" + :location "Východ" :note "" + :connections ("F-příprava-stravy" "F-ošetřovna" "F-sprchy-v")) + (:id "F-sklad-z" :deck "F" :name "Sklad (západ)" + :location "Střed-západ" :note "" + :connections ("F-sprchy-z" "F-wc-z" "F-centrální-šachta")) + (:id "F-sklad-v" :deck "F" :name "Sklad (východ)" + :location "Střed-východ" :note "" + :connections ("F-sprchy-v" "F-wc-v" "F-centrální-šachta")) + (:id "F-wc-z" :deck "F" :name "WC (západ)" + :location "Střed-západ" :note "" + :connections ("F-sklad-z" "F-průlez-F1" "F-průlez-F5")) + (:id "F-wc-v" :deck "F" :name "WC (východ)" + :location "Střed-východ" :note "" + :connections ("F-sklad-v" "F-průlez-F2" "F-průlez-F6")) + (:id "F-cely-z" :deck "F" :name "Cely (západ)" + :location "Jihozápad" :note "Vězeňské cely — západní blok. Vězni = spojenci i hrozby." + :connections ("F-průlez-F1" "F-průlez-F7" "F-sklady-jih")) + (:id "F-cely-v" :deck "F" :name "Cely (východ)" + :location "Jihovýchod" :note "Vězeňské cely — východní blok" + :connections ("F-průlez-F2" "F-průlez-F8" "F-sklady-jih")) + (:id "F-sklady-jih" :deck "F" :name "Sklady (jih, 4 kusy)" + :location "Jih-střed" :note "Čtyři skladové místnosti v bloku 2×2" + :connections ("F-cely-z" "F-cely-v" "F-centrální-šachta")) + ;; Průlezy F + (:id "F-průlez-F1" :deck "F" :name "Průlez F1" + :location "Střed-západ" :note "Vede dolů na G1" + :connections ("F-wc-z" "F-cely-z" "G-průlez-G1")) + (:id "F-průlez-F2" :deck "F" :name "Průlez F2" + :location "Střed-východ" :note "Vede dolů na G2" + :connections ("F-wc-v" "F-cely-v" "G-průlez-G2")) + (:id "F-průlez-F5" :deck "F" :name "Průlez F5" + :location "Sever-střed západ" :note "Vede dolů na G5" + :connections ("F-wc-z" "G-průlez-G5")) + (:id "F-průlez-F6" :deck "F" :name "Průlez F6" + :location "Sever-střed východ" :note "Vede dolů na G6" + :connections ("F-wc-v" "G-průlez-G6")) + (:id "F-průlez-F7" :deck "F" :name "Průlez F7" + :location "Jih-západ" :note "Vede dolů na G7" + :connections ("F-cely-z" "G-průlez-G7")) + (:id "F-průlez-F8" :deck "F" :name "Průlez F8" + :location "Jih-východ" :note "Vede dolů na G8" + :connections ("F-cely-v" "G-průlez-G8")) + (:id "F-centrální-šachta" :deck "F" :name "Centrální šachta" + :location "Střed" :note "Přístup na paluby B–E, G–J" + :connections ("F-kuchyně" "F-sklad-z" "F-sklad-v" "F-sklady-jih" + "B-centrální-šachta" "C-centrální-šachta" "D-centrální-šachta" + "E-centrální-šachta" "G-centrální-šachta" "H-centrální-šachta" + "I-centrální-šachta" "J-centrální-šachta")) + + ;; === Paluba G === + (:id "G-shromaždiště" :deck "G" :name "Nouzové shromaždiště" + :location "Severovýchod" :note "Sraz při evakuaci" + :connections ("G-nástupní-hala")) + (:id "G-nástupní-hala" :deck "G" :name "Nástupní hala" + :location "Sever-střed" :note "Centrální hala" + :connections ("G-shromaždiště" "G-průlez-G3" "G-průlez-G4" "G-eva-sz" "G-eva-sv" + "G-servis-androidů" "G-centrální-šachta")) + (:id "G-hangár-01" :deck "G" :name "Hangár 01" + :location "Střed-západ" :note "Velký hangár pro plavidla" + :connections ("G-dokovací-01" "G-sklady-z" "G-průlez-G5")) + (:id "G-dokovací-01" :deck "G" :name "Dokovací port 01" + :location "Krajní západ" :note "Přístup do vesmíru z hangáru 01" + :connections ("G-hangár-01")) + (:id "G-hangár-02" :deck "G" :name "Hangár 02" + :location "Střed-východ" :note "Velký hangár pro plavidla" + :connections ("G-dokovací-02" "G-sklady-v" "G-průlez-G6")) + (:id "G-dokovací-02" :deck "G" :name "Dokovací port 02" + :location "Krajní východ" :note "Přístup do vesmíru z hangáru 02" + :connections ("G-hangár-02")) + (:id "G-eva-sz" :deck "G" :name "EVA pod (SZ)" + :location "Střed, mírně SZ" :note "Skafandry pro výstup do kosmu" + :connections ("G-nástupní-hala" "G-servis-androidů")) + (:id "G-eva-sv" :deck "G" :name "EVA pod (SV)" + :location "Střed, mírně SV" :note "Skafandry pro výstup do kosmu" + :connections ("G-nástupní-hala" "G-servis-androidů")) + (:id "G-eva-jz" :deck "G" :name "EVA pod (JZ)" + :location "Střed, mírně JZ" :note "Skafandry pro výstup do kosmu" + :connections ("G-servis-androidů" "G-kryopody-z")) + (:id "G-eva-jv" :deck "G" :name "EVA pod (JV)" + :location "Střed, mírně JV" :note "Skafandry pro výstup do kosmu" + :connections ("G-servis-androidů" "G-kryopody-v")) + (:id "G-sklady-z" :deck "G" :name "Sklady (západ)" + :location "Střed-západ" :note "" + :connections ("G-hangár-01" "G-centrální-šachta")) + (:id "G-sklady-v" :deck "G" :name "Sklady (východ)" + :location "Střed-východ" :note "" + :connections ("G-hangár-02" "G-centrální-šachta")) + (:id "G-servis-androidů" :deck "G" :name "Servisní úložiště androidů" + :location "Střed" :note "Sklad/servis androidů" + :connections ("G-nástupní-hala" "G-eva-sz" "G-eva-sv" "G-eva-jz" "G-eva-jv" + "G-centrální-šachta")) + (:id "G-nákladový-dok" :deck "G" :name "Nákladový dok" + :location "Jihozápad" :note "Nakládání/vykládání" + :connections ("G-kryopody-z" "G-průlez-G1" "G-průlez-G7")) + (:id "G-opravárenský-dok" :deck "G" :name "Opravárenský dok" + :location "Jihovýchod" :note "Opravy plavidel" + :connections ("G-kryopody-v" "G-průlez-G2" "G-průlez-G8")) + (:id "G-kryopody-z" :deck "G" :name "Nouzové kryopody (západ)" + :location "Jihozápad" :note "Záložní kryospánek" + :connections ("G-eva-jz" "G-nákladový-dok")) + (:id "G-kryopody-v" :deck "G" :name "Nouzové kryopody (východ)" + :location "Jihovýchod" :note "Záložní kryospánek" + :connections ("G-eva-jv" "G-opravárenský-dok")) + ;; Průlezy G + (:id "G-průlez-G1" :deck "G" :name "Průlez G1" + :location "Jihozápad" :note "Vede nahoru na F1" + :connections ("G-nákladový-dok" "F-průlez-F1")) + (:id "G-průlez-G2" :deck "G" :name "Průlez G2" + :location "Jihovýchod" :note "Vede nahoru na F2" + :connections ("G-opravárenský-dok" "F-průlez-F2")) + (:id "G-průlez-G3" :deck "G" :name "Průlez G3" + :location "Severozápad" :note "Vede dolů na H3" + :connections ("G-nástupní-hala" "H-průlez-H3")) + (:id "G-průlez-G4" :deck "G" :name "Průlez G4" + :location "Severovýchod" :note "Vede dolů na H4" + :connections ("G-nástupní-hala" "H-průlez-H4")) + (:id "G-průlez-G5" :deck "G" :name "Průlez G5" + :location "Střed-západ" :note "Vede nahoru na F5" + :connections ("G-hangár-01" "F-průlez-F5")) + (:id "G-průlez-G6" :deck "G" :name "Průlez G6" + :location "Střed-východ" :note "Vede nahoru na F6" + :connections ("G-hangár-02" "F-průlez-F6")) + (:id "G-průlez-G7" :deck "G" :name "Průlez G7" + :location "Jihozápad (jižněji)" :note "Vede dolů na H7" + :connections ("G-nákladový-dok" "H-průlez-H7")) + (:id "G-průlez-G8" :deck "G" :name "Průlez G8" + :location "Jihovýchod (jižněji)" :note "Vede dolů na H8" + :connections ("G-opravárenský-dok" "H-průlez-H8")) + (:id "G-průlez-G9" :deck "G" :name "Průlez G9 (komunikační věž)" + :location "Komunikační věž" :note "Vede dolů na H9 (DA/UT/UR)" + :connections ("G-centrální-šachta" "GH-komunikační-věž")) + (:id "G-centrální-šachta" :deck "G" :name "Centrální šachta" + :location "Střed" :note "Přístup na paluby B–F, H–J" + :connections ("G-nástupní-hala" "G-sklady-z" "G-sklady-v" "G-servis-androidů" + "G-průlez-G9" + "B-centrální-šachta" "C-centrální-šachta" "D-centrální-šachta" + "E-centrální-šachta" "F-centrální-šachta" "H-centrální-šachta" + "I-centrální-šachta" "J-centrální-šachta")) + + ;; === Komunikační věž (G/H) === + (:id "GH-komunikační-věž" :deck "GH" :name "Komunikační věž / DA/UT/UR" + :location "Mezi palubami G a H" :note "DA/UT/UR = komunikační počítač (Daughter). Alternativa k MU/TH/UR. Úzká vertikální struktura — snadno bránitelná i past." + :connections ("G-průlez-G9" "H-průlez-H9")) + + ;; === Paluba H === + (:id "H-plasma-sz" :deck "H" :name "Plasmová přenosová stanice (SZ)" + :location "Sever-západ" :note "Přenos energie" + :connections ("H-nádrž-toxických" "H-destilační-z")) + (:id "H-plasma-sv" :deck "H" :name "Plasmová přenosová stanice (SV)" + :location "Sever-východ" :note "Přenos energie" + :connections ("H-nádrž-toxických" "H-destilační-v")) + (:id "H-nádrž-toxických" :deck "H" :name "Nádrž toxických plynů" + :location "Sever-střed" :note "*** EXTRÉMNĚ NEBEZPEČNÉ *** Únik = smrt" + :connections ("H-plasma-sz" "H-plasma-sv" "H-průlez-H3" "H-průlez-H4")) + (:id "H-destilační-z" :deck "H" :name "Destilační nádrže (Z)" + :location "Střed-západ" :note "Chemická destilace" + :connections ("H-plasma-sz" "H-kondenzátory-z")) + (:id "H-destilační-v" :deck "H" :name "Destilační nádrže (V)" + :location "Střed-východ" :note "Chemická destilace" + :connections ("H-plasma-sv" "H-kondenzátory-v")) + (:id "H-kondenzátory-z" :deck "H" :name "Kondenzátory (Z)" + :location "Střed-západ" :note "" + :connections ("H-destilační-z" "H-sběrač-01" "H-dílny-z")) + (:id "H-kondenzátory-v" :deck "H" :name "Kondenzátory (V)" + :location "Střed-východ" :note "" + :connections ("H-destilační-v" "H-sběrač-02" "H-dílny-v")) + (:id "H-sběrač-01" :deck "H" :name "Plasmový sběrač 01" + :location "Krajní západ" :note "Sběr plasmy" + :connections ("H-kondenzátory-z")) + (:id "H-sběrač-02" :deck "H" :name "Plasmový sběrač 02" + :location "Krajní východ" :note "Sběr plasmy" + :connections ("H-kondenzátory-v")) + (:id "H-dílny-z" :deck "H" :name "Dílny (Z)" + :location "Střed-západ" :note "Nářadí — improvizované zbraně" + :connections ("H-kondenzátory-z" "H-řídící-centrum")) + (:id "H-dílny-v" :deck "H" :name "Dílny (V)" + :location "Střed-východ" :note "Nářadí — improvizované zbraně" + :connections ("H-kondenzátory-v" "H-řídící-centrum")) + (:id "H-řídící-centrum" :deck "H" :name "Řídící centrum" + :location "Střed" :note "Řízení průmyslových procesů. Sabotáž?" + :connections ("H-dílny-z" "H-dílny-v" "H-strojovna-z" "H-strojovna-v" "H-centrální-šachta")) + (:id "H-strojovna-z" :deck "H" :name "Strojovna (Z)" + :location "Jih-střed-západ" :note "" + :connections ("H-řídící-centrum" "H-mag-čerpadlo")) + (:id "H-strojovna-v" :deck "H" :name "Strojovna (V)" + :location "Jih-střed-východ" :note "" + :connections ("H-řídící-centrum" "H-mag-čerpadlo")) + (:id "H-mag-čerpadlo" :deck "H" :name "Magnetické čerpadlo" + :location "Jih-střed" :note "" + :connections ("H-strojovna-z" "H-strojovna-v" "H-tavení")) + (:id "H-tavení" :deck "H" :name "Řídící stanice tavení" + :location "Jih-střed" :note "" + :connections ("H-mag-čerpadlo" "H-plasma-jz" "H-plasma-jv")) + (:id "H-plasma-jz" :deck "H" :name "Plasmová přenosová stanice (JZ)" + :location "Jihozápad" :note "" + :connections ("H-tavení" "H-energie-z" "H-průlez-H7")) + (:id "H-plasma-jv" :deck "H" :name "Plasmová přenosová stanice (JV)" + :location "Jihovýchod" :note "" + :connections ("H-tavení" "H-energie-v" "H-průlez-H8")) + (:id "H-energie-z" :deck "H" :name "Energetické sběrné články (Z)" + :location "Krajní jihozápad" :note "Zásobník energie" + :connections ("H-plasma-jz")) + (:id "H-energie-v" :deck "H" :name "Energetické sběrné články (V)" + :location "Krajní jihovýchod" :note "Zásobník energie" + :connections ("H-plasma-jv")) + ;; Průlezy H + (:id "H-průlez-H3" :deck "H" :name "Průlez H3" + :location "Střed-západ" :note "Vede nahoru na G3" + :connections ("H-nádrž-toxických" "G-průlez-G3")) + (:id "H-průlez-H4" :deck "H" :name "Průlez H4" + :location "Střed-východ" :note "Vede nahoru na G4" + :connections ("H-nádrž-toxických" "G-průlez-G4")) + (:id "H-průlez-H7" :deck "H" :name "Průlez H7" + :location "Jih-západ" :note "Vede nahoru na G7" + :connections ("H-plasma-jz" "G-průlez-G7")) + (:id "H-průlez-H8" :deck "H" :name "Průlez H8" + :location "Jih-východ" :note "Vede nahoru na G8" + :connections ("H-plasma-jv" "G-průlez-G8")) + (:id "H-průlez-H9" :deck "H" :name "Průlez H9 (komunikační věž)" + :location "Komunikační věž" :note "Vede nahoru na G9. DA/UT/UR v komunikační věži." + :connections ("H-centrální-šachta" "GH-komunikační-věž")) + (:id "H-centrální-šachta" :deck "H" :name "Centrální šachta" + :location "Střed" :note "Přístup na paluby B–G, I–J" + :connections ("H-řídící-centrum" "H-průlez-H9" + "B-centrální-šachta" "C-centrální-šachta" "D-centrální-šachta" + "E-centrální-šachta" "F-centrální-šachta" "G-centrální-šachta" + "I-centrální-šachta" "J-centrální-šachta")) + + ;; === Paluba I === + (:id "I-záchranné-moduly" :deck "I" :name "Záchranné moduly" + :location "Celá paluba" :note "Únikové kapsle pro evakuaci. Na mapě bez textových popisků místností." + :connections ("I-centrální-šachta")) + (:id "I-centrální-šachta" :deck "I" :name "Centrální šachta" + :location "Střed" :note "Přístup na paluby B–H, J" + :connections ("I-záchranné-moduly" + "B-centrální-šachta" "C-centrální-šachta" "D-centrální-šachta" + "E-centrální-šachta" "F-centrální-šachta" "G-centrální-šachta" + "H-centrální-šachta" "J-centrální-šachta")) + + ;; === Paluba J === + (:id "J-baterie-horní" :deck "J" :name "Baterie (horní)" + :location "Sever-střed" :note "Energetická baterie. Zásah = exploze/výpadek." + :connections ("J-centrální-šachta")) + (:id "J-baterie-levá" :deck "J" :name "Baterie (levá/západ)" + :location "Západ" :note "Energetická baterie" + :connections ("J-centrální-šachta")) + (:id "J-baterie-pravá" :deck "J" :name "Baterie (pravá/východ)" + :location "Východ" :note "Energetická baterie" + :connections ("J-centrální-šachta")) + (:id "J-centrální-šachta" :deck "J" :name "Centrální šachta" + :location "Střed" :note "Přístup na paluby B–I. Nejnižší paluba — jen nahoru." + :connections ("J-baterie-horní" "J-baterie-levá" "J-baterie-pravá" + "B-centrální-šachta" "C-centrální-šachta" "D-centrální-šachta" + "E-centrální-šachta" "F-centrální-šachta" "G-centrální-šachta" + "H-centrální-šachta" "I-centrální-šachta"))) + "Kompletní seznam místností s propojením. Ověřeno z PDF.") + + +;; ══════════════════════════════════════════════════════════════ +;; DATA: Postava +;; ══════════════════════════════════════════════════════════════ + +(defvar alien-rpg-character + '(:name "prof. Héctor Navarre, Ph.D." + :career "Biochemický inženýr" + :age 74 + :attributes (:strength 3 :agility 4 :wits 3 :empathy 4) + :skills (:close-combat 2 :heavy-machinery 2 :stamina 0 + :mobility 0 :piloting 0 :ranged-combat 3 + :comtech 0 :observation 2 :survival 0 + :command 0 :manipulation 3 :medical-aid 0) + :talent "Analýza: Hod na OBSERVATION — za každý úspěch (6) získáš jednu informaci o organismu/předmětu." + :gear ("Svítilna" "CBRN detektor (viry, toxiny, radiace)" "Lokátor PDT (pozice členů týmu)") + :signature-item "Karta (blíže neurčeno)") + "Statická data postavy (nemění se během hry).") + +(defvar alien-rpg-skill-attributes + '((:close-combat . :strength) (:heavy-machinery . :strength) (:stamina . :strength) + (:mobility . :agility) (:piloting . :agility) (:ranged-combat . :agility) + (:comtech . :wits) (:observation . :wits) (:survival . :wits) + (:command . :empathy) (:manipulation . :empathy) (:medical-aid . :empathy)) + "Mapování dovedností na atributy.") + +(defvar alien-rpg-skill-names + '((:close-combat . "Close Combat") (:heavy-machinery . "Heavy Machinery") + (:stamina . "Stamina") (:mobility . "Mobility") (:piloting . "Piloting") + (:ranged-combat . "Ranged Combat") (:comtech . "Comtech") + (:observation . "Observation") (:survival . "Survival") + (:command . "Command") (:manipulation . "Manipulation") + (:medical-aid . "Medical Aid")) + "Čitelné názvy dovedností.") + +;; ══════════════════════════════════════════════════════════════ +;; STAV HRY (mění se během sezení) +;; ══════════════════════════════════════════════════════════════ + +(defvar alien-rpg-state + '(:health 4 + :stress 0 + :current-room "B-centrální-šachta" + :weapons () + :armor nil + :extra-gear () + :injuries () + :xp 0 + :story-points 0 + :notes () + :buddy nil + :rival nil) + "Dynamický herní stav. Mění se během sezení. Ukládá/načítá ze souboru.") + +(defvar alien-rpg-state-file + (expand-file-name "alien-rpg-save.el" + (file-name-directory (or load-file-name + buffer-file-name + "~/alienrpg/"))) + "Soubor pro ukládání herního stavu.") + + +;; ══════════════════════════════════════════════════════════════ +;; POMOCNÉ FUNKCE +;; ══════════════════════════════════════════════════════════════ + +(defun alien-rpg--get-room (room-id) + "Najdi místnost podle ROOM-ID." + (cl-find-if (lambda (r) (string= (plist-get r :id) room-id)) + alien-rpg-rooms)) + +(defun alien-rpg--get-deck (deck-id) + "Najdi palubu podle DECK-ID." + (cl-find-if (lambda (d) (string= (plist-get d :id) deck-id)) + alien-rpg-decks)) + +(defun alien-rpg--room-display-name (room) + "Vytvoř zobrazovaný název místnosti ROOM." + (format "[%s] %s" (plist-get room :deck) (plist-get room :name))) + +(defun alien-rpg--current-room () + "Vrať plist aktuální místnosti." + (alien-rpg--get-room (plist-get alien-rpg-state :current-room))) + +(defun alien-rpg--connected-rooms (room) + "Vrať seznam plistů místností spojených s ROOM." + (let ((conn-ids (plist-get room :connections))) + (cl-remove-if #'null + (mapcar #'alien-rpg--get-room conn-ids)))) + +(defun alien-rpg--rooms-on-deck (deck-id) + "Vrať všechny místnosti na palubě DECK-ID." + (cl-remove-if-not + (lambda (r) (string= (plist-get r :deck) deck-id)) + alien-rpg-rooms)) + +(defun alien-rpg--skill-total (skill-key) + "Vrať celkový počet kostek (atribut + dovednost) pro SKILL-KEY." + (let* ((attrs (plist-get alien-rpg-character :attributes)) + (skills (plist-get alien-rpg-character :skills)) + (attr-key (cdr (assq skill-key alien-rpg-skill-attributes))) + (attr-val (or (plist-get attrs attr-key) 0)) + (skill-val (or (plist-get skills skill-key) 0))) + (+ attr-val skill-val))) + + +;; ══════════════════════════════════════════════════════════════ +;; ULOŽENÍ / NAČTENÍ STAVU +;; ══════════════════════════════════════════════════════════════ + +(defun alien-rpg-save-state () + "Ulož herní stav do souboru." + (interactive) + (let ((file (or alien-rpg-state-file + (expand-file-name "alien-rpg-save.el" + (file-name-directory + (or buffer-file-name default-directory)))))) + (with-temp-file file + (insert ";; Alien RPG — uložený herní stav\n") + (insert (format ";; Uloženo: %s\n" (format-time-string "%Y-%m-%d %H:%M"))) + (insert "(setq alien-rpg-state\n '") + (pp alien-rpg-state (current-buffer)) + (insert ")\n")) + (setq alien-rpg-state-file file) + (message "Stav uložen: %s" file))) + +(defun alien-rpg-load-state () + "Načti herní stav ze souboru." + (interactive) + (let ((file (or alien-rpg-state-file + (read-file-name "Načíst stav ze souboru: " + nil nil t "alien-rpg-save.el")))) + (when (file-exists-p file) + (load file nil 'nomessage) + (setq alien-rpg-state-file file) + (message "Stav načten: %s" file)))) + +(defun alien-rpg--autosave () + "Automaticky ulož stav (tiše, bez zprávy)." + (when alien-rpg-state-file + (with-temp-file alien-rpg-state-file + (insert ";; Alien RPG — uložený herní stav\n") + (insert (format ";; Uloženo: %s\n" (format-time-string "%Y-%m-%d %H:%M"))) + (insert "(setq alien-rpg-state\n '") + (pp alien-rpg-state (current-buffer)) + (insert ")\n")))) + +;; Automaticky načti uložený stav při startu (pokud existuje) +(when (and alien-rpg-state-file (file-exists-p alien-rpg-state-file)) + (load alien-rpg-state-file nil 'nomessage) + (message "Alien RPG: stav načten z %s" alien-rpg-state-file)) + + +;; ══════════════════════════════════════════════════════════════ +;; INTERAKTIVNÍ PŘÍKAZY +;; ══════════════════════════════════════════════════════════════ + +;; --- Kde jsem --- + +(defun alien-rpg-where-am-i () + "Zobraz aktuální pozici a okolí. Jeden stisk = kompletní přehled." + (interactive) + (let* ((room (alien-rpg--current-room)) + (deck (alien-rpg--get-deck (plist-get room :deck))) + (connected (alien-rpg--connected-rooms room)) + (same-deck (cl-remove-if-not + (lambda (r) (string= (plist-get r :deck) (plist-get room :deck))) + connected)) + (other-deck (cl-remove-if + (lambda (r) (string= (plist-get r :deck) (plist-get room :deck))) + connected))) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert (propertize "═══ KDE JSEM ═══\n" 'face 'bold)) + (insert (format "\nPaluba %s — %s\n" (plist-get deck :id) (plist-get deck :name))) + (insert (format "Místnost: %s\n" (plist-get room :name))) + (insert (format "Poloha: %s\n" (plist-get room :location))) + (when (and (plist-get room :note) (not (string-empty-p (plist-get room :note)))) + (insert (format "\n%s\n" (plist-get room :note)))) + ;; Okolní místnosti na stejné palubě + (when same-deck + (insert (propertize "\n── Na této palubě ──\n" 'face 'bold)) + (dolist (r same-deck) + (insert (format " • %s (%s)\n" + (plist-get r :name) + (plist-get r :location))))) + ;; Přístupy na jiné paluby + (when other-deck + (insert (propertize "\n── Přístupy na jiné paluby ──\n" 'face 'bold)) + (dolist (r other-deck) + (insert (format " → [%s] %s\n" + (plist-get r :deck) + (plist-get r :name))))) + ;; Paluba info + (insert (propertize "\n── Info o palubě ──\n" 'face 'bold)) + (insert (format "Účel: %s\n" (plist-get deck :purpose))) + (insert (format "Velikost: %s, Měřítko: %s\n" (plist-get deck :size) (plist-get deck :scale))) + (insert (format "%s\n" (plist-get deck :notes)))) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*"))) + +;; --- Přesun --- + +(defun alien-rpg-move () + "Přesuň se do propojené místnosti. Completion — žádné hledání." + (interactive) + (let* ((room (alien-rpg--current-room)) + (connected (alien-rpg--connected-rooms room)) + (candidates (mapcar (lambda (r) + (cons (alien-rpg--room-display-name r) + (plist-get r :id))) + connected)) + (choice (completing-read + (format "Přesun z [%s] %s → " (plist-get room :deck) (plist-get room :name)) + candidates nil t)) + (target-id (cdr (assoc choice candidates)))) + (plist-put alien-rpg-state :current-room target-id) + (alien-rpg--autosave) + (alien-rpg-where-am-i))) + +;; --- Teleport (GM řekne "jsi na palubě X") --- + +(defun alien-rpg-teleport () + "Přesuň se kamkoliv na stanici. Pro případy kdy GM řekne novou pozici." + (interactive) + (let* ((candidates (mapcar (lambda (r) + (cons (alien-rpg--room-display-name r) + (plist-get r :id))) + alien-rpg-rooms)) + (choice (completing-read "Teleport na: " candidates nil t)) + (target-id (cdr (assoc choice candidates)))) + (plist-put alien-rpg-state :current-room target-id) + (alien-rpg--autosave) + (alien-rpg-where-am-i))) + +;; --- Najít místnost --- + +(defun alien-rpg-find-room () + "Najdi a zobraz informace o libovolné místnosti." + (interactive) + (let* ((candidates (mapcar (lambda (r) + (cons (alien-rpg--room-display-name r) + r)) + alien-rpg-rooms)) + (choice (completing-read "Najít místnost: " candidates nil t)) + (room (cdr (assoc choice candidates))) + (deck (alien-rpg--get-deck (plist-get room :deck))) + (connected (alien-rpg--connected-rooms room))) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert (propertize "═══ MÍSTNOST ═══\n" 'face 'bold)) + (insert (format "\n[%s] %s — %s\n" (plist-get deck :id) (plist-get deck :name) (plist-get room :name))) + (insert (format "Poloha na palubě: %s\n" (plist-get room :location))) + (when (and (plist-get room :note) (not (string-empty-p (plist-get room :note)))) + (insert (format "\n%s\n" (plist-get room :note)))) + (insert (propertize "\n── Propojení ──\n" 'face 'bold)) + (dolist (r connected) + (insert (format " → [%s] %s (%s)\n" + (plist-get r :deck) + (plist-get r :name) + (plist-get r :location))))) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*"))) + +;; --- Přehled paluby --- + +(defun alien-rpg-deck-overview () + "Zobraz přehled zvolené paluby." + (interactive) + (let* ((candidates (mapcar (lambda (d) + (cons (format "%s — %s" (plist-get d :id) (plist-get d :name)) + (plist-get d :id))) + alien-rpg-decks)) + (choice (completing-read "Paluba: " candidates nil t)) + (deck-id (cdr (assoc choice candidates))) + (deck (alien-rpg--get-deck deck-id)) + (rooms (alien-rpg--rooms-on-deck deck-id))) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert (propertize (format "═══ PALUBA %s ═══\n" deck-id) 'face 'bold)) + (insert (format "\n%s\n" (plist-get deck :name))) + (insert (format "Účel: %s\n" (plist-get deck :purpose))) + (insert (format "Velikost: %s, Měřítko: %s\n" (plist-get deck :size) (plist-get deck :scale))) + (insert (format "\n%s\n" (plist-get deck :notes))) + (insert (propertize "\n── Místnosti ──\n" 'face 'bold)) + (dolist (r rooms) + (insert (format " • %s (%s)" (plist-get r :name) (plist-get r :location))) + (when (and (plist-get r :note) (not (string-empty-p (plist-get r :note)))) + (insert (format " — %s" (plist-get r :note)))) + (insert "\n"))) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*"))) + +;; --- Stav postavy --- + +(defun alien-rpg-status () + "Zobraz aktuální stav postavy. Zdraví, stres, výbava, pozice." + (interactive) + (let* ((room (alien-rpg--current-room)) + (deck (alien-rpg--get-deck (plist-get room :deck))) + (health (plist-get alien-rpg-state :health)) + (stress (plist-get alien-rpg-state :stress)) + (weapons (plist-get alien-rpg-state :weapons)) + (armor (plist-get alien-rpg-state :armor)) + (gear (plist-get alien-rpg-character :gear)) + (extra (plist-get alien-rpg-state :extra-gear)) + (injuries (plist-get alien-rpg-state :injuries))) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert (propertize "═══ STAV POSTAVY ═══\n" 'face 'bold)) + (insert (format "\n%s\n" (plist-get alien-rpg-character :name))) + (insert (format "%s, %d let\n" (plist-get alien-rpg-character :career) + (plist-get alien-rpg-character :age))) + ;; Pozice + (insert (propertize "\n── Pozice ──\n" 'face 'bold)) + (insert (format "Paluba %s — %s\n" (plist-get deck :id) (plist-get deck :name))) + (insert (format "Místnost: %s\n" (plist-get room :name))) + ;; Zdraví + (insert (propertize "\n── Zdraví a stres ──\n" 'face 'bold)) + (insert (format "Health: %d/4%s\n" health + (cond ((= health 4) " ████") + ((= health 3) " ███░") + ((= health 2) " ██░░") + ((= health 1) " █░░░ ⚠ KRITICKÉ!") + (t " ░░░░ ☠ BEZ VĚDOMÍ!")))) + (insert (format "Stress: %d%s\n" stress + (if (>= stress 7) + (format " (PANIKA při dalším stresu!)") + ""))) + ;; Zranění + (when injuries + (insert (propertize "\n── Zranění ──\n" 'face 'bold)) + (dolist (i injuries) + (insert (format " ✖ %s\n" i)))) + ;; Výbava + (insert (propertize "\n── Výbava ──\n" 'face 'bold)) + (dolist (g gear) (insert (format " • %s\n" g))) + (dolist (g extra) (insert (format " + %s\n" g))) + (if weapons + (progn + (insert (propertize "\n── Zbraně ──\n" 'face 'bold)) + (dolist (w weapons) (insert (format " ⚔ %s\n" w)))) + (insert "\n (žádné zbraně)\n")) + (when armor + (insert (format "\n 🛡 Brnění: %s\n" armor))) + ;; Buddy/Rival + (insert (propertize "\n── Vztahy ──\n" 'face 'bold)) + (insert (format "Buddy: %s\n" (or (plist-get alien-rpg-state :buddy) "(nenastaveno)"))) + (insert (format "Rival: %s\n" (or (plist-get alien-rpg-state :rival) "(nenastaveno)")))) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*"))) + +;; --- Hod kostkou --- + +(defun alien-rpg-roll () + "Hoď na dovednost. Vybere dovednost → automaticky spočítá kostky → hodí." + (interactive) + (let* ((stress (plist-get alien-rpg-state :stress)) + (candidates + (mapcar (lambda (sk) + (let* ((key (car sk)) + (name (cdr (assq key alien-rpg-skill-names))) + (total (alien-rpg--skill-total key))) + (cons (format "%s (%d kostek)" name total) key))) + alien-rpg-skill-attributes)) + (choice (completing-read "Hoď na: " candidates nil t)) + (skill-key (cdr (assoc choice candidates))) + (skill-name (cdr (assq skill-key alien-rpg-skill-names))) + (base-dice (alien-rpg--skill-total skill-key)) + (stress-dice stress) + (total-dice (+ base-dice stress-dice)) + ;; Hod + (base-results (cl-loop repeat base-dice collect (1+ (random 6)))) + (stress-results (cl-loop repeat stress-dice collect (1+ (random 6)))) + (successes (+ (cl-count 6 base-results) (cl-count 6 stress-results))) + (facehuggers (cl-count 1 stress-results))) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert (propertize "═══ HOD KOSTKOU ═══\n" 'face 'bold)) + (insert (format "\n%s\n" skill-name)) + (insert (format "Základ: %d kostek | Stress: %d kostek | Celkem: %d\n\n" + base-dice stress-dice total-dice)) + ;; Výsledky + (insert (format "Základní: %s\n" (mapconcat #'number-to-string base-results " "))) + (when (> stress-dice 0) + (insert (format "Stresové: %s\n" (mapconcat #'number-to-string stress-results " ")))) + (insert (propertize (format "\n✦ ÚSPĚCHY: %d\n" successes) 'face 'bold)) + (when (> facehuggers 0) + (insert (propertize (format "☣ FACEHUGGER IKONY: %d — PANIKA!\n" facehuggers) 'face 'error))) + ;; Push info + (when (= successes 0) + (insert "\n→ Můžeš pushovat (přehodit neúspěchy). Stress +1.\n")) + ;; Talent reminder + (when (eq skill-key :observation) + (insert "\n★ TALENT ANALÝZA: Za každý úspěch jedna informace o organismu/předmětu.\n"))) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*"))) + +;; --- Upravit zdraví/stres --- + +(defun alien-rpg-set-health (n) + "Nastav Health na N." + (interactive "nHealth (0-4): ") + (plist-put alien-rpg-state :health (max 0 (min 4 n))) + (alien-rpg--autosave) + (message "Health: %d/4" (plist-get alien-rpg-state :health))) + +(defun alien-rpg-set-stress (n) + "Nastav Stress na N." + (interactive "nStress (0+): ") + (plist-put alien-rpg-state :stress (max 0 n)) + (alien-rpg--autosave) + (let ((s (plist-get alien-rpg-state :stress))) + (message "Stress: %d%s" s (if (>= s 7) " ⚠ NEBEZPEČÍ PANIKY!" "")))) + +(defun alien-rpg-add-injury (injury) + "Přidej zranění INJURY." + (interactive "sZranění: ") + (plist-put alien-rpg-state :injuries + (append (plist-get alien-rpg-state :injuries) (list injury))) + (alien-rpg--autosave) + (message "Přidáno zranění: %s" injury)) + +(defun alien-rpg-add-gear (item) + "Přidej výbavu ITEM." + (interactive "sNová výbava: ") + (plist-put alien-rpg-state :extra-gear + (append (plist-get alien-rpg-state :extra-gear) (list item))) + (alien-rpg--autosave) + (message "Přidáno: %s" item)) + +(defun alien-rpg-add-weapon (weapon) + "Přidej zbraň WEAPON." + (interactive "sNová zbraň: ") + (plist-put alien-rpg-state :weapons + (append (plist-get alien-rpg-state :weapons) (list weapon))) + (alien-rpg--autosave) + (message "Přidána zbraň: %s" weapon)) + +(defun alien-rpg-set-buddy (name) + "Nastav Buddy." + (interactive "sBuddy: ") + (plist-put alien-rpg-state :buddy name) + (alien-rpg--autosave) + (message "Buddy: %s" name)) + +(defun alien-rpg-set-rival (name) + "Nastav Rivala." + (interactive "sRival: ") + (plist-put alien-rpg-state :rival name) + (alien-rpg--autosave) + (message "Rival: %s" name)) + +(defun alien-rpg-add-note (note) + "Přidej herní poznámku NOTE." + (interactive "sPoznámka: ") + (plist-put alien-rpg-state :notes + (append (plist-get alien-rpg-state :notes) + (list (format "[%s] %s" + (format-time-string "%H:%M") + note)))) + (alien-rpg--autosave) + (message "Poznámka uložena.")) + +;; --- Klíčová místa (rychlá reference) --- + +(defun alien-rpg-key-locations () + "Zobraz klíčová místa — kam utéct, co najít." + (interactive) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert (propertize "═══ KLÍČOVÁ MÍSTA ═══\n" 'face 'bold)) + (insert " +ZBRANĚ: [F] Zbrojnice (sever-střed paluby F) +LÉKAŘSKÁ POMOC: [C] Ošetřovna a laboratoř (sever-západ paluby C) +HLAVNÍ POČÍTAČ: [B] MU/TH/UR (jih-střed paluby B) +KOMUNIKACE: [GH] DA/UT/UR (komunikační věž mezi G a H) +EVAKUACE LODÍ: [G] Hangár 01 (západ) nebo Hangár 02 (východ) +EVAKUACE KAPSLE: [I] Záchranné moduly +SKRÝŠ/BARIKÁDA: [E] Kajuty (6 kusů, barikádovatelné) +KRYOSPÁNEK: [G] Nouzové kryopody (jihozápad/jihovýchod) +ZNIČENÍ STANICE: [J] Strojovna reaktoru +NÁŘADÍ: [H] Dílny (střed paluby H) +EVA SKAFANDRY: [G] EVA pody (4 kusy, střed) +VĚDECKÁ LAB: [D] Astrofyzikální laboratoř (severozápad) +DOK. PORT: [D] Návštěvnický dokovací port (jih) + +═══ VERTIKÁLNÍ PŘESUNY ═══ + +Centrální šachta: B ↔ C ↔ D ↔ E ↔ F ↔ G ↔ H ↔ I ↔ J (střed každé paluby) +Průchod B→A: Západ paluby B (jediný přístup na A) +Průlezy F↔G: F1↔G1, F2↔G2, F5↔G5, F6↔G6, F7↔G7, F8↔G8 +Průlezy G↔H: G3↔H3, G4↔H4, G7↔H7, G8↔H8, G9↔H9 (kom. věž) +")) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*")) + +;; --- Dovednosti (rychlý přehled) --- + +(defun alien-rpg-skills () + "Zobraz přehled dovedností seřazený od nejsilnějších." + (interactive) + (let* ((skill-data + (mapcar (lambda (sk) + (let* ((key (car sk)) + (name (cdr (assq key alien-rpg-skill-names))) + (total (alien-rpg--skill-total key))) + (list total name key))) + alien-rpg-skill-attributes)) + (sorted (sort skill-data (lambda (a b) (> (car a) (car b)))))) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert (propertize "═══ DOVEDNOSTI ═══\n\n" 'face 'bold)) + (dolist (s sorted) + (let ((total (nth 0 s)) + (name (nth 1 s))) + (insert (format " %d kostek — %s%s\n" total name + (cond ((>= total 7) " ★★★") + ((>= total 5) " ★★") + (t "")))))) + (insert "\n") + (insert (propertize "Talent: " 'face 'bold)) + (insert (plist-get alien-rpg-character :talent)) + (insert "\n")) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*"))) + +;; --- Přehled stanice (boční pohled) --- + +(defun alien-rpg-station-overview () + "Zobraz vertikální přehled stanice." + (interactive) + (let ((current-deck (plist-get (alien-rpg--current-room) :deck))) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert (propertize "═══ STANICE — BOČNÍ POHLED ═══\n\n" 'face 'bold)) + (dolist (d alien-rpg-decks) + (let* ((id (plist-get d :id)) + (here (string= id current-deck)) + (line (format "%s%s — %s (%s)\n" + (if here "→ " " ") + id + (plist-get d :name) + (plist-get d :purpose)))) + (insert (if here (propertize line 'face 'bold) line)) + ;; Vzdálenosti + (pcase id + ("A" (insert " ╎ (izolovaná, přístup jen z B)\n")) + ("E" (insert " ║ (střední mezera)\n")) + ("H" (insert " ║\n ║ (VELKÁ mezera)\n ║\n")) + ("I" (insert " ║ (střední mezera)\n")) + (_ (unless (string= id "J") (insert " ║\n"))))))) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*"))) + +;; --- Najít cestu --- + +(defun alien-rpg-find-path () + "Najdi nejkratší cestu z aktuální místnosti do cíle (BFS)." + (interactive) + (let* ((start (plist-get alien-rpg-state :current-room)) + (candidates (mapcar (lambda (r) + (cons (alien-rpg--room-display-name r) + (plist-get r :id))) + alien-rpg-rooms)) + (choice (completing-read "Najít cestu do: " candidates nil t)) + (goal (cdr (assoc choice candidates))) + ;; BFS + (queue (list (list start))) + (visited (list start)) + (found nil)) + (while (and queue (not found)) + (let* ((path (pop queue)) + (current (car (last path))) + (room (alien-rpg--get-room current)) + (connections (plist-get room :connections))) + (if (string= current goal) + (setq found path) + (dolist (next connections) + (unless (member next visited) + (push next visited) + (setq queue (append queue (list (append path (list next)))))))))) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (if found + (progn + (insert (propertize "═══ CESTA ═══\n\n" 'face 'bold)) + (insert (format "Kroků: %d\n\n" (1- (length found)))) + (let ((step 0)) + (dolist (room-id found) + (let ((r (alien-rpg--get-room room-id))) + (insert (format "%s%d. [%s] %s\n" + (if (= step 0) "📍 " " ") + step + (plist-get r :deck) + (plist-get r :name))) + (cl-incf step))))) + (insert "Cesta nenalezena!\n"))) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*"))) + +;; --- Poznámky --- + +(defun alien-rpg-show-notes () + "Zobraz všechny herní poznámky." + (interactive) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t) + (notes (plist-get alien-rpg-state :notes))) + (erase-buffer) + (insert (propertize "═══ POZNÁMKY ═══\n\n" 'face 'bold)) + (if notes + (dolist (n notes) + (insert (format " %s\n" n))) + (insert " (žádné poznámky)\n"))) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*")) + + +;; ══════════════════════════════════════════════════════════════ +;; DOOM EMACS KEYBINDINGS +;; ══════════════════════════════════════════════════════════════ +;; SPC G = Alien RPG prefix + +(with-eval-after-load 'doom-keybinds + (map! :leader + (:prefix ("G" . "Alien RPG") + ;; Navigace + :desc "Kde jsem" "w" #'alien-rpg-where-am-i + :desc "Přesun" "m" #'alien-rpg-move + :desc "Teleport" "t" #'alien-rpg-teleport + :desc "Najít místnost" "f" #'alien-rpg-find-room + :desc "Najít cestu" "p" #'alien-rpg-find-path + :desc "Přehled paluby" "d" #'alien-rpg-deck-overview + :desc "Přehled stanice" "o" #'alien-rpg-station-overview + :desc "Klíčová místa" "k" #'alien-rpg-key-locations + ;; Postava + :desc "Stav postavy" "s" #'alien-rpg-status + :desc "Dovednosti" "i" #'alien-rpg-skills + :desc "Hodit kostkou" "r" #'alien-rpg-roll + ;; Úpravy stavu + :desc "Nastavit Health" "h" #'alien-rpg-set-health + :desc "Nastavit Stress" "S" #'alien-rpg-set-stress + :desc "Přidat zranění" "j" #'alien-rpg-add-injury + :desc "Přidat výbavu" "g" #'alien-rpg-add-gear + :desc "Přidat zbraň" "W" #'alien-rpg-add-weapon + ;; Sociální + :desc "Nastavit Buddy" "b" #'alien-rpg-set-buddy + :desc "Nastavit Rival" "R" #'alien-rpg-set-rival + ;; Poznámky + :desc "Přidat poznámku" "n" #'alien-rpg-add-note + :desc "Zobrazit poznámky" "N" #'alien-rpg-show-notes + ;; Uložení + :desc "Uložit stav" "q" #'alien-rpg-save-state + :desc "Načíst stav" "Q" #'alien-rpg-load-state))) + +(provide 'alien-rpg) +;;; alien-rpg.el ends here diff --git a/gptel-chats/2026-03-24_1234-Copilot-claude-opus-4.6.org b/gptel-chats/2026-03-24_1234-Copilot-claude-opus-4.6.org new file mode 100644 index 0000000..20c542e --- /dev/null +++ b/gptel-chats/2026-03-24_1234-Copilot-claude-opus-4.6.org @@ -0,0 +1,548 @@ +:PROPERTIES: +:GPTEL_MODEL: claude-opus-4.6 +:GPTEL_BACKEND: Copilot +:GPTEL_SYSTEM: You are a large language model living in Emacs and a helpful assistant. Respond concisely. +:GPTEL_TOOLS: Bash Eval WebSearch WebFetch YouTube Diagnostics Mkdir Edit Insert Write Glob Read Grep TodoWrite Skill Agent elisp_eval symbol_exists load_paths features manual_nodes library_source variable_value function_documentation variable_documentation function_completions command_completions variable_completions simulate_error coerce_nil all_arg_types async_tool gptel-got-tool--list-buffers gptel-got--dir gptel-got--open-file-inactive gptel-got--describe-variable gptel-got--describe-function gptel-got--org-extract-tags gptel-got--org-extract-headings gptel-got--org-ql-select-date gptel-got--org-agenda-seek gptel-got--org-ql-select-headings gptel-got--org-ql-select-headings-rifle gptel-got--org-ql-select-tags-local gptel-got--org-ql-select-tags-local-count gptel-got--org-ql-select-tags gptel-got--org-ql-select-rifle variable_source function_source manual_node_contents symbol_manual_section manual_names create_file create_directory view_buffer view_file edit_buffer edit_file glob replace_buffer replace_file grep ls buffer_search list_buffers bash eval_elisp +:GPTEL_NUM_MESSAGES_TO_SEND: 40 +:GPTEL_BOUNDS: ((tool (3215 4893 "tooluse_VyIksyDI5j1iQ1OUiskfPs") (5087 7931 "tooluse_F8jOGTSXIvHYgjE7WDf901") (8053 12275 "tooluse_aHhagOSuytDaSNMS9MupGX")) (response (4905 5022) (7943 7988) (12287 12823))) +:END: +#+title: Compacted Chat (2026-03-24 12:34) + +** Summary of previous conversation +## Shrnutí konverzace + +### Projekt +**~/alienrpg/** — přístupný herní systém Alien RPG pro nevidomého hráče v Doom Emacs. Postava: prof. Héctor Navarre (biochemik, 74 let). + +### Hlavní výstupy +- **alien-rpg.el** (~1200 řádků): kompletní Elisp herní engine — 129 místností, 10 palub (A–J), BFS pathfinding, hod kostkou, správa postavy +- **10 org souborů palub** (A–J) + paluba-GH.org: referenční textové přepisy map z PDF +- **stanice.org, workflow.org, README.org, herni_karta.org**: podpora/dokumentace + +### Rozhodnutí +- **Prefix SPC G** (ne SPC a — to je obsazené embark-act) +- **Org soubory = referenční studijní materiál**, alien-rpg.el = jediný nástroj během hry +- **Dveře**: vyčištěny falešné automatické detekce červených hran z PDF; sekce v org souborech přepsány na obecná pravidla +- **Pixelové souřadnice** odstraněny všude, nahrazeny textovými polohami (sever, jih-západ…) + +### Poslední změny (právě dokončené) +1. **SPC a → SPC G** opraveno ve workflow.org (43×), README.org (13×), alien-rpg.el komentáři +2. **Autosave stavu**: `alien-rpg-state-file` má výchozí cestu `~/alienrpg/alien-rpg-save.el`; autosave se volá po každém přesunu/teleportu/změně health/stress/zranění/výbavy/zbraní/buddy/rival/poznámky; autoload při `(load "alien-rpg")` +3. **Smazán Oops.rej** +4. **Vyčištěna poslední stará reference** — „tlusté červené čáry" v palubě B, falešná tabulka ~83 dveří v stanice.org + +### Stav +- Finální audit prošel: žádné zbylé SPC a, pixelové souřadnice, falešné počty dveří +- Engine se úspěšně načítá (`load-file` vrací t) +- **Pending**: uživatel chce testovat sám; žádné explicitní další úkoly + +** Continued conversation + + +(:name "edit_file" :args (:file "~/alienrpg/alien-rpg.el" :new_string " (target-id (cdr (assoc choice candidates)))) + (plist-put alien-rpg-state :current-room target-id) + (alien-rpg--autosave) + (alien-rpg-where-am-i))) + +;; --- Teleport (GM řekne \"jsi na palubě X\") --- + +(defun alien-rpg-teleport () + \"Přesuň se kamkoliv na stanici. Pro případy kdy GM řekne novou pozici.\" + (interactive) + (let* ((candidates (mapcar (lambda (r) + (cons (alien-rpg--room-display-name r) + (plist-get r :id))) + alien-rpg-rooms)) + (choice (completing-read \"Teleport na: \" candidates nil t)) + (target-id (cdr (assoc choice candidates)))) + (plist-put alien-rpg-state :current-room target-id) + (alien-rpg--autosave) + (alien-rpg-where-am-i)))" :old_string " (target-id (cdr (assoc choice candidates)))) + (plist-put alien-rpg-state :current-room target-id) + (alien-rpg-where-am-i))) + +;; --- Teleport (GM řekne \"jsi na palubě X\") --- + +(defun alien-rpg-teleport () + \"Přesuň se kamkoliv na stanici. Pro případy kdy GM řekne novou pozici.\" + (interactive) + (let* ((candidates (mapcar (lambda (r) + (cons (alien-rpg--room-display-name r) + (plist-get r :id))) + alien-rpg-rooms)) + (choice (completing-read \"Teleport na: \" candidates nil t)) + (target-id (cdr (assoc choice candidates)))) + (plist-put alien-rpg-state :current-room target-id) + (alien-rpg-where-am-i)))")) + +Successfully edited file /Users/martin/alienrpg/alien-rpg.el +#+end_tool +Teď přidám autosave i do všech funkcí co mění stav (health, stress, zranění, výbava, zbraně, buddy, rival, poznámky): + +#+begin_tool (view_file :file "~/alienrpg/alien-rpg.el" :l ...) +(:name "view_file" :args (:file "~/alienrpg/alien-rpg.el" :limit 80 :offset 940)) + + ;; Push info + (when (= successes 0) + (insert "\n→ Můžeš pushovat (přehodit neúspěchy). Stress +1.\n")) + ;; Talent reminder + (when (eq skill-key :observation) + (insert "\n★ TALENT ANALÝZA: Za každý úspěch jedna informace o organismu/předmětu.\n"))) + (goto-char (point-min)) + (special-mode)) + (pop-to-buffer "*Alien RPG*"))) + +;; --- Upravit zdraví/stres --- + +(defun alien-rpg-set-health (n) + "Nastav Health na N." + (interactive "nHealth (0-4): ") + (plist-put alien-rpg-state :health (max 0 (min 4 n))) + (message "Health: %d/4" (plist-get alien-rpg-state :health))) + +(defun alien-rpg-set-stress (n) + "Nastav Stress na N." + (interactive "nStress (0+): ") + (plist-put alien-rpg-state :stress (max 0 n)) + (let ((s (plist-get alien-rpg-state :stress))) + (message "Stress: %d%s" s (if (>= s 7) " ⚠ NEBEZPEČÍ PANIKY!" "")))) + +(defun alien-rpg-add-injury (injury) + "Přidej zranění INJURY." + (interactive "sZranění: ") + (plist-put alien-rpg-state :injuries + (append (plist-get alien-rpg-state :injuries) (list injury))) + (message "Přidáno zranění: %s" injury)) + +(defun alien-rpg-add-gear (item) + "Přidej výbavu ITEM." + (interactive "sNová výbava: ") + (plist-put alien-rpg-state :extra-gear + (append (plist-get alien-rpg-state :extra-gear) (list item))) + (message "Přidáno: %s" item)) + +(defun alien-rpg-add-weapon (weapon) + "Přidej zbraň WEAPON." + (interactive "sNová zbraň: ") + (plist-put alien-rpg-state :weapons + (append (plist-get alien-rpg-state :weapons) (list weapon))) + (message "Přidána zbraň: %s" weapon)) + +(defun alien-rpg-set-buddy (name) + "Nastav Buddy." + (interactive "sBuddy: ") + (plist-put alien-rpg-state :buddy name) + (message "Buddy: %s" name)) + +(defun alien-rpg-set-rival (name) + "Nastav Rivala." + (interactive "sRival: ") + (plist-put alien-rpg-state :rival name) + (message "Rival: %s" name)) + +(defun alien-rpg-add-note (note) + "Přidej herní poznámku NOTE." + (interactive "sPoznámka: ") + (plist-put alien-rpg-state :notes + (append (plist-get alien-rpg-state :notes) + (list (format "[%s] %s" + (format-time-string "%H:%M") + note)))) + (message "Poznámka uložena.")) + +;; --- Klíčová místa (rychlá reference) --- + +(defun alien-rpg-key-locations () + "Zobraz klíčová místa — kam utéct, co najít." + (interactive) + (with-current-buffer (get-buffer-create "*Alien RPG*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert (propertize "═══ KLÍČOVÁ MÍSTA ═══\n" 'face 'bold)) + (insert " +ZBRANĚ: [F] Zbrojnice (sever-střed paluby F) +LÉKAŘSKÁ POMOC: [C] Ošetřovna a laboratoř (sever-západ paluby C) +#+end_tool +Přidám autosave do všech funkcí co mění stav: + +#+begin_tool (edit_file :file "~/alienrpg/alien-rpg.el" :n ...) +(:name "edit_file" :args (:file "~/alienrpg/alien-rpg.el" :new_string "(defun alien-rpg-set-health (n) + \"Nastav Health na N.\" + (interactive \"nHealth (0-4): \") + (plist-put alien-rpg-state :health (max 0 (min 4 n))) + (alien-rpg--autosave) + (message \"Health: %d/4\" (plist-get alien-rpg-state :health))) + +(defun alien-rpg-set-stress (n) + \"Nastav Stress na N.\" + (interactive \"nStress (0+): \") + (plist-put alien-rpg-state :stress (max 0 n)) + (alien-rpg--autosave) + (let ((s (plist-get alien-rpg-state :stress))) + (message \"Stress: %d%s\" s (if (>= s 7) \" ⚠ NEBEZPEČÍ PANIKY!\" \"\")))) + +(defun alien-rpg-add-injury (injury) + \"Přidej zranění INJURY.\" + (interactive \"sZranění: \") + (plist-put alien-rpg-state :injuries + (append (plist-get alien-rpg-state :injuries) (list injury))) + (alien-rpg--autosave) + (message \"Přidáno zranění: %s\" injury)) + +(defun alien-rpg-add-gear (item) + \"Přidej výbavu ITEM.\" + (interactive \"sNová výbava: \") + (plist-put alien-rpg-state :extra-gear + (append (plist-get alien-rpg-state :extra-gear) (list item))) + (alien-rpg--autosave) + (message \"Přidáno: %s\" item)) + +(defun alien-rpg-add-weapon (weapon) + \"Přidej zbraň WEAPON.\" + (interactive \"sNová zbraň: \") + (plist-put alien-rpg-state :weapons + (append (plist-get alien-rpg-state :weapons) (list weapon))) + (alien-rpg--autosave) + (message \"Přidána zbraň: %s\" weapon)) + +(defun alien-rpg-set-buddy (name) + \"Nastav Buddy.\" + (interactive \"sBuddy: \") + (plist-put alien-rpg-state :buddy name) + (alien-rpg--autosave) + (message \"Buddy: %s\" name)) + +(defun alien-rpg-set-rival (name) + \"Nastav Rivala.\" + (interactive \"sRival: \") + (plist-put alien-rpg-state :rival name) + (alien-rpg--autosave) + (message \"Rival: %s\" name)) + +(defun alien-rpg-add-note (note) + \"Přidej herní poznámku NOTE.\" + (interactive \"sPoznámka: \") + (plist-put alien-rpg-state :notes + (append (plist-get alien-rpg-state :notes) + (list (format \"[%s] %s\" + (format-time-string \"%H:%M\") + note)))) + (alien-rpg--autosave) + (message \"Poznámka uložena.\")" :old_string "(defun alien-rpg-set-health (n) + \"Nastav Health na N.\" + (interactive \"nHealth (0-4): \") + (plist-put alien-rpg-state :health (max 0 (min 4 n))) + (message \"Health: %d/4\" (plist-get alien-rpg-state :health))) + +(defun alien-rpg-set-stress (n) + \"Nastav Stress na N.\" + (interactive \"nStress (0+): \") + (plist-put alien-rpg-state :stress (max 0 n)) + (let ((s (plist-get alien-rpg-state :stress))) + (message \"Stress: %d%s\" s (if (>= s 7) \" ⚠ NEBEZPEČÍ PANIKY!\" \"\")))) + +(defun alien-rpg-add-injury (injury) + \"Přidej zranění INJURY.\" + (interactive \"sZranění: \") + (plist-put alien-rpg-state :injuries + (append (plist-get alien-rpg-state :injuries) (list injury))) + (message \"Přidáno zranění: %s\" injury)) + +(defun alien-rpg-add-gear (item) + \"Přidej výbavu ITEM.\" + (interactive \"sNová výbava: \") + (plist-put alien-rpg-state :extra-gear + (append (plist-get alien-rpg-state :extra-gear) (list item))) + (message \"Přidáno: %s\" item)) + +(defun alien-rpg-add-weapon (weapon) + \"Přidej zbraň WEAPON.\" + (interactive \"sNová zbraň: \") + (plist-put alien-rpg-state :weapons + (append (plist-get alien-rpg-state :weapons) (list weapon))) + (message \"Přidána zbraň: %s\" weapon)) + +(defun alien-rpg-set-buddy (name) + \"Nastav Buddy.\" + (interactive \"sBuddy: \") + (plist-put alien-rpg-state :buddy name) + (message \"Buddy: %s\" name)) + +(defun alien-rpg-set-rival (name) + \"Nastav Rivala.\" + (interactive \"sRival: \") + (plist-put alien-rpg-state :rival name) + (message \"Rival: %s\" name)) + +(defun alien-rpg-add-note (note) + \"Přidej herní poznámku NOTE.\" + (interactive \"sPoznámka: \") + (plist-put alien-rpg-state :notes + (append (plist-get alien-rpg-state :notes) + (list (format \"[%s] %s\" + (format-time-string \"%H:%M\") + note)))) + (message \"Poznámka uložena.\")")) + +Successfully edited file /Users/martin/alienrpg/alien-rpg.el +#+end_tool +Hotovo. Co se změnilo: + +1. *=alien-rpg-state-file=* teď má výchozí hodnotu =~/alienrpg/alien-rpg-save.el= (ne nil). +2. *Autoload při startu* — když soubor existuje, stav se automaticky načte při =(load "alien-rpg")=. Po restartu Emacsu budeš tam, kde jsi skončil. +3. *Autosave po každé změně* — přesun, teleport, health, stress, zranění, výbava, zbraně, buddy, rival, poznámky — vše automaticky zapíše do =alien-rpg-save.el=. Nemusíš mačkat =SPC G q=. + +=SPC G q= (ruční uložení) a =SPC G Q= (ruční načtení) zůstávají pro případ potřeby. + +*** Mam nekolik problemu s Emacs integraci: +1. nejdulezitejsi - pohyb / presuny nereflektuji skutecny stav mapy, napr dvere, +2. vzdy mi to uaze jen jednu cestu nikoli alternativy, abych se mohl rozhodnout +3. pri pridani nove zbrane nechce vedet jeji atributy, v souladu s referencni herni kartou + +Potrebuji, aby hra byla plne accessible a vse sedelo dohromady. Chapu, ze mas problem s analyzou rastrove mapy, ale pouzij logiku, pokud mas problem s analyzou, napis si tool, kktery to bude schopen udelat. + +Kdyz neco budes poustet, dej si tam i smysluplny timeout aby ses nezasekl + +Pracuj samostatne. Pokud neco potrebujes upresnit, zeptej se ted. + + + + +Rozumím. Než + začnu, potřebuji upřesnit pár věcí: + +1. *Dveře* — V org sou +borech palub jsou popsané dveře (zamčené, otevřené, poškozené…). Chceš, abych z těchto org souborů extrahoval informace o dveřích a zabudoval je do grafu místností v =alien-rpg.el=? Tj. aby přesun mezi místnostmi respektoval stav dveří (zamčeno = nelze projít bez akce)? + +2. *Alternativní cesty* — Aktuálně =alien-rpg-move= nabídne sousední místnosti a =alien-rpg-navigate= najde jednu BFS cestu. Chceš: + - (a) Aby =move= ukázal *všechny sousední místnosti* s informací o dveřích/překážkách? + - (b) Aby =navigate= ukázal *více alternativních tras* (např. nejkratší + alternativy přes jiné paluby)? + +3. *Zbraně* — Na herní kartě vidím atributy zbraní (BONUS, DAMAGE, RANGE, SPECIAL). Chceš, aby =alien-rpg-add-weapon= se zeptal na tyto atributy a pak je zobrazoval ve statusu postavy? + +4. *Rastrová mapa* — Máš k dispozici PNG/PDF soubory map jednotlivých palub v =~/alienrpg/=? Pokud ano, jak se jmenují? Nebo mám pracovat *čistě z org souborů* (textových přepisů)? + +Odpověz stručně na tyto 4 body a hned se pustím do práce. + +1. nejsem si jist, ze v org jsou presne, protoze vychazely z drivejsi analyzy. Zdroj informaci je hlavne PDF, jak pro mapy, tak pro herni kartu, jsou v reference_pdf adresari, nacti si je. Cil je, aby rozsireni emacsu i org soubory byly zarovnane se skutecnou mapou. +2. chci idealne moznosti pro a) i b) +3. ano +4. ano, pdf jsou v repozitari, musis udelat dukladnou analyzu, klidne iterativni. mapy jsou celkem jednoduche, ale musis porozumet tomu, co nanich je. + + + + +Pojďme na to. Nejprve se podívám na strukturu projektu a PDF soubory. + + +#+begin_tool (TodoWrite :todos [(:content "Analyze project ...) +(:name "TodoWrite" :args (:todos [(:content "Analyze project structure and PDF files" :activeForm "Analyzing project structure and PDF files" :status "in_progress") (:content "Extract map data from PDF maps (rooms, connections, doors)" :activeForm "Extracting map data from PDF maps" :status "pending") (:content "Extract weapon/gear data from character sheet PDF" :activeForm "Extracting weapon/gear data from PDF" :status "pending") (:content "Rebuild room graph with accurate connections and door states" :activeForm "Rebuilding room graph with accurate connections and doors" :status "pending") (:content "Update move system to show all neighbors with door info" :activeForm "Updating move system for full neighbor display" :status "pending") (:content "Update navigate to show multiple alternative routes" :activeForm "Updating navigation for alternative routes" :status "pending") (:content "Update weapon system with full attributes" :activeForm "Updating weapon system with attributes" :status "pending") (:content "Align org files with corrected map data" :activeForm "Aligning org files with corrected data" :status "pending") (:content "Test and verify everything loads correctly" :activeForm "Testing and verifying" :status "pending")])) + +t +#+end_tool +#+begin_tool (ls :path "~/alienrpg") +(:name "ls" :args (:path "~/alienrpg")) + +. +.. +.DS_Store +.git +README.org +alien-rpg-save.el +alien-rpg.el +gptel-chats +herni_karta.org +paluby +reference_pdf +stanice.org +workflow.org +#+end_tool +#+begin_tool (ls :path "~/alienrpg/reference_pdf") +(:name "ls" :args (:path "~/alienrpg/reference_pdf")) + +. +.. +A_A2.pdf +B_A2.pdf +C_A2.pdf +D_A2.pdf +E_A2.pdf +F_A1.pdf +G+H_A2.pdf +G_A1.pdf +H_A1.pdf +I_A2.pdf +J_A2.pdf +bocni_pohled_A3.pdf +#+end_tool +#+begin_tool (ls :path "~/alienrpg/paluby") +(:name "ls" :args (:path "~/alienrpg/paluby")) + +. +.. +paluba-A.org +paluba-B.org +paluba-C.org +paluba-D.org +paluba-E.org +paluba-F.org +paluba-G.org +paluba-GH.org +paluba-H.org +paluba-I.org +paluba-J.org +#+end_tool +#+begin_tool (view_file :file "~/alienrpg/herni_karta.org") +(:name "view_file" :args (:file "~/alienrpg/herni_karta.org")) + +,#+TITLE: Herní karta — prof. Héctor Navarre +,#+STARTUP: overview + +,* Postava + +- Jméno: prof. Héctor Navarre, Ph.D. +- Kariéra: biochemický inženýr +- Věk: 74 let +- Popis: Metodický a systematický vědec. Tichý, trpělivý pragmatik, + který čeká na výsledky testů, než vyvodí závěry. Většinu kariéry + strávil v laboratoři — toto je jeho první práce v terénu. + +,* Atributy + +| Atribut | Hodnota | +|----------+---------| +| Strength | 3 | +| Agility | 4 | +| Wits | 3 | +| Empathy | 4 | + +,* Dovednosti + +,** Strength (základ 3) + +| Dovednost | Hodnota | Celkem (atribut + dovednost) | +|-----------------+---------+------------------------------| +| Close Combat | 2 | 5 | +| Heavy Machinery | 2 | 5 | +| Stamina | 0 | 3 | + +,** Agility (základ 4) + +| Dovednost | Hodnota | Celkem | +|---------------+---------+--------| +| Mobility | 0 | 4 | +| Piloting | 0 | 4 | +| Ranged Combat | 3 | 7 | + +,** Wits (základ 3) + +| Dovednost | Hodnota | Celkem | +|-------------+---------+--------| +| Comtech | 0 | 3 | +| Observation | 2 | 5 | +| Survival | 0 | 3 | + +,** Empathy (základ 4) + +| Dovednost | Hodnota | Celkem | +|--------------+---------+--------| +| Command | 0 | 4 | +| Manipulation | 3 | 7 | +| Medical Aid | 0 | 4 | + +,* Talent + +,** Analýza +Hod na OBSERVATION — za každý úspěch získáš informaci +o mimozemském organismu nebo předmětu. + +,* Zdraví a stres + +,** Stav + +- Health: 4 +- Resolve: 4 +- Stress Level: 0 + +,** Stavy (zaškrtni při poškození) + +- [ ] Fatigued (vyčerpaný) +- [ ] Radiation (ozáření) + +,** Panic tabulka (referenční) + +| Stress | Reakce (lichá) | Reakce (sudá) | +|--------+-----------------+----------------| +| 7 | Jumpy | Freeze | +| 8 | Tunnel Vision | Seek Cover | +| 9 | Aggravated | Scream | +| 10 | Shakes | Flee | +| 11 | Frantic | Frenzy | +| 12 | Deflated | Catatonic | +| 13-14 | Paranoid | Hesitant | + +,* Výbava + +,** Gear + +1. Svítilna +2. CBRN detektor (viry, toxiny, radiace) +3. Lokátor PDT + +,** Signature item + +Karta (blíže neurčeno) + +,** Zbraně + +| # | Zbraň | Modifier | Damage | Range | Ammo | Weight | +|---+-------+----------+--------+-------+------+--------| +| | | | | | | | + +(Zatím žádné zbraně — doplnit během hry.) + +,** Brnění + +| Brnění | Level | Weight | +|--------+-------+--------| +| | | | + +(Zatím žádné brnění.) + +,* Vztahy + +- Buddy: (doplnit před hrou) +- Rival: (doplnit před hrou) + +,* Tajná agenda + +(Doplnit — GM ti ji sdělí zvlášť, nebo ji obdržíš na začátku hry.) + +,* Body + +- Experience Points: 0 +- Story Points: 0 +- Cash: 0 + +,* Critical Injuries a Mental Trauma + +(Zaznamenávej sem zranění a traumata během hry.) + +,* Záznam ze hry + +,** Stav během sezení + +Aktualizuj si zde hodnoty, které se mění: + +- Aktuální Health: 4 +- Aktuální Stress: 0 +- Aktuální poloha: (paluba a místnost) +- Munice: — +- Přidaná výbava: — + +,** Poznámky + +(Volné poznámky z průběhu hry.) + +#+end_tool +Now let me analyze the PDFs and current alien-rpg.el. Let me start by examining the PDFs and current room definitions: diff --git a/paluby/paluba-B.org b/paluby/paluba-B.org index bceea45..3a55ae5 100644 --- a/paluby/paluba-B.org +++ b/paluby/paluba-B.org @@ -45,25 +45,19 @@ Paluba B je velitelská paluba stanice. Rozložení místností na mapě | Sklad | Jihovýchod (jižněji)| | | Centrální šachta | Střed | Přístup na paluby C–J | -* Dveře (červené čáry na mapě) +* Dveře a průchody -Na palubě B bylo detekováno přibližně 15 dveřních segmentů: +*Poznámka:* Přesný počet a pozice dveří nelze z rastrové mapy spolehlivě +určit. Předchozí automatická detekce červených hran byla nespolehlivá. -- 2 svislé dveře v severní/střední části (y ≈ 10–17%) — oddělují - observatoř a prostor kolem kanceláře vedoucího od řídícího střediska. -- 2 vodorovné dveře v severozápadní části (y ≈ 30%) — oddělují - zasedací místnost od zbytku paluby. -- Shluk dveří v jihozápadní části (y ≈ 58–77%) — kolem průchodu - na palubu "A" a přilehlých prostor. Toto je nejvíce zabezpečená - oblast: přístup k palubě A je chráněn několika dveřmi. -- 1 svislé dveře na jihovýchodě (y ≈ 69%) — oddělují sklad/kuchyňku. -- 1 vodorovné dveře na jihu-východě (y ≈ 81%) — uzavírají jižní - část paluby. +Z kontextu mapy je zřejmé: +- Průchod na palubu A (západ) je pravděpodobně zabezpečený. +- MU/TH/UR (hlavní počítač) je v oddělené sekci na jihu. +- Detaily o zamčených/zabezpečených dveřích zjistíš od GM během hry. ** MU/TH/UR Hlavní počítač stanice (odkaz na "Mother" z filmu Alien). -Nachází se v jižní-střední části paluby. Pravděpodobně přístupný přes -zabezpečené dveře. +Nachází se v jižní-střední části paluby. ** Řídící středisko Hlavní velín stanice v severovýchodní části. @@ -71,9 +65,8 @@ Odtud se řídí provoz celé stanice. * Přístupy a průchody -- Centrální šachta (střed/jih) — přístup na paluby C–J +- Centrální šachta (střed) — přístup na paluby C–J - Průchod na palubu A (západ) — jediný přístup na observatoř -- Dveře (tlusté červené čáry na mapě) oddělují jednotlivé místnosti * Taktické poznámky pro hráče diff --git a/paluby/paluba-C.org b/paluby/paluba-C.org index d3cb4b5..ff31bef 100644 --- a/paluby/paluba-C.org +++ b/paluby/paluba-C.org @@ -54,13 +54,13 @@ Sauna a sprchy jsou podobně ve společné zóně. Arboretum je velký prostor v jižní třetině paluby — živé rostliny, stromy. Tři hydroponické zahrady dole produkují potraviny. -* Dveře (červené čáry na mapě) +* Dveře -Detekováno 5 dveřních segmentů: -- 2 vodorovné dveře na východní straně (x ≈ 67–69%, y ≈ 25–35%) — - oddělují zotavovací místnost a kajutu vedoucího stanice. -- 2 vodorovné dveře na západ-středu (x ≈ 30%, y ≈ 45–47%) — - oddělují kajutu lékařského důstojníka od arboreta. +*Poznámka:* Přesný počet a pozice dveří nelze z rastrové mapy spolehlivě +určit. Předchozí automatická detekce červených hran byla nespolehlivá. + +Paluba C je převážně otevřená — arboretum a společenské prostory +nemají výrazné zabezpečení. Detaily zjistíš od GM. * Taktické poznámky pro hráče diff --git a/paluby/paluba-D.org b/paluby/paluba-D.org index a1ba946..1c5e549 100644 --- a/paluby/paluba-D.org +++ b/paluby/paluba-D.org @@ -57,18 +57,15 @@ astrofyzikální výzkum. Reprezentativní prostory pro příjem hostů. Nachází se mezi centrální částí a dokovacím portem. -* Dveře (červené čáry na mapě) +* Dveře -Detekováno 19 dveřních segmentů: -- 1 vodorovné dveře v severu-středu (y ≈ 22%) — oddělují měřící stanici - od astrofyzikální laboratoře / kajuty vědeckého důstojníka. -- Řada svislých dveří na krajních stranách (x ≈ 3–5% a 94–96%) — - vnější obvod paluby, zřejmě oddělují chodby podél stěn. -- 2 vodorovné dveře na stranách (x ≈ 11% a 88%, y ≈ 31%) — boční - přístupy k centrální části. -- Shluk dveří na jihu (y ≈ 82–85%) — kolem návštěvnického dokovacího - portu. Dokovací port je zabezpečen dvojitými dveřmi (2 vodorovné + - 2 svislé páry) na středu i východní straně. +*Poznámka:* Přesný počet a pozice dveří nelze z rastrové mapy spolehlivě +určit. Předchozí automatická detekce červených hran byla nespolehlivá. + +Z kontextu mapy je zřejmé: +- Návštěvnický dokovací port (jih) je pravděpodobně zabezpečený + (přístup do vesmíru musí být kontrolovaný). +- Detaily zjistíš od GM. * Taktické poznámky pro hráče diff --git a/paluby/paluba-E.org b/paluby/paluba-E.org index 53e293a..0a10a62 100644 --- a/paluby/paluba-E.org +++ b/paluby/paluba-E.org @@ -52,11 +52,11 @@ Rozložení (mapa na výšku): straně a tři na pravé (východní) straně, oddělené centrální chodbou. Kajuty jsou uspořádány ve třech řadách pod sebou. -* Dveře (červené čáry na mapě) +* Dveře -Na palubě E nebyly detekovány žádné výrazné dveřní segmenty. -Kajuty pravděpodobně mají standardní dveře, které na mapě nejsou -vykresleny tlustými červenými čárami — mohou být normálně průchodné. +Paluba E nemá na mapě výrazné zabezpečovací dveře. +Kajuty mají běžné dveře (ne zabezpečené červené), ale mohou být +zabarikádovány. Jídelna a chodby jsou otevřené prostory. * Taktické poznámky pro hráče diff --git a/paluby/paluba-F.org b/paluby/paluba-F.org index 7a7b5ca..d582fe6 100644 --- a/paluby/paluba-F.org +++ b/paluby/paluba-F.org @@ -67,19 +67,14 @@ Rozložení: | F7 | Jih-západ | Nahoru/dolů na G7 | | F8 | Jih-východ | Nahoru/dolů na G8 | -* Dveře (červené čáry na mapě) +* Dveře -Detekováno 15 dveřních segmentů: -- 1 vodorovné dveře na severu-středu (y ≈ 5%) — nad vězeňskou službou. -- 1 dlouhé vodorovné dveře na severo-východě (x ≈ 71%, y ≈ 19%) — - oddělují severní sekci (příprava stravy, ošetřovna, prádelna). -- 1 vodorovné dveře uprostřed (y ≈ 50%) — centrální průchod. -- Symetrický pár dveří ve středu-západ a středu-východ (x ≈ 32% a 68%): - - 2 vodorovné nahoře (y ≈ 52%) - - 2 svislé páry (y ≈ 52%) - - 2 vodorovné dole (y ≈ 53%) - Tyto dveře zřejmě oddělují sklady / WC oblasti. -- 3 dveřní segmenty v jih-středu (y ≈ 56–58%) — kolem průlezů F5/F6. +*Poznámka:* Přesný počet a pozice dveří nelze z rastrové mapy spolehlivě +určit. Předchozí automatická detekce červených hran byla nespolehlivá. + +Jako vězeňské zařízení má paluba F pravděpodobně zabezpečené dveře +kolem cel a zbrojnice. Symetrické rozložení naznačuje kontrolované +přístupy mezi sekcemi. Detaily zjistíš od GM. * Taktické poznámky pro hráče diff --git a/paluby/paluba-G.org b/paluby/paluba-G.org index 982bdcb..f040b33 100644 --- a/paluby/paluba-G.org +++ b/paluby/paluba-G.org @@ -66,18 +66,17 @@ Rozložení: | G8 | Jihovýchod (jižněji)|Dolů na H8 | | G9 | Komunikační věž | Dolů na H9 | -* Dveře (červené čáry na mapě) +* Dveře -Paluba G má nejvíce detekovaných dveří (83 segmentů). -Hlavní skupiny: -- Sever (y < 25%): Dveře kolem nouzového shromaždiště a nástupní haly. - Svislé dveře ve středu kontrolují přístup k centrální ose paluby. -- Střed (y 25–55%): Mnoho dveří kolem hangárů, servisního úložiště - androidů a EVA podů. Přístupy na dokovací porty jsou zabezpečeny - vodorovnými dveřmi na krajních stranách (x ≈ 2–4% a 96–98%). -- Jih (y 55–80%): Hustá síť dveří kolem nákladového doku, - opravárenského doku a nouzových kryopodů. Průlezy G7 a G8 jsou - v oblasti s více dveřmi. +*Poznámka:* Přesný počet a pozice dveří nelze z rastrové mapy spolehlivě +určit. Předchozí automatická detekce (83 segmentů) byla založena na +červených hranách v PDF a obsahovala mnoho falešných pozitivů. + +Z kontextu mapy je zřejmé: +- Dokovací porty 01 a 02 (krajní západ/východ) jsou zabezpečené + (přístup do vesmíru). +- Hangáry mají pravděpodobně kontrolované vstupy. +- Detaily zjistíš od GM. * Taktické poznámky pro hráče diff --git a/paluby/paluba-H.org b/paluby/paluba-H.org index 706ae29..0d31921 100644 --- a/paluby/paluba-H.org +++ b/paluby/paluba-H.org @@ -69,18 +69,16 @@ Rozložení: | H8 | Jih-východ | Nahoru na G8 | | H9 | Kom. věž | Nahoru na G9 | -* Dveře (červené čáry na mapě) +* Dveře -Detekováno 13 dveřních segmentů: -- 4 vodorovné dveře na severu (y ≈ 6–7%), dvě dvojice na x ≈ 39% a 61% — - kolem plasmových přenosových stanic na severu. Dvojité dveře - (nahoře a dole) = bezpečnostní sluis. -- 4 vodorovné dveře na sever-středu (y ≈ 34–35%), na krajích - (x ≈ 4% a 96%) — přístupy ke vnějším plasmovým stanicím. -- 1 svislé dveře na západ-středu (x ≈ 5%, y ≈ 44%) — oddělují - západní průmyslovou sekci. -- Několik dveří na jihu (y ≈ 69–83%) — kolem energetických - sběrných článků a jižních plasmových stanic. +*Poznámka:* Přesný počet a pozice dveří nelze z rastrové mapy spolehlivě +určit. Předchozí automatická detekce červených hran byla nespolehlivá. + +Z kontextu mapy je zřejmé: +- Plasmové přenosové stanice a sběrače jsou pravděpodobně zabezpečené + (nebezpečné průmyslové prostory). +- Nádrž toxických plynů musí mít bezpečnostní uzávěry. +- Detaily zjistíš od GM. * Taktické poznámky pro hráče diff --git a/stanice.org b/stanice.org index ab77f8e..22e2a12 100644 --- a/stanice.org +++ b/stanice.org @@ -126,30 +126,16 @@ Poznámka: Paluba H má měřítko 10 m (dvojnásobné), takže je největší p * Dveře -Na mapách jsou dveře označeny tlustými červenými čárami. -Dveře představují překážky — mohou být zamčené, zablokované nebo poškozené. +Na originálních mapách jsou dveře označeny tlustými červenými čárami. +Přesný počet a pozice dveří však nelze z rastrových PDF spolehlivě +extrahovat — automatická detekce červených hran produkovala falešné +pozitivy. -Analýzou červených pixelů a filtrací protáhlých segmentů -(typických pro dveře) bylo v mapách detekováno: - -| Paluba | Skutečných dveří | Poznámka | -|--------+------------------+-----------------------------------| -| A | ? | Observatoř — nelze spolehlivě filtrovat | -| B | ~ 15 | Kolem vstupu na A, sklad | -| C | ~ 5 | Minimum — otevřená paluba | -| D | ~ 19 | Zabezpečený dokovací port | -| E | 0 | Bez zabezpečovacích dveří | -| F | ~ 15 | Kolem vězeňských prostor | -| G | ~ 83 | NEJVÍCE — silně zabezpečená | -| H | ~ 13 | Kolem plasmových stanic | -| I | ? | Záchranné moduly — kruhové prvky | -| J | ? | Reaktor — kruhové obrysy baterií | - -Detailní popis dveří je v souboru každé paluby v sekci "Dveře". - -*Pozn.:* Paluba G má s 83 dveřmi zdaleka nejvíce zabezpečených -průchodů — logické pro palubu s hangáry a dokovacími porty -(přístupy do kosmu musí být zabezpečené). +Obecná pravidla: +- Dokovací porty a přístupy do vesmíru jsou vždy zabezpečené. +- Vězeňské prostory (paluba F) mají kontrolované průchody. +- Průmyslové prostory (paluba H) mají bezpečnostní uzávěry. +- Detaily o konkrétních dveřích řeší GM během hry. * Ikonky na mapách diff --git a/workflow.org b/workflow.org index 75ecff4..f5c8559 100644 --- a/workflow.org +++ b/workflow.org @@ -1,246 +1,157 @@ #+TITLE: Workflow — Jak hrát Alien RPG jako nevidomý hráč #+STARTUP: overview -* Úvod +* Přehled systému -Tento dokument popisuje osvědčené postupy a workflow pro hraní -stolního RPG Alien jako nevidomý hráč. Cílem je plnohodnotný -herní zážitek srovnatelný s vidícími spoluhráči. +Tento repozitář obsahuje dva systémy: +1. *alien-rpg.el* — Elisp herní engine pro Doom Emacs (PRIMÁRNÍ) +2. *org soubory* — referenční texty palub (pro studium před hrou) + +Během hry používej VÝHRADNĚ =alien-rpg.el= přes =SPC G= prefix. +Org soubory slouží jen pro klidné prostudování před hrou. + +* Instalace + +Přidej do =~/.doom.d/config.el=: + +#+begin_src emacs-lisp +(load! "~/alienrpg/alien-rpg") +#+end_src + +Po restartu Emacsu (nebo =M-x load-file RET ~/alienrpg/alien-rpg.el=) +budou dostupné všechny příkazy pod =SPC G=. + +* Klávesové zkratky — SPC G (Alien RPG prefix) + +** Navigace (kde jsem, kam jdu) + +| Klávesa | Příkaz | Co udělá | +|----------+---------------------+----------------------------------------------| +| =SPC G w= | Kde jsem | Zobrazí palubu, místnost, okolí, přístupy | +| =SPC G m= | Přesun | Completion seznam propojených místností | +| =SPC G t= | Teleport | Přesun kamkoliv (když GM řekne novou pozici) | +| =SPC G f= | Najít místnost | Info o libovolné místnosti na stanici | +| =SPC G p= | Najít cestu | BFS nejkratší cesta z aktuální pozice do cíle | +| =SPC G d= | Přehled paluby | Všechny místnosti na zvolené palubě | +| =SPC G o= | Přehled stanice | Vertikální boční pohled (A nahoře, J dole) | +| =SPC G k= | Klíčová místa | Kam pro zbraně, léky, únik, počítač | + +** Postava a kostky + +| Klávesa | Příkaz | Co udělá | +|----------+---------------------+----------------------------------------------| +| =SPC G s= | Stav postavy | Health, Stress, výbava, pozice, zranění | +| =SPC G i= | Dovednosti | Seřazené od nejsilnějších, s počtem kostek | +| =SPC G r= | Hodit kostkou | Vybere dovednost → hodí → úspěchy + panika | + +** Úprava stavu během hry + +| Klávesa | Příkaz | Co udělá | +|----------+---------------------+----------------------------------------------| +| =SPC G h= | Nastavit Health | Zadej číslo 0–4 | +| =SPC G S= | Nastavit Stress | Zadej číslo 0+ | +| =SPC G j= | Přidat zranění | Textový popis zranění | +| =SPC G g= | Přidat výbavu | Nový předmět | +| =SPC G W= | Přidat zbraň | Nová zbraň | +| =SPC G b= | Nastavit Buddy | Jméno spoluhráče | +| =SPC G R= | Nastavit Rival | Jméno rivala | + +** Poznámky a uložení + +| Klávesa | Příkaz | Co udělá | +|----------+---------------------+----------------------------------------------| +| =SPC G n= | Přidat poznámku | Timestampovaná poznámka | +| =SPC G N= | Zobrazit poznámky | Všechny poznámky z hry | +| =SPC G q= | Uložit stav | Uloží do alien-rpg-save.el | +| =SPC G Q= | Načíst stav | Načte uložený stav | * Před hrou — příprava -** 1. Nastudovat strukturu stanice +** 1. Nastudovat mentální model -Otevřete =stanice.org= a prostudujte si: -- Jak jsou paluby řazeny (A nahoře, J dole) -- Centrální šachta (B–J) -- Systém průlezů (F, G, H) -- Kde jsou klíčové systémy (MU/TH/UR, DA/UT/UR) +Stanice je *vertikální věž* s 10 palubami (A nahoře, J dole): +- Patro 1 (A) = střecha s dalekohledem (izolovaná, jen z B) +- Patra 2–5 (B–E) = velení, medicína, věda, bydlení +- Patra 6–8 (F–H) = vězení, hangáry, průmysl (propojené průlezy) +- Patra 9–10 (I–J) = únik a reaktor + +Centrální šachta prochází palubami B–J (střed každé paluby). ** 2. Nastudovat klíčové paluby -Nemusíte znát všech 10 palub nazpaměť. Zaměřte se na: -1. Palubu, kde vaše hra začíná (zeptejte se GM) -2. Palubu se zbraněmi (F — zbrojnice) -3. Palubu s únikovými cestami (G — hangáry, I — záchranné moduly) -4. Palubu s medicínou (C — ošetřovna) +Nemusíš znát vše nazpaměť. Zaměř se na: +1. Palubu kde hra začíná (zeptej se GM) +2. Zbrojnici: =SPC G f= → "Zbrojnice" (paluba F, sever-střed) +3. Únikové cesty: =SPC G k= zobrazí vše +4. Ošetřovnu: paluba C, sever-západ -** 3. Nastudovat herní kartu postavy +** 3. Nastudovat svou postavu -Otevřete =herni_karta.org= a projděte si: -- Atributy a dovednosti — znát svá silná čísla (Ranged Combat 7, Manipulation 7) -- Talent "Analýza" — jak a kdy ho použít -- Výbavu — CBRN detektor, lokátor PDT, svítilna -- Vztahy — doplnit Buddy a Rival před začátkem hry - -** 4. Připravit si mentální model - -Stanice je *vertikální věž*. Představte si ji jako budovu s 10 patry: -- Patro 1 (A) = střecha s dalekohledem -- Patra 2–5 (B–E) = kanceláře, bydlení, jídlo -- Patra 6–8 (F–H) = průmysl, vězení, hangáry -- Patra 9–10 (I–J) = únik a reaktor - -* Během hry — herní karta - -** Sledování zdraví a stresu - -Během hry průběžně aktualizujte sekci "Stav během sezení" v =herni_karta.org=: -- Health a Stress se mění často — mějte je vždy aktuální -- Při paniku se podívejte do tabulky v sekci "Panic tabulka" -- Zranění a traumata zapisujte do sekce "Critical Injuries" - -** Používání dovedností - -Když GM řekne "hoď si na X", rychle najdete celkový počet kostek: -- =C-s= a hledejte název dovednosti v =herni_karta.org= -- Sloupec "Celkem" = počet základních kostek (+ případné stress kostky) - -Vaše nejsilnější hody: +=SPC G i= (dovednosti) a =SPC G s= (stav). Tvé silné stránky: - Ranged Combat: 7 kostek (střelba) - Manipulation: 7 kostek (přesvědčování) -- Close Combat: 5 kostek -- Heavy Machinery: 5 kostek -- Observation: 5 kostek (+ talent Analýza) +- Observation: 5 kostek + talent Analýza -Vaše nejslabší hody: -- Stamina, Mobility, Piloting, Comtech, Survival, Command, Medical Aid: - 3–4 kostky (jen atribut, žádný bonus) +** 4. Doplnit Buddy a Rivala -** Používání talentu Analýza +Před začátkem hry: =SPC G b= a =SPC G R=. -Talent "Analýza" je klíčový pro vaši postavu: -1. Řekněte GM: "Chci analyzovat [organismus/předmět]" -2. Hoďte na Observation (5 kostek + stress kostky) -3. Za KAŽDÝ úspěch (6) získáte jednu informaci -4. Funguje na mimozemské organismy i neznámé předměty +* Během hry — workflow -** Správa výbavy +** Typický herní cyklus -Při nálezu nové výbavy nebo spotřebování zásob aktualizujte -sekci "Gear" v =herni_karta.org=. +1. GM popíše situaci +2. =SPC G w= → ověříš co víš o pozici +3. Rozhodneš se co uděláš +4. =SPC G m= → přesuneš se NEBO =SPC G r= → hodíš na dovednost +5. Když se změní Health/Stress: =SPC G h= / =SPC G S= +6. Důležitá informace? =SPC G n= → poznámka -Vaše počáteční výbava: -1. Svítilna — základní osvětlení -2. CBRN detektor — detekuje viry, toxiny a radiaci (velmi užitečné!) -3. Lokátor PDT — sledování pozic členů týmu +** Když GM řekne "jsi na palubě X v místnosti Y" -* Během hry — navigace +1. =SPC G t= → teleport na správnou místnost +2. =SPC G w= → ověříš okolí -** Jak se ptát GM na polohu +** Když potřebuješ utéct -Používejte strukturované otázky: -- "Na jaké palubě jsem?" -- "Jaké místnosti jsou vidět/slyšet z mé pozice?" -- "Kolik dveří/východů má tato místnost?" -- "Kterým směrem je centrální šachta?" -- "Jsou zde průlezy na jinou palubu?" +1. =SPC G p= → najdi cestu do bezpečí (vybereš cíl, engine najde cestu) +2. =SPC G k= → klíčová místa (zbrojnice, hangáry, kapsle) -** Jak popisovat svůj pohyb +** Když GM řekne "hoď si na X" -Používejte jasné a jednoznačné příkazy: -- "Jdu do [název místnosti]" -- "Otevírám dveře na [sever/jih/západ/východ]" -- "Lezu průlezem [číslo] na palubu [písmeno]" -- "Používám centrální šachtu na palubu [písmeno]" -- "Prozkoumávám místnost" +1. =SPC G r= → vyber dovednost → automatický hod +2. Výsledek zobrazí úspěchy a paniku okamžitě -** Jak sledovat polohu skupiny +** Na konci sezení -Domluvte se s GM na systému: -- GM by měl na začátku každého kola říct, kde kdo je -- Požádejte spoluhráče, aby hlásili svůj pohyb nahlas -- Pokud se skupina rozdělí, požádejte GM o shrnutí pozic +=SPC G q= → uloží vše (pozice, health, stress, výbava, poznámky) -* Během hry — souboj a nebezpečí +Příští sezení: =SPC G Q= → načte stav -** Orientace v boji +* Principy přístupnosti -Požádejte GM o tyto informace: -- "Kolik nepřátel a kde přibližně?" -- "Jaké mám možnosti krytí?" -- "Kolik východů má tato místnost?" -- "Jak daleko je nejbližší nepřítel?" +** Proč NE org soubory během hry -** Plánování útěku +- Org soubory jsou *dlouhé* — hledání v nich je pomalé +- Screen reader čte celý buffer — příliš mnoho textu +- Jeden příkaz v alien-rpg.el = jedna informace. Žádné scrollování. -Vždy si udržujte přehled o: -1. Nejbližší cestě k centrální šachtě -2. Nejbližším průlezu (na palubách F, G, H) -3. Nejbližší místnosti s dveřmi (lze zabarikádovat) +** Proč completion (SPC G m) -* Během hry — práce s org soubory +- Completion funguje s VoiceOverem +- Fuzzy search — stačí napsat "zbro" a najde "Zbrojnice" +- Zobrazí jen relevantní možnosti (propojené místnosti) -** Rychlé vyhledávání v Emacsu +** Proč nulové nároky na GM -Během hry můžete rychle najít informace: +- Vše je v Elispu, nic se neptáš GM +- GM jen řekne "jsi v místnosti X" → ty stiskneš =SPC G t= +- Hod kostkou je tvůj — =SPC G r= → výsledek za sekundu -- =C-c C-j= (org-goto) — skočit na nadpis v aktuálním souboru -- =C-s= — hledat text v souboru -- =M-x org-agenda= a pak =s= — hledat ve všech org souborech +* Komunikace s GM — minimální -** Doporučený postup při průzkumu nové paluby +Doporučená konvence (řekni GM jednou, na začátku): +1. "Vždy řekni název paluby a místnosti, když se přesuneme." +2. "Kolik nepřátel a kde, když začne souboj." -1. Otevřete soubor dané paluby: =~/alienrpg/paluby/paluba-X.org= -2. Přečtěte si "Celkový popis" (=C-c C-n= skočí na další nadpis) -3. Projděte "Seznam místností" -4. Zkontrolujte "Průlezy" (na F, G, H) -5. Přečtěte "Taktické poznámky" - -* Komunikace s GM - -** Co požádat GM před hrou - -Požádejte Game Mastera (GM), aby: -1. *Hlásil název paluby a místnosti* pokaždé, když se přesunete -2. *Popisoval dveře a východy* — kolik jich je a kam vedou -3. *Upozorňoval na zvuky a pachy* — to jsou vaše hlavní vodítka - (ve hře i pro imerzivní zážitek) -4. *Počítal vzdálenosti* — "zbrojnice je asi 15 metrů odsud" - -** Doporučená dohoda s GM - -Navrhněte GM tuto konvenci: -- Každý popis lokace začíná: "[Paluba X] — [Název místnosti]" -- Východy jsou vždy uvedeny: "Východy: sever (chodba), jih (dveře do cel)" -- Nebezpečí je uvedeno okamžitě: "Slyšíš podezřelý zvuk ze stropu" - -* Tipy pro plnohodnotný zážitek - -** Atmosféra - -Alien RPG je hororová hra. Požádejte GM nebo spoluhráče: -- Pustit atmosférický zvuk (ambientní zvuky stanice, bzučení, - skřípání kovu) — to oceníte jako nevidomý hráč obzvlášť -- Popisovat prostředí smyslově (zvuky, pachy, teplota, vibrace) -- Upozorňovat na změny prostředí (ztichne motor, blikají světla - = pro vás "slyšíš, jak motor přestal bručet") - -** Vaše výhoda - -Jako nevidomý hráč máte výjimečnou schopnost: -- Pamatovat si rozložení na základě slovního popisu -- Sledovat zvukové stopy, které vidící hráči přehlížejí -- Tvorba mentální mapy — můžete GM nabídnout svůj popis - rozložení a ověřit si, že ho máte správně - -** Role-play tip - -Pokud to sedí k vaší postavě, můžete tematicky využít: -- Vaše postava je expert na akustiku / zvukové senzory -- Vaše postava má vynikající paměť na rozložení prostor -- Na tmavé stanici (výpadek proudu) jste nejschopnějším členem týmu - -* Rychlá referenční karta - -** Klíčová místa pro prof. Navarreho - -| Potřebuji... | Paluba | Místnost | -|-----------------------------+--------+--------------------------| -| Analyzovat nález (talent) | kdekoli| Stačí mít předmět u sebe | -| Laboratoř (biochemie) | D | Astrofyzikální lab. | -| Detekovat toxiny (CBRN) | kdekoli| Máš CBRN detektor | -| Sledovat tým (PDT) | kdekoli| Máš lokátor PDT | - -** Klíčová místa (kam utéct / co najít) - -| Potřebuji... | Paluba | Místnost | -|----------------------+--------+------------------------| -| Zbraně | F | Zbrojnice | -| Lékařskou pomoc | C | Ošetřovna/laboratoř | -| Počítač stanice | B | MU/TH/UR | -| Komunikaci | G/H | DA/UT/UR (kom. věž) | -| Evakuaci (loď) | G | Hangáry 01, 02 | -| Evakuaci (kapsle) | I | Záchranné moduly | -| Skrýš/barikádu | E | Kajuty (6 kusů) | -| Nouzový kryospánek | G | Nouzové kryopody | -| Zničit stanici | J | Strojovna reaktoru | -| Nářadí/improvizaci | H | Dílny | -| EVA skafandr | G | EVA pody (4 kusy) | - -** Vertikální přesuny - -| Odkud | Kam | Jak | -|-------+-------+---------------------------------------| -| B–J | B–J | Centrální šachta (střed každé paluby) | -| B | A | Průchod "A" (západ paluby B) | -| F | G | Průlezy F1,F2,F5,F6,F7,F8 | -| G | F | Průlezy G1,G2,G5,G6,G7,G8 | -| G | H | Průlezy G3,G4,G7,G8,G9 | -| H | G | Průlezy H3,H4,H7,H8,H9 | - -* Poznámky z konkrétních her -:PROPERTIES: -:VISIBILITY: folded -:END: - -Sem si můžete během hraní zapisovat poznámky: - -** Sezení 1 -- Datum: -- Startovní paluba: -- Poznámky: - -** Sezení 2 -- Datum: -- Poznámky: +To je vše. Zbytek řeší alien-rpg.el.