fix: JSON repair, WS thread pool, switch to DeepSeek V4 Flash, funnel Lv0
LLM fixes: - _try_repair_json() — ripara JSON malformato (apici, virgole trailing) - _strip_json_from_text() — rimuove residui JSON dalla narration - parse_tool_call() — rimuove troncamento 200 caratteri dal fallback DM fixes: - Fallback euristico quando params vuoti (dm.py) - Estrazione narrazione da dm_override/narrate params.params.text Prompt (prompts.py): - Vietati termini tecnici/scientifici/anacronistici (HPLC, laser, ...) - Aggiunto vocabolario fantasy obbligatorio Server (server.py): - dm_cycle in ThreadPoolExecutor per non bloccare WS ping - WebSocketDisconnect gestiti - Rimosso import inesistente db_schema Frontend (index.html): - Nascosti tool name dalla chat - Personaggio -> PG, connessioni aree con nomi Infrastruttura: - Switch da openrouter/free a DeepSeek V4 Flash via OpenCode Go - pyproject.toml, Dockerfile, docker-compose.yml, start.sh - .env auto-load (start.sh) - Funnel Lv0 (funnel.py) — creazione PG livello 0 Docs: architecture, database, setup, game mechanics, codebase ref
This commit is contained in:
1 parent
6b048dc0cc
commit
eacc946868
23 files changed
+1786
-61
No files matched your search
@@ -0,0 +1,98 @@
|
||||
# Game Mechanics (DCC RPG)
|
||||
|
||||
## Sistema Base
|
||||
|
||||
### D20 + CD
|
||||
- CD 12 = facile, CD 15 = media, CD 18 = difficile
|
||||
- Tiro = d20 + modificatore ≥ CD → successo
|
||||
- 20 naturale = critico (successo automatico)
|
||||
- 1 naturale = fumble (fallimento automatico)
|
||||
|
||||
### Dadi del Gioco (DCC Dice Chain)
|
||||
```
|
||||
d3 → d4 → d5 → d6 → d7 → d8 → d10 → d12 → d14 → d16 → d20 → d24 → d30
|
||||
```
|
||||
Usata per progressioni e meccaniche speciali.
|
||||
|
||||
## Classi Implementate (7)
|
||||
|
||||
| Classe | Dado Vita | Dado Cimento | Abilità Speciale | Critico |
|
||||
|---|---|---|---|---|
|
||||
| Guerriero | d8 | d3→d5 | Mighty Deed (d3→d5+), bonus attacco | IV/V |
|
||||
| Nano | d10 | d3→d5 | Resistenza veleno,感知 trappole | III/IV/V |
|
||||
| Elfo | d6 | d4→d7 | Infravisione, percezione porte segrete | II |
|
||||
| Halfling | d6 | d4→d7 | Resistenza, abilità nascondersi | III |
|
||||
| Ladro | d6 | d4→d7 | Abilità ladro (furtivo, scassinare, ecc.) | II |
|
||||
| Chierico | d8 | d4→d7 | Scacciare non-morti, incantesimi divini | III |
|
||||
| Mago | d4 | d4→d7 | Incantesimi arcani, familiar | I |
|
||||
| Lv0 | d4 | — | Nessuna | I |
|
||||
|
||||
### Mighty Deed (Guerriero)
|
||||
Prima dell'attacco, dichiara un'impresa (es. "sbalzare lo scudo", "accecare").
|
||||
Tira d3 (lv1-4), poi d4/d5 a lv superiori.
|
||||
Se deed ≥ 3, attacco colpisce automaticamente SE l'attacco normale colpisce.
|
||||
Se deed = risultato massimo, effetto speciale narrativo.
|
||||
|
||||
## Combattimento
|
||||
|
||||
### Flusso
|
||||
1. Iniziativa: d20 (più alto → primo)
|
||||
2. Attacco: d20 + bonus attacco vs CA bersaglio
|
||||
3. Danno: dado arma + bonus (modificatori)
|
||||
4. PF: sottratti, mostro morto se PF ≤ 0
|
||||
|
||||
### CA e Armature
|
||||
| Armatura | CA | Dado Fumble |
|
||||
|---|---|---|
|
||||
| Nessuna | 10 | d4 |
|
||||
| Leggera (cuoio) | 12 | d8 |
|
||||
| Media (maglia) | 14 | d12 |
|
||||
| Pesante (piastre) | 16 | d16 |
|
||||
| Scudo | +1 CA | — |
|
||||
|
||||
### Tiri Salvezza
|
||||
- **Tempra**: veleno, malattia, resistenza fisica
|
||||
- **Riflessi**: trappole, esplosioni, schivare
|
||||
- **Volontà**: magia, paura, illusione
|
||||
|
||||
## Incantesimi
|
||||
|
||||
### Spell Check
|
||||
Tiro = d20 + bonus (non modificatore Intelligenza — è un tiro speciale)
|
||||
|
||||
| Tiro | Tier | Effetto |
|
||||
|---|---|---|
|
||||
| 1 | Corruzione | Fallimento critico + corruzione/ritorsione |
|
||||
| < CD | Fallimento | Nessun effetto |
|
||||
| ≤ 11 | Minore | Effetto base |
|
||||
| ≤ 17 | Moderato | Effetto migliorato |
|
||||
| ≤ 19 | Maggiore | Effetto potente |
|
||||
| 20+ | Massimo | Effetto devastante |
|
||||
|
||||
### Corruzione
|
||||
- Su tiro 1 (sempre)
|
||||
- Su tiro ≥ 12 se d20 subsequente = 1
|
||||
- Può causare: mutazioni, danni, follia
|
||||
|
||||
## PE e Avanzamento
|
||||
|
||||
| Risultato | PE |
|
||||
|---|---|
|
||||
| Sconfiggere nemico | 50-75 |
|
||||
| Superare prova difficile | 10-20 |
|
||||
| Soluzione creativa | 25-50 |
|
||||
| Sopravvivenza area | 30-50 |
|
||||
| Avanzamento lv0 → lv1 | 10 PE (automatico) |
|
||||
|
||||
## Classi e Abilità Speciali
|
||||
|
||||
### Abilità Ladro (dado dedicato)
|
||||
- Furtività, Scassinare, Percezione, Acrobazia
|
||||
- Uso dado abilità (d4→d7 a seconda del livello)
|
||||
|
||||
### Scacciare Non-Morti (Chierico)
|
||||
Tiro d20 + bonus (Volontà ?) vs dado vita del non-morto.
|
||||
Successo: fuga o distruzione.
|
||||
|
||||
### Infravisione (Nano, Elfo, Halfling)
|
||||
Vedere nel buio fino a 18m (Nano), 9m (Elfo/Halfling).
|
||||
Reference in new issue
Block a user