# Storylines

## Storylines

Storylines encadena quests con NPC y decisiones del jugador.

Es la capa ideal para tutoriales, campañas y progresión RPG.

### Piezas del sistema

* **NPC inicial** — punto de entrada.
* **steps** — nodos narrativos.
* **choices** — decisiones del jugador.
* **quest** — quest vinculada a una rama.
* **next** — siguiente paso.

### Ejemplo completo

```yaml
storylines:
  ejemplo:
    start-npc: "1"
    steps:
      - npc: "1"
        text:
          - "<gold>Guardia:</gold> Necesito ayuda."
        choices:
          - text: "Acepto ayudar"
            quest: "quest_0001"
            next: 1
          - text: "No puedo"
            end: true
      - npc: "1"
        text:
          - "<gold>Guardia:</gold> Vuelve cuando termines."
```

### Ejemplo completo de `quests/storylines.yml`

Este ejemplo muestra una cadena simple con aceptación, bifurcación y cierre.

```yaml
storylines:
  guardia_inicial:
    start-npc: "captain_01"
    steps:
      - npc: "captain_01"
        text:
          - "<gold>Capitán:</gold> La muralla norte está sin vigilancia."
          - "<gray>Necesito que ayudes antes del anochecer.</gray>"
        choices:
          - text: "Acepto la tarea"
            quest: "quest_0001"
            next: 1
          - text: "Ahora no"
            end: true

      - npc: "captain_01"
        text:
          - "<gold>Capitán:</gold> Bien. Cuando termines, vuelve a verme."
        requirements:
          completed:
            - quest_0001
        choices:
          - text: "He terminado"
            quest: "quest_0200"
            next: 2

      - npc: "captain_01"
        text:
          - "<gold>Capitán:</gold> Has demostrado disciplina."
          - "<gray>Puedo confiarte una ronda más peligrosa.</gray>"
        choices:
          - text: "Quiero seguir"
            quest: "quest_0300"
            next: 3
          - text: "Prefiero esperar"
            end: true

      - npc: "captain_01"
        text:
          - "<gold>Capitán:</gold> La guardia te reconocerá por tu servicio."
        requirements:
          completed:
            - quest_0300
        choices:
          - text: "Entendido"
            end: true
```

### Explicación paso a paso

#### Paso 1

El NPC inicial ofrece la entrada a la storyline.

La primera choice puede aceptar `quest_0001`.

#### Paso 2

El siguiente paso queda bloqueado hasta completar la quest anterior.

Esto mantiene el orden narrativo sin lógica duplicada en la quest.

#### Paso 3

La historia abre una nueva quest de mayor nivel.

Aquí puedes conectar reputación, rewards especiales o títulos.

#### Paso 4

El cierre confirma el final de la rama.

Ese cierre puede terminar la historia o dejar abierta una continuación.

### Flujo del jugador

1. El jugador interactúa con el NPC inicial.
2. El sistema localiza la storyline y el step actual.
3. Muestra texto y choices.
4. La elección puede aceptar una quest, mover al siguiente step o cerrar la historia.
5. El estado queda persistido por jugador.

### Estado persistido

Cada jugador necesita al menos:

* storyline actual
* step actual
* choices ya tomadas
* flags de ramas completadas

### Encadenamiento con quests

La storyline no reemplaza las quests. Las orquesta.

Eso permite separar narrativa de lógica de progreso.

```
NPC
  -> abrir step narrativo
  -> choice
  -> aceptar quest
  -> completar quest
  -> desbloquear step siguiente
```

### Patrones recomendados

* Usa un NPC claro por storyline corta.
* Bloquea steps con `completed` cuando la secuencia importa.
* Mantén cada branch con pocas choices relevantes.

### Recomendaciones

* Mantén cada step corto.
* Usa decisiones con impacto real.
* No escondas requisitos importantes.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://camiladev.gitbook.io/documentation/quests/guia-de-administracion/storylines.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
