refactored
This commit is contained in:
46
CLAUDE.md
Normal file
46
CLAUDE.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
Accessible tabletop RPG gaming engine for the Alien RPG space station USCSS CETORHINA. Designed for blind/visually impaired players. Czech UI, English skill names. Runs as Emacs Lisp package within Doom Emacs — minibuffer completion, no file navigation.
|
||||
|
||||
## Architecture
|
||||
|
||||
**alien-rpg.el** (main engine, ~900 lines, lexical-binding):
|
||||
|
||||
- **Data**: `alien-rpg-rooms` (131 rooms as connection graph), `alien-rpg-decks` (10 decks A-J), `alien-rpg-character` (static), `alien-rpg-state` (mutable). Station name in `alien-rpg-station-name`.
|
||||
- **Room IDs**: ASCII slugs (e.g., `B-ridici-stredisko`). Display names use Czech diacritics (`Řídící středisko`).
|
||||
- **Navigation**: Graph-based. `alien-rpg-move` (adjacent), `alien-rpg-teleport` (any). `alien-rpg-find-path` uses BFS to find ALL shortest paths.
|
||||
- **No dice rolling**: Player rolls physical dice. Engine tracks state only.
|
||||
- **Weapons/Armor**: Structured plists — weapons: `(:name :bonus :damage :range :ammo :weight)`, armor: `(:name :rating :weight)`.
|
||||
- **State**: Health, stress, injuries, conditions, weapons, armor, gear, notes. Auto-saves via `alien-rpg--autosave`.
|
||||
- **Keybindings**: `SPC G` prefix (Doom Emacs). No `r` (roll removed). `a` = armor, `c` = condition.
|
||||
|
||||
**Reference docs** (org-mode, Czech):
|
||||
- `paluby/paluba-{A..J}.org` + `paluba-GH.org` — deck descriptions
|
||||
- `stanice.org` — station overview, průlezy, communication tower
|
||||
- `herni_karta.org` — character card
|
||||
- `workflow.org` — gameplay tutorial, keybindings
|
||||
|
||||
## Key Design Constraints
|
||||
|
||||
- **Concise output**: 3-5 lines per command. No emoji, no decorative borders. Room codes everywhere.
|
||||
- **Screen reader friendly**: All interactions via minibuffer completion or short buffer output.
|
||||
- **Zero dependencies**: All data embedded in Elisp. No external files at runtime.
|
||||
- **Doom Emacs required**: `map!` macro, `SPC` leader.
|
||||
- **PDF-verified data**: Room names and connections verified against `reference_pdf/` maps. Thick red lines on maps = doors. Centrální šachta = round room with upside-down person icon.
|
||||
|
||||
## Map Structure
|
||||
|
||||
- Decks A (top) to J (bottom), vertical station
|
||||
- Central shaft: B-J (A is isolated, access from B only)
|
||||
- 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 (communication tower)
|
||||
- G9 connects via Nouzové shromaždiště (top of G), NOT centrální šachta
|
||||
- F centrální šachta is at TOP of deck F, connects to Zbrojnice via corridor
|
||||
|
||||
## Development
|
||||
|
||||
No build system, tests, or CI. Load via `(load! "~/alienrpg/alien-rpg")` in `~/.doom.d/config.el`. Internal helpers use `alien-rpg--` double-dash prefix.
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
* O tomto projektu
|
||||
|
||||
Přístupný herní systém pro stolní RPG Alien. Obsahuje kompletní textový
|
||||
přepis 10 palub vesmírné stanice a *interaktivní Elisp herní engine*
|
||||
Přístupný herní systém pro stolní RPG Alien. Stanice *USCSS CETORHINA* —
|
||||
kompletní textový přepis 10 palub a *interaktivní Elisp herní engine*
|
||||
pro Doom Emacs.
|
||||
|
||||
Originální mapy vytvořil Miroslav Křenek (10 palub A–J, formát PDF).
|
||||
@@ -27,7 +27,6 @@ Instalace — přidej do =~/.doom.d/config.el=:
|
||||
|-----------+-----------------------|
|
||||
| =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 |
|
||||
|
||||
1555
alien-rpg.el
1555
alien-rpg.el
File diff suppressed because it is too large
Load Diff
@@ -1,548 +0,0 @@
|
||||
: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:
|
||||
@@ -43,6 +43,7 @@ Paluba B je velitelská paluba stanice. Rozložení místností na mapě
|
||||
| MU/TH/UR | Jih-střed | Hlavní počítač stanice |
|
||||
| Kuchyňka | Jihovýchod | |
|
||||
| Sklad | Jihovýchod (jižněji)| |
|
||||
| Hlavní chodba | Střed | Centrální koridor paluby |
|
||||
| Centrální šachta | Střed | Přístup na paluby C–J |
|
||||
|
||||
* Dveře a průchody
|
||||
|
||||
@@ -31,9 +31,8 @@ Rozložení (mapa na výšku):
|
||||
| Místnost | Poloha na palubě | Poznámka |
|
||||
|----------------------------+------------------+------------------------------|
|
||||
| Společenská místnost | Sever-střed | Velká místnost pro odpočinek |
|
||||
| Sauna | Severovýchod | Označena "-SAUNA" |
|
||||
| Sprchy (sev.) | Severovýchod | Označena "-SPRCHY" |
|
||||
| WC | Severovýchod | |
|
||||
| Sauna a sprchy | Severovýchod | Označena "-SAUNA -SPRCHY" |
|
||||
| WC | Východ | Samostatná místnost na mapě |
|
||||
| Ošetřovna | Sever-západ | Označena "-OŠETŘOVNA" |
|
||||
| Laboratoř | Sever-západ | Označena "-LABORATOŘ" |
|
||||
| Zotavovací místnost | Sever-východ | Pro rekonvalescenci |
|
||||
@@ -47,9 +46,9 @@ Rozložení (mapa na výšku):
|
||||
|
||||
* Poznámky k rozložení
|
||||
|
||||
Ošetřovna a laboratoř jsou na stejném místě (zřejmě sdílený prostor
|
||||
nebo dvě části jedné místnosti, obě označeny pomlčkou).
|
||||
Sauna a sprchy jsou podobně ve společné zóně.
|
||||
Ošetřovna a laboratoř jsou na stejném místě (sdílený prostor,
|
||||
obě označeny pomlčkou). Sauna a sprchy jsou ve společné zóně.
|
||||
WC je samostatná místnost východně od společenské místnosti.
|
||||
|
||||
Arboretum je velký prostor v jižní třetině paluby — živé rostliny,
|
||||
stromy. Tři hydroponické zahrady dole produkují potraviny.
|
||||
|
||||
@@ -54,7 +54,7 @@ Rozložení:
|
||||
| Sklad (JV horní) | Jih-střed (VH) | |
|
||||
| Sklad (JZ dolní) | Jih-střed (ZD) | |
|
||||
| Sklad (JV dolní) | Jih-střed (VD) | |
|
||||
| Centrální šachta | Střed | Přístup na paluby B–E, G–J |
|
||||
| Centrální šachta | Sever (vrch paluby)| Na vrchu paluby, chodba ke Zbrojnici |
|
||||
|
||||
* Průlezy na této palubě
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ Rozložení:
|
||||
| G6 | Střed-východ | Nahoru na F6 |
|
||||
| G7 | Jihozápad (jižněji)| Dolů na H7 |
|
||||
| G8 | Jihovýchod (jižněji)|Dolů na H8 |
|
||||
| G9 | Komunikační věž | Dolů na H9 |
|
||||
| G9 | Sever (Nouz. shrom.)| Na H9 přes Nouzové shromaždiště |
|
||||
|
||||
* Dveře
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
* Typ stanice
|
||||
|
||||
Jedná se o velkou vesmírnou stanici s vertikálním uspořádáním.
|
||||
USCSS CETORHINA — velká vesmírná stanice s vertikálním uspořádáním.
|
||||
Stanice má 10 palub označených písmeny A (nejvýše) až J (nejníže).
|
||||
|
||||
* Boční pohled (vertikální řez)
|
||||
|
||||
22
workflow.org
22
workflow.org
@@ -36,13 +36,12 @@ budou dostupné všechny příkazy pod =SPC G=.
|
||||
| =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
|
||||
** Postava
|
||||
|
||||
| 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 |
|
||||
| =SPC G i= | Dovednosti | Seřazené od nejsilnějších |
|
||||
|
||||
** Úprava stavu během hry
|
||||
|
||||
@@ -52,7 +51,9 @@ budou dostupné všechny příkazy pod =SPC G=.
|
||||
| =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 W= | Přidat zbraň | Zbraň se všemi parametry |
|
||||
| =SPC G a= | Přidat brnění | Brnění s ratingem a váhou |
|
||||
| =SPC G c= | Přidat stav | Condition (Fatigued, Radiation, ...) |
|
||||
| =SPC G b= | Nastavit Buddy | Jméno spoluhráče |
|
||||
| =SPC G R= | Nastavit Rival | Jméno rivala |
|
||||
|
||||
@@ -87,10 +88,10 @@ Nemusíš znát vše nazpaměť. Zaměř se na:
|
||||
|
||||
** 3. Nastudovat svou postavu
|
||||
|
||||
=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í)
|
||||
- Observation: 5 kostek + talent Analýza
|
||||
=SPC G i= (dovednosti) a =SPC G s= (stav). Silné stránky:
|
||||
- Ranged Combat: 7 (střelba)
|
||||
- Manipulation: 7 (přesvědčování)
|
||||
- Observation: 5 + talent Analýza
|
||||
|
||||
** 4. Doplnit Buddy a Rivala
|
||||
|
||||
@@ -117,11 +118,6 @@ Před začátkem hry: =SPC G b= a =SPC G R=.
|
||||
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)
|
||||
|
||||
** Když GM řekne "hoď si na X"
|
||||
|
||||
1. =SPC G r= → vyber dovednost → automatický hod
|
||||
2. Výsledek zobrazí úspěchy a paniku okamžitě
|
||||
|
||||
** Na konci sezení
|
||||
|
||||
=SPC G q= → uloží vše (pozice, health, stress, výbava, poznámky)
|
||||
|
||||
Reference in New Issue
Block a user