Saltar al contenido principal

Oleadas y enemigos de EternalTD

Un archivo de oleadas bajo plugins/EternalTD/waves/ define toda la alineación de enemigos de un nivel, incluyendo oleadas normales, oleadas de muerte súbita y mensajes opcionales de pre-oleada o de oleada. Cada configuración de nivel hace referencia a un archivo de oleadas mediante wavesConfigFile:.

Campos de nivel superior

CampoTipoPor defectoNotas
isEnabledbooltrueDeshabilitar aquí también deshabilita el nivel que depende de este archivo
baseMobAmountint20Cantidad por defecto usada cuando una entrada no especifica amount=
waveEntitieslista de stringsrequeridoEntradas de enemigos oleada por oleada
suddenDeathWaveEntitieslista de stringsopcionalConjunto cíclico opcional de oleadas que se ejecuta cuando se agotan las oleadas configuradas
prewaveMessageslista de mapasopcionalMensajes mostrados antes de que comience una oleada específica
waveMessageslista de mapasopcionalMensajes mostrados cuando comienza una oleada

Si el archivo de oleadas no define ninguna entrada de muerte súbita, el nivel termina en cuanto se agotan las oleadas configuradas.

Formato de entrada de entidad de oleada

Cada línea en waveEntities (o suddenDeathWaveEntities) es una entrada separada por dos puntos:

- wave=1:entityType=ZOMBIE:healthMultiplier=1.0:amount=10
- wave=2:entityType=SKELETON:fast:treasure
- wave=5:entityType=WITHER_SKELETON:boss
- wave=8:entityType=PHANTOM:air:horde
ClaveTipoNotas
waveintRequerido. Número de oleada al que pertenece esta entrada
entityTypeenumRequerido. Valor del enum EntityType de Bukkit
healthMultiplierdoubleOpcional. Multiplica la salud máxima de la entidad
amountintOpcional. Sobrescribe baseMobAmount para esta entrada
namestringOpcional. Cadena de nombre personalizado
resistflagMarca la entidad como inmune a ralentización
fastflagAumenta la velocidad de movimiento
treasureflagDuplica la recompensa de oro al matarla
bossflagAparece como un único jefe con salud escalada y una barra de jefe
hordeflagDuplica amount y reduce la salud a la mitad
airflagLa entidad aparece 4 bloques por encima del camino e ignora los muros del suelo

Cálculo interno de cantidades

  • amount se incrementa en wave / 10 antes del spawn.
  • Las entradas boss sobrescriben amount a max(1, floor(wave / 10)).
  • Las entradas horde duplican la cantidad amount final.
  • Además de la cantidad por entrada, el runtime de oleada también clona copias extra de la primera, tercera, quinta, ... entradas de la oleada (cada índice par 0, 2, 4, ...) hasta waveNumber - 1 veces. Las entradas boss nunca se clonan de esta forma. Por tanto, las oleadas más altas acumulan más duplicados de las entradas de índice inferior.

Formato del bloque de mensajes

Tanto prewaveMessages como waveMessages aceptan una lista de mapas:

prewaveMessages:
- wave: 1
message:
- "&aWelcome! Build a couple of basic towers along the path."
- wave: 5
message:
- "&6Heads up: a boss is coming next wave."

prewaveMessages se ejecuta al comienzo de la fase de construcción para esa oleada. waveMessages se ejecuta en el momento en que comienza la fase defensiva.

Ciclo de vida de la oleada

Una sesión atraviesa estos estados:

  • STARTING — antes de que el jugador ejecute /etd start por primera vez.
  • CONSTRUCTION_PHASE — ventana de construcción de 10 segundos entre fases defensivas.
  • DEFENSIVE_PHASE — los enemigos están apareciendo y recorriendo el camino.
  • ENDING — el jugador salió, perdió o el nivel se quedó sin oleadas.

La fase de construcción siempre dura 10 segundos a menos que el tutorial la retenga (ver Caso especial del nivel tutorial).

Comportamiento al final de la oleada:

  • Completar una oleada otorga waveNumber * 10 de oro.
  • Si no recibiste daño durante la oleada, recibes una segunda copia de esa bonificación como bonificación "Perfect".
  • La lista de modificadores de la siguiente oleada se anuncia tras el final de cada oleada.

Muerte súbita

Si suddenDeathWaveEntities está definido, el nivel sigue ejecutándose más allá de la lista de oleadas configuradas. El contador de muerte súbita se incrementa por oleada y vuelve a la oleada 1 del grupo de muerte súbita siempre que excede el tamaño del grupo.

Sintonía elemental en las entidades de oleada

Cada oleada tiene su propia sintonía elemental que rota por oleada:

  • Oleada 1 → Fuego
  • Oleada 2 → Aire
  • Oleada 3 → Agua
  • Oleada 4 → Tierra
  • (luego se repite)

Cuando una entidad de oleada aparece, hay una probabilidad de waveNumber / 100 de que la entidad herede la sintonía elemental de la oleada, mostrada como una etiqueta de color flotando sobre el mob.

Las reglas de daño elemental son manejadas por la clase DamageTower de la torre:

  • Atacante con la misma sintonía vs objetivo con la misma sintonía — 0.5× de daño (resist).
  • Elementos individuales opuestos (Fuego vs Agua, Aire vs Tierra) — 2× de daño (crit).
  • Las sintonías de fusión (Magma, Blast, Storm, Sludge) siguen interacciones por pares; ver el código fuente para la matriz completa.
  • Una torre sin sintonía inflige 1× de daño a todos.

Las sintonías de fusión se forman cuando una Torre Básica es tocada por torres de apoyo con sintonías elementales combinables:

CombinaciónFusión resultante
Fuego + TierraMagma
Fuego + AireBlast
Agua + AireStorm
Agua + TierraSludge

Los pares conflictivos (Fuego + Agua, Tierra + Aire) y cualquier mezcla de 3+ elementos revierten la torre a Sin sintonía.

Escalado de salud, armadura y recompensa

WaveEntity aplica estas fórmulas en el spawn:

  • health = (currentHealth + ((wave - 1)^1.2) / 2) × healthMultiplier
  • Las entidades de tipo boss tienen su salud multiplicada adicionalmente por baseMobAmount × 0.5.
  • Las entidades de tipo horde tienen su salud reducida a la mitad.
  • Las entidades de tipo air tienen su salud reducida a la mitad nuevamente.
  • La armadura solo aparece a partir de la oleada 10, establecida en maxHealth / 80.
  • La recompensa es ceil(health × 1) y se duplica para las entradas treasure. Las torres de apoyo Gold Mine añaden a la recompensa al morir.

Splitterlings

A partir de la oleada 20, los enemigos no aéreos generan mobs pequeños adicionales ("splitterlings") al morir.

  • Cantidad: floor(wave / 20) por muerte.
  • Si el progenitor era un CAVE_SPIDER, los splitterlings son SILVERFISH. De lo contrario son CAVE_SPIDER.
  • Los splitterlings aparecen en wave / 2 de la oleada del progenitor, por lo que una partida lo suficientemente profunda aún puede encadenar un splitterling en más splitterlings al morir.
  • Los splitterlings dan 0 de oro al morir y los enemigos aéreos nunca generan splitterlings.

Caso especial del nivel tutorial

El mapa tutorial incluido se ejecuta a través de un script de oleadas tutorial codificado:

  • La fase de construcción no termina automáticamente hasta que hayas colocado las torres requeridas exactas en las casillas resaltadas.
  • Las torres codificadas se indican mediante parches de concreto coloreados bajo la casilla de la cuadrícula objetivo y, si FMM está instalado, un modelo de flecha roja apuntando hacia abajo flotando sobre ella.
  • El tutorial añade algo de oro extra al fondo del jugador en las primeras oleadas para que la alineación de torres con script siempre sea asequible.

Vidas y oro del jugador

  • Vidas iniciales: 20.
  • Oro inicial: 150.
  • Los mobs jefe cuestan 5 vidas si llegan al final. Todos los demás mobs cuestan 1 vida.
  • Hacer trampa (/etd cheat) establece vidas y oro a valores efectivamente ilimitados y marca la sesión como tramposa a efectos de puntuación máxima.

Seguimiento de puntuaciones máximas

Cada configuración de nivel persiste highscoreWave y highscorePlayerName. Al final de una sesión sin trampas, el plugin guarda el nuevo número de oleada en el archivo del nivel y emite un mensaje a todo el servidor si superó la puntuación anterior.