> For the complete documentation index, see [llms.txt](https://realisticnode.gitbook.io/rnsetups/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://realisticnode.gitbook.io/rnsetups/es/rnkoth/guides/modes.md).

# Modos de juego y reglas de la pelea

Modos captura y puntos, salir de la zona, zonas en disputa, tiempo extra, el final del evento y KOTHs itinerantes.

Todas las opciones de esta página están en el archivo del KOTH (`koths/<nombre>.yml`) y en `/koth editor <nombre>`.

## Quién domina el KOTH

Cada medio segundo, el plugin mira quién está dentro de la zona y **cuenta** (ver [los jugadores que cuentan](/rnsetups/es/rnkoth/guides/rules.md#los-jugadores-que-cuentan)). Los jugadores se agrupan en **bandos**: cada jugador por su cuenta, o cada equipo (ver [Equipos](/rnsetups/es/rnkoth/guides/teams.md)).

| Dentro de la zona             | Estado         | Qué pasa                                                |
| ----------------------------- | -------------- | ------------------------------------------------------- |
| Nadie que cuente              | **Libre**      | Nadie avanza. El progreso sigue la regla de `on-leave`. |
| Jugadores de un solo bando    | **Capturando** | Ese bando avanza. Es **quien domina**.                  |
| Jugadores de dos o más bandos | **En disputa** | Depende de `contested` (abajo).                         |

## Modo captura

```yaml
mode: capture
capture:
  time: 120
```

Gana el primer bando que domina el KOTH **solo** durante `capture.time` segundos. La boss bar, la action bar y el holograma muestran el progreso como barra y porcentaje.

<figure><img src="https://1485480385-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQaixEy8lxLssO2tL4Sxc%2Fuploads%2FTtZNnmItX4Nai1LY9E1U%2Frnkoth-es-holding.png?alt=media" alt="Capturando: borde verde y el progreso en la boss bar y en la action bar"><figcaption><p>Capturando: borde verde y el progreso en la boss bar y en la action bar</p></figcaption></figure>

### Cuando sales o mueres: `capture.on-leave`

| Valor                 | Qué pasa con tu progreso                                                                                                                                          |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `reset` (por defecto) | Vuelve a 0 en cuanto tu bando ya no está dentro.                                                                                                                  |
| `pause`               | Se mantiene. Cuando vuelves, sigues. Cualquier otro que tome el KOTH primero tiene que bajar tu progreso a 0 antes de que crezca su propia barra (tira y afloja). |
| `drain`               | Baja poco a poco mientras no hay nadie dentro, a la velocidad de `capture.drain-speed`. Igual que con `pause`, cualquier otro primero tiene que bajarlo a 0.      |

`capture.drain-speed` (por defecto `1.0`) son los segundos de progreso que se pierden por segundo con `drain` mientras la zona está vacía. `2.0` baja el doble de rápido, `0.5` la mitad. Cuando otro bando está bajando tu progreso, baja al menos 1 segundo por segundo (o más rápido con un `drain-speed` mayor).

Mientras otro bando baja tu progreso, su action bar muestra `Bajando el progreso de Steve 45%...`.

{% hint style="info" %}
Con `reset`, saltar o pisar el borde haría perder el progreso. Por eso todas las zonas tienen al menos 3 bloques de alto. Si los jugadores pierden progreso cerca de los bordes, haz la zona un poco más grande o usa `pause`.
{% endhint %}

## Modo puntos

```yaml
mode: score
score:
  target: 300
```

Quien domina gana **1 punto por segundo**. Gana el primer bando que llega a `score.target` puntos. Cuando se acaba el tiempo, gana el bando con más puntos.

Los puntos nunca se pierden: salir de la zona solo hace que dejes de ganar más. `on-leave` y `drain-speed` no se usan en modo puntos.

## Zonas en disputa: `contested`

Un bando es un equipo, o un solo jugador cuando cada uno juega por su cuenta (`teams: solo`, o `teams.mode: solo` en `config.yml`).

| Valor                   | Cuando hay jugadores de bandos distintos dentro                                                                                        |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `freeze`                | Nadie avanza hasta que quede un solo bando. Todas las barras se quedan donde están.                                                    |
| `majority`              | El bando con **más jugadores** dentro sigue avanzando. Con el mismo número de jugadores, nadie avanza.                                 |
| `holder` (KOTHs nuevos) | **Defiende el rey.** El bando que ya estaba avanzando sigue avanzando como si estuviera solo. Los demás tienen que matarlo o sacarlo.  |
| `everyone`              | **Todos contra todos.** Cada bando que está dentro avanza su propio progreso a la vez, como si estuviera solo. Nunca queda en disputa. |

{% hint style="warning" %}
Con equipos en solo cada bando tiene un jugador, así que `majority` siempre es un empate y nadie avanza nunca. Usa `holder` o `everyone`. La consola avisa una vez cuando un KOTH usa `majority` con equipos en solo.
{% endhint %}

Los KOTHs nuevos usan `holder`. Un archivo de KOTH sin la línea `contested` usa `freeze`, así que los archivos antiguos siguen funcionando como antes.

Con `freeze` y `majority`, mientras está en disputa la boss bar y las partículas del borde se ponen rojas, y la boss bar y la action bar dicen `EN DISPUTA` (con `majority`, solo cuando nadie avanza). El chat dice `está en disputa` una vez.

<figure><img src="https://1485480385-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQaixEy8lxLssO2tL4Sxc%2Fuploads%2FMQnu6tA5PdcKnO25xE9v%2Frnkoth-es-contested.png?alt=media" alt="En disputa: partículas rojas, boss bar roja y un aviso en el chat"><figcaption><p>En disputa: partículas rojas, boss bar roja y un aviso en el chat</p></figcaption></figure>

### `holder`

* Si nadie estaba avanzando y entran varios bandos a la vez, el que lleva más tiempo dentro pasa a dominarlo. Si empatan, se lo queda el que tiene más progreso.
* Cuando el que lo domina sale o muere, lo domina el siguiente: el que lleva más tiempo dentro o, si empatan, el que tiene más progreso. El chat dice `X le está quitando <KOTH> a Y`.
* Modo captura: `on-leave` se aplica al bando que salió, como siempre. Con `pause` o `drain`, el nuevo dueño primero baja el progreso que dejó el anterior (el tira y afloja).
* Modo puntos: solo suma puntos el que lo domina.
* El chat dice `X está capturando` cuando alguien pasa a dominarlo. Nunca dice `está en disputa`.
* La boss bar, el holograma y el localizador muestran cuántos jugadores de otros bandos hay dentro, por ejemplo `Castillo » Alex 45% (se defiende de 2)` (`bossbar.defending`, `bossbar.defending-score`, `hologram.defending`, `hud.locator-defending`, placeholder `{others}`). La boss bar mantiene su color, y las partículas del borde mantienen los colores del que lo domina (verde para su bando, naranja para los demás).

### `everyone`

* Modo captura: gana el primer bando que llena su barra. La boss bar y la barra lateral muestran al que va primero (el que tiene más progreso), y la action bar de cada jugador muestra su propio progreso.
* Modo puntos: cada bando que está dentro suma 1 punto por segundo.
* `on-leave` se aplica a cada bando que sale, como siempre. Nadie tiene que bajar el progreso de otro.
* El chat dice `X está capturando` por cada bando cuando empieza, y `X perdió el control` cuando sale. Salir y volver a entrar enseguida no dice nada. Nunca dice `está en disputa`.

## Duración y tiempo extra

```yaml
duration: 900
overtime: 60
```

* `duration`: lo máximo que puede durar el evento, en segundos (por defecto `900`, 15 minutos). `0` = sin límite de tiempo: el evento sigue abierto hasta que alguien lo conquiste (o un admin lo pare con `/koth stop`), y la boss bar y los placeholders muestran `Sin límite`.
* `overtime`: cuando se acaba el tiempo y la pelea sigue, el evento recibe hasta estos segundos extra (`0` = desactivado). El chat anuncia `¡TIEMPO EXTRA!` y la boss bar cuenta hacia atrás el tiempo extra.

El tiempo extra empieza cuando, al final del tiempo:

* el KOTH está **en disputa** (con `holder`: hay otros bandos dentro con el que lo domina), o
* alguien está **bajando** el progreso de otro bando (`pause` o `drain`), o
* en modo captura, quien domina tiene **algo de progreso**.

El evento **termina en cuanto acaba la pelea**, o cuando se acaba el tiempo extra. Si quien domina llena la barra durante el tiempo extra, gana.

{% hint style="info" %}
En modo puntos, el tiempo extra solo empieza cuando el KOTH está en disputa.
{% endhint %}

## Cuando se acaba el tiempo

{% hint style="info" %}
Esto no se aplica con `duration: 0` (sin límite de tiempo): el tiempo nunca se acaba, así que no hay tiempo extra y `best-wins-when-time-ends` no hace nada. El evento solo termina cuando alguien lo captura (captura) o llega al objetivo (puntos), o cuando un admin lo para.
{% endhint %}

| Modo                                                            | Quién gana                            |
| --------------------------------------------------------------- | ------------------------------------- |
| Captura, `capture.best-wins-when-time-ends: true` (por defecto) | El bando con más progreso.            |
| Captura, `capture.best-wins-when-time-ends: false`              | Nadie. El evento termina sin ganador. |
| Puntos                                                          | El bando con más puntos.              |

Si nadie tiene progreso ni puntos, el evento termina sin ganador. El 2.º y el 3.er puesto son los siguientes bandos por progreso o puntos (ver [Premios](/rnsetups/es/rnkoth/guides/rewards.md)). Cuando dos bandos tienen exactamente el mismo progreso o los mismos puntos, se queda el mejor puesto el que va primero por orden alfabético.

El mensaje final en el chat depende del modo (textos en `results` del archivo de idioma):

| Final                       | Mensaje                                                                                                   |
| --------------------------- | --------------------------------------------------------------------------------------------------------- |
| Captura, se llenó la barra  | `results.captured`: el nuevo rey, sin podio (solo un bando puede ganar)                                   |
| Captura, se acabó el tiempo | `results.time-up`: quién gana con el mayor progreso, sin podio                                            |
| Puntos                      | `results.won`: el ganador y un podio con una línea por cada puesto que tenga a alguien (`results.podium`) |
| Nadie ganó                  | `results.nobody-won`                                                                                      |

<figure><img src="https://1485480385-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQaixEy8lxLssO2tL4Sxc%2Fuploads%2FEvlb3WAZ1rqYJcciSV2p%2Frnkoth-es-chat-end.png?alt=media" alt="El final en el chat: el anuncio de conquista, el podio y el resumen"><figcaption><p>El final en el chat: los mensajes de inicio y captura y el resumen final</p></figcaption></figure>

## KOTHs itinerantes (varias zonas)

Dale a un KOTH dos o más zonas (`/koth setzone <nombre> add`, o **Añadir otra zona** en el editor) y se moverá entre ellas.

```yaml
roaming:
  move-every: 120
  order: next
```

| Opción               | Valores                                                                                                                                               |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `roaming.move-every` | Segundos entre movimientos **durante** un evento. `0` = no se mueve durante el evento; en cambio, **cada evento nuevo empieza en la siguiente zona**. |
| `roaming.order`      | `next` = en el orden de la lista. `random` = cualquier otra zona.                                                                                     |

Cuando el KOTH se mueve:

* El chat anuncia `¡El KOTH se movió!` con la nueva ubicación, y suena el sonido `moved`.
* En modo captura, **todas las barras de captura empiezan de nuevo** desde 0. En modo puntos, los puntos se mantienen.
* Quien domina tiene que entrar en la nueva zona para seguir.

El holograma, las partículas, el localizador y la boss bar siguen a la zona donde está ahora el KOTH. `{move_in}` en los textos muestra el tiempo hasta el próximo movimiento.

{% hint style="info" %}
Con `order: random`, el evento empieza en una zona al azar y, durante el evento, nunca se mueve a la misma zona dos veces seguidas. Con `order: next`, cada evento empieza en la zona que sigue a la del inicio del último evento; esto se guarda en `data/running.yml`, así que se mantiene después de un reinicio.

La zona del próximo evento se elige antes de que empiece, y los avisos, la cuenta atrás, el mensaje de "no hay suficientes jugadores", el holograma y `/koth tp` ya la usan. Con `order: random` se elige una vez y se mantiene hasta que empieza ese evento.
{% endhint %}

## Ejemplos

**KOTH clásico**: domínalo 2 minutos solo; si sales, se reinicia.

```yaml
mode: capture
capture:
  time: 120
  on-leave: reset
contested: freeze
```

**Tira y afloja**: el progreso se mantiene, así que cada visita cuenta.

```yaml
mode: capture
capture:
  time: 180
  on-leave: pause
contested: freeze
overtime: 120
```

**Peleas de equipos grandes**: puntos, y el equipo más grande dentro sigue avanzando.

```yaml
mode: score
score:
  target: 600
duration: 1200
contested: majority
```

**Cada uno por su cuenta**: sin equipos, el primero que entra lo defiende.

```yaml
teams: solo
contested: holder
```

**Carrera todos contra todos**: cada uno llena su propia barra, gana el más rápido.

```yaml
teams: solo
contested: everyone
capture:
  time: 90
  on-leave: drain
```

**KOTH que se mueve**: tres zonas, se mueve cada 2 minutos.

```yaml
zones:
  - 'box world 100 64 100 110 66 110'
  - 'box world 200 70 -50 208 72 -42'
  - 'circle world -80 65 30 6 4'
roaming:
  move-every: 120
  order: next
```
