Imperivm Resurrected

Formaciones nuevas

Las formaciones de los héroes (Línea, Frente, Bloque, Caballería) son datos: un formations.xml con bonos y colocación, y dos órdenes por formación en data\commands\Hero.xml. Un mod añade las suyas con parches, sin compilar nada.

Ejemplo: ejemplos/formacion-ejemplo (la Cuña).

Camino rápido

crear-formacion.js escribe las tres piezas. Necesitas la carpeta DATA del juego (Datos del juego):

node herramientas/crear-formacion.js <DATA> mods/mi-mod Wedge --dano 3 --armadura 1 --como "Cavalry core" --tecla i
Opción Para qué
<Nombre> El Name de la formación: letras y números, sin espacios. Tiene que ser nuevo
--dano, --armadura, --defensa-pierce, --defensa-slash, --alcance, --nivel Los bonos (de -1000 a 1000). Sin ninguno, la formación solo cambia la colocación
--como La formación del juego de la que copia la lista de clases, el tamaño, la separación y el dibujo del botón: Front (por defecto), Line, Block, Cavalry core, Horse Wings, Ranged Wings
--clases "Unit=flancos,Horse=frente" Tu propia colocación, en vez de la de --como. Los sitios son frente, flancos y centro
--ancho, --alto, --frente, --flanco-x, --flanco-y Width, Height y las tres separaciones (Offset…)
--tecla La letra que elige la formación. Sin ella, busca una libre
--descripcion, --boton El Description (en inglés) y un botón distinto (States/…)

Genera:

patches\data\formations.xml                     la formación
patches\data\commands\Hero.xml                  sus dos botones, form-<nombre>-menu y form-<nombre>
patches\data\subai\hero_formation_verify.vs     el parche del script
mod.json                                        solo si la carpeta no tiene

Si el mod ya trae otra formación, la nueva se añade a esos mismos archivos sin pisar la anterior. Sirve para el parche del script: cada formación suma su @replace.

Comprueba que la tecla esté libre para el héroe, que hereda las órdenes de Unit y Military. Si choca, avisa y la genera igual. En el juego solo queda libre la i, así que la segunda formación de un mod tendrá que compartir tecla: elige una letra y comprueba que el choque no te importa.

Los botones usan el dibujo de la formación base. Para uno propio, ver Imágenes propias y pasa --boton.

Lo que hace por dentro (cómo hacerlo a mano)

Las tres piezas

1. La formación (patches\data\formations.xml):

<patch>
  <add select="/Formations">
    <FormationClass Name="Wedge"
        Description="The warriors form a wedge with the cavalry at the point."
        Width="3" Height="1"
        BonusDamage="3" BonusArmor="1"
        OffsetFrontLineByY="40" OffsetWingsByX="30" OffsetWingsByY="0">
      <Class Name="Unit" Wings="1"/>
      <Class Name="Horse" FrontLine="1"/>
      <Class Name="BaseMage" CentralBlock="1"/>
      <Class Name="Peasant" CentralBlock="1"/>
    </FormationClass>
  </add>
</patch>
Atributo Para qué
Name Nombre de la formación; es lo que usan las órdenes
Description No se muestra en el botón: el juego pone un texto fijo ("Army bonus during stand ground") con los iconos de los bonos
Width, Height Tamaño de la rejilla del grupo de primera línea (FrontLine). En la Cuña, donde las Unit van a los flancos, Width=3 solo afecta a los caballos
BonusDamage, BonusArmor, BonusRange, BonusLevel Bonos del ejército, y solo mientras la tropa está parada ("stand ground"). Se acotan entre -1000 y 1000
BonusDefencePierce, BonusDefenceSlash Defensa contra perforante y contra corte por separado. BonusArmor pone las dos a la vez
OffsetFrontLineByY, OffsetWingsByX, OffsetWingsByY Cuánto se separan la primera línea y los flancos del héroe
<Class Name="…" …/> Dónde van las unidades de esa clase: FrontLine="1" delante, Wings="1" a los lados, CentralBlock="1" en el centro, alrededor del héroe

BonusAttack aparece en alguna formación del juego, pero no hace nada: no cuentes con él.

2. Los botones (patches\data\commands\Hero.xml). Dos órdenes: form-<nombre>-menu (el botón que se ve cuando esa es la formación actual) y form-<nombre> (el que la elige). Las dos llevan param="<Name>" y menu="1". Copia form-front-menu y form-front y cambia name, param, key y button (el dibujo; ver Imágenes).

La tecla no debe chocar con otra orden del héroe, que también hereda las de Unit. En data\commands (con extraer-datos.js, ver Parches) busca key="x" en HERO.XML y UNIT.XML. El ejemplo usa i, que no está en ninguno de los dos; q, por ejemplo, es de reveal.

3. Un parche del script que da paso a los botones (patches\data\subai\hero_formation_verify.vs). El script del juego solo deja elegir formación cuando está abierto uno de sus cuatro menús, nombrados en una lista. Añade el tuyo:

@replace if (cmd_name != "form-front-menu")
if (cmd_name != "form-front-menu")
	if (cmd_name != "form-wedge-menu")
@end

Si otro mod parchea la misma línea para añadir otra formación, los parches se suman: cada @replace vuelve a escribir la línea del juego y deja la tuya detrás.

Online

Los bonos cambian la jugabilidad: todos los jugadores deben llevar el mismo mod.