Formas personalizadas
Las formas personalizadas son transformaciones que añades o cambias con archivos JSON. Las formas pueden estar en dos lugares; ambos usan exactamente el mismo esquema JSON y la misma clase de Java (FormConfig.java), y solo la carpeta en la que están cambia su significado:
| Ubicación | Qué es |
|---|---|
config/dragonminez/races/<race>/forms/*.json |
Las formas de raza pertenecen a una sola raza (por ejemplo, el Super Saiyajin solo existe para los Saiyajin). Consulta Razas personalizadas. |
config/dragonminez/forms/*.json |
Las formas acumulables las comparten todas las razas y están pensadas para sumarse encima de la forma de raza que ya esté activa. |
Esta página trata del segundo tipo, las formas acumulables, pero la referencia de campos de abajo también se aplica a las formas de raza.
Cargador: ConfigManager.createOrLoadStackForms() lee todos los archivos de config/dragonminez/forms/ (ConfigLoader.loadStackForms). Se ignoran los archivos cuyo nombre empieza por old_.
Qué es una forma acumulable
Una forma acumulable no reemplaza tu transformación actual: suma sus multiplicadores encima de ella. El ejemplo más claro es el Kaioken: un Saiyajin puede estar en su forma base o en Super Saiyajin y además estar en Kaioken x2 al mismo tiempo, lo que multiplica la forma en la que ya esté. Los grupos de formas acumulables incluidos son kaioken (x2, x3, x4, x10, x20) y ultimate (StackForms.java).
Un grupo acumulable se desbloquea con la habilidad acumulable indicada en su formType: kaioken o ultimate. Una forma del grupo queda disponible cuando esa habilidad alcanza el unlockOnSkillLevel de la forma.
Estructura del archivo
Hay un archivo por grupo, por ejemplo config/dragonminez/forms/kaioken.json (resumido):
{
"configVersion": "2.2.0",
"groupName": "kaioken",
"formType": "kaioken",
"forms": {
"x2": {
"name": "x2",
"unlockOnSkillLevel": 1,
"keepBaseFormHeadBones": true,
"strMultiplier": 1.1,
"skpMultiplier": 1.1,
"defMultiplier": 1.125,
"pwrMultiplier": 1.1,
"speedMultiplier": 1.1,
"healthDrain": 0.03,
"attackSpeed": 1.1,
"tintColor": "#FF0000",
"tintIntensity": 0.1,
"auraColor": "#DB182C",
"auraLayer": 1,
"formStackable": true,
"stackDrainMultiplier": 1.0,
"incompatibleWith": ["ultimate.ultimate"],
"shareMasteryWith": ["kaioken.x3"],
"shareMasteryMultiplier": 0.25
}
}
}
groupName es la clave del grupo (en minúsculas); los grupos se identifican por ella, no por el nombre del archivo. Todo lo que está anidado dentro de forms es una entrada de forma, identificada por su propio name. Cualquier campo que omitas toma el valor por defecto que se indica abajo.
"configVersion": "2.2.0". Un archivo de forma personalizada con una versión más antigua o sin versión se respalda en config/dragonminez/oldBackup/ y se vuelve a guardar con la versión actual; tus valores se conservan. Un archivo con sintaxis JSON rota se omite y se informa hasta que lo corrijas.
Referencia de campos
Origen del esquema: src/main/java/com/dragonminez/common/config/FormConfig.java.
Desbloqueo y requisitos
gameplay| Campo | Tipo | Por defecto | Qué hace |
|---|---|---|---|
name |
Texto | "" |
Clave de la forma dentro del grupo (por ejemplo x2, x3 o ultimate).
|
unlockOnSkillLevel |
Entero | 0 |
Nivel de la habilidad de forma del grupo que desbloquea esta forma. |
formRequisite |
Texto | "" |
Otras formas que hay que dominar primero, como "group.form". Separa varias con comas.
|
formRequisiteType |
Texto | all |
all: todas las formas listadas necesitan la maestría. any: basta con una.
|
unlockOnMastery |
Decimal | 0.0 |
Maestría que necesitan las formas de formRequisite. 0 desactiva el requisito.
|
levelRequisite |
Entero | 0 |
Nivel de jugador necesario. Hasta alcanzarlo, la habilidad de forma no puede subir de nivel hasta esta forma. Se activa con levelFormRequisiteEnabled en general-server.json → gameplay.
|
sagaRequisite |
Texto | "" |
Misión de saga que hay que completar primero, como "sagaId:questId" (por ejemplo "frieza_saga:10"). Hasta completarla, la habilidad de forma no puede subir de nivel hasta esta forma. Se ignora si el modo historia está desactivado o si la misión no existe. Se activa con sagaFormRequisiteEnabled en general-server.json → gameplay.
|
Apariencia
| Campo | Tipo | Por defecto | Qué hace |
|---|---|---|---|
customModel |
Texto | "" |
Clave de modelo de la forma. Se busca igual que un modelo de raza: claves incluidas o tu propio geo/entity/races/<key>.geo.json (consulta Modelos y recursos propios). El modelo de una forma acumulable tiene prioridad sobre el de la forma de raza.
|
keepBaseFormHeadBones |
Booleano | false |
Mantiene visible en esta forma el hueso de cabeza que eligió el jugador (orejas, cuernos, etc.). |
hideTail |
Booleano | false |
Oculta la cola Saiyajin mientras estás en esta forma. |
transformationAnimation |
Texto | transf.generic |
Animación que se reproduce al cargar esta forma. Valores incluidos: transf.generic, transf.ssj, transf.ssj3, transf.ssg2, transf.ozaru, transf.absorb, transf.berserker, transf.freezer, transf.freezer2, transf.janemba, transf.daima. Sirve cualquier nombre de animación de los archivos de animación del jugador (assets/dragonminez/animations/entity/races/*.animation.json), así que un paquete de recursos puede añadir las suyas. Vacío significa la animación genérica.
|
bodyColor1, bodyColor2, bodyColor3, hairColor, eye1Color, eye2Color |
Texto hex | "" |
Colores que se sobrescriben. Vacío mantiene el color del jugador. Los colores se mezclan gradualmente durante la carga. |
furUsesHairColor |
Booleano | false |
En los modelos SSJ4 (un customModel que contiene ssj4gt o ssj4d), colorea el pelaje con el color del pelo.
|
hairType |
Texto | "" |
Cuál de los peinados del jugador se muestra: base, ssj, ssj2, ssj3 o ssj4.
|
forcedHairCode |
Texto | "" |
Un código de pelo (del editor de pelo) que se fuerza mientras estás en esta forma. |
extraFormLayer, extraFormColor |
Texto / Hex | "" |
Textura extra dibujada sobre el cuerpo, teñida con extraFormColor (blanca si está vacío). Usa un namespace:path completo o una ruta dentro del namespace dragonminez, por ejemplo textures/entity/races/my_overlay.png.
|
auraType |
Texto | kakarot |
Conjunto de sprites del aura 2D: kakarot o god.
|
auraType3D |
Texto | userPreference |
Estilo del aura 3D: smooth, sparking, god o userPreference (el ajuste propio de cada jugador). Una forma que indica god lo muestra en cualquier raza; como preferencia del jugador, es exclusivo de los Glind.
|
auraColor |
Texto hex | "" |
Color del aura. Vacío mantiene el color de aura del jugador. |
auraLayer |
Entero | 0 |
Capa del aura. Las formas en capas distintas muestran auras separadas al mismo tiempo (las formas Kaioken usan la capa 1).
|
aura3DStyle |
Objeto | Ver abajo | Forma del aura 3D (consulta Forma del aura 3D). |
extraAuraType, extraAuraType3D, extraAuraColor, extraAuraLayer, extraAura3DStyle |
— | kakarot, userPreference, #FFFFFF, -1, valores por defecto |
Una segunda aura. extraAuraLayer debe ser de 1 a 6 para que se vea; -1 significa ninguna.
|
hasLightnings, lightningColor |
Booleano / Hex | false, "" |
Rayos alrededor del jugador. |
modelScaling |
Decimales [x, y, z] |
[0.9375, 0.9375, 0.9375] |
Factores de escala del modelo. |
tintColor, tintIntensity |
Hex / Decimal | #FF0000, 0.0 |
Tinte de color sobre el jugador mientras está transformado. 0 significa sin tinte.
|
outlineShader |
Objeto | — | enabled (false), primaryColor (#7FFFFF), secondaryColor, outlineThickness (1.5).
|
Forma del aura 3D
Estas claves van dentro de aura3DStyle y extraAura3DStyle (y dentro del aura3DStyle de una raza en character.json). Todas las claves son opcionales; una clave que falta usa el valor por defecto.
| Clave | Por defecto | Qué hace |
|---|---|---|
size |
[1.10, 1.17, 1.02] |
Ancho, alto y profundidad de la envoltura del aura. |
flamePeaks |
12 |
Número de lenguas de fuego alrededor de la envoltura (1–64). Solo en el estilo smooth. |
waveFrequency, waveSpeed, waveAmplitude |
2.0, 5.0, 0.75 |
Ondas de las llamas. En el estilo sparking, waveAmplitude es el alcance de los picos y waveSpeed la velocidad de los estallidos.
|
noiseDetail, upwardBias |
0.10, 0.54 |
Turbulencia de las llamas y con cuánta fuerza suben. |
coreAlpha, rimAlpha, rimPower, rimThreshold |
0.05, 1.0, 4.0, 0.05 |
Opacidad del centro y del borde. |
coreColor, rimColor, noiseColor |
"" |
Colores hex. Vacío significa que se derivan del color del aura. |
secondBorderColor |
"" |
Color hex de un fleco exterior alrededor del borde. Solo en el estilo sparking; vacío significa sin fleco. |
bloomIntensity |
1.0 |
Intensidad del brillo. |
spikeDensity, spikeBurstRate, spikeRarity, bandStart |
32, 3.0, 3.0, 0.50 |
Solo en el estilo sparking: columnas de picos (4–32), frecuencia de estallidos, qué tan raros son los picos y dónde empieza la banda del contorno. |
Estadísticas y consumos
| Campo | Tipo | Por defecto | Qué hace |
|---|---|---|---|
strMultiplier, skpMultiplier, stmMultiplier, defMultiplier, vitMultiplier, pwrMultiplier, eneMultiplier, speedMultiplier |
Decimal | 1.0 |
Multiplicadores de estadísticas. RES usa el promedio de defMultiplier y stmMultiplier. Una forma de raza y una forma acumulable suman sus bonificaciones, o las multiplican si multiplicationInsteadOfAdditionForMultipliers está activado en general-server.json.
|
attackSpeed |
Decimal | 1.0 |
Multiplicador de velocidad de ataque. |
energyDrain, staminaDrain, healthDrain |
Decimal | 0.0 |
Consumo mientras estás transformado (también se usa para el costo de transformarse). Los valores por debajo de 0 se tratan como 0.
|
staminaDrainMultiplier |
Decimal | 1.0 |
Multiplicador de la stamina que cuesta cada ataque mientras estás transformado. |
otherworldTimeDrain, otherworldTimeDrainMastered |
Decimal | 1.0, 1.0 |
Qué tan rápido consume esta forma el temporizador de resurrección temporal de Baba, con 0 de maestría y con maestría completa (se interpola entre ambos). Consulta Otro Mundo. |
Maestría
| Campo | Tipo | Por defecto | Qué hace |
|---|---|---|---|
maxMastery |
Decimal | 100.0 |
Maestría máxima (0 significa que no hay progreso de maestría).
|
masteryPerHitDealt, masteryPerHitReceived |
Decimal | 0.01 |
Maestría que se gana por golpe. |
passiveMasteryEveryFiveSeconds |
Decimal | 0.001 |
Maestría pasiva que se gana cada 5 segundos en la forma. |
maxStatsMultiplier |
Decimal | 1.25 |
Con maestría completa, los multiplicadores de estadísticas mayores que 1 se multiplican por este valor (aumenta de forma lineal con la maestría).
|
maxCostMultiplier |
Decimal | 0.5 |
Con maestría completa, los consumos de la forma se multiplican por este valor (escala de forma lineal con la maestría). |
stackOnMastery |
Decimal | 0.0 |
Maestría que necesita esta forma antes de poder combinarse con una forma acumulable (o, si es una forma acumulable, con una forma de raza). |
instantTransformOnMastery |
Decimal | 40.0 |
Maestría que necesita esta forma para la transformación instantánea (sin carga, cuesta ki). |
allowFreeTransformOnMastery |
Decimal | 50.0 |
Maestría que necesita esta forma antes de que puedas transformarte directamente en ella en vez de recorrer el grupo en orden. La primera forma desbloqueada del grupo nunca la necesita. |
shareMasteryWith, shareMasteryMultiplier |
Lista / Decimal | [], 1.0 |
Cada vez que esta forma gana maestría, cada forma listada ("group.form") gana esa cantidad × shareMasteryMultiplier. Las formas Kaioken por defecto comparten un 25% con la siguiente.
|
Comportamiento al acumular
| Campo | Tipo | Por defecto | Qué hace |
|---|---|---|---|
formStackable |
Booleano | true |
Tanto la forma de raza como la forma acumulable deben permitir la acumulación. |
stackDrainMultiplier |
Decimal | 2.0 |
Mientras una forma de raza y una forma acumulable están combinadas, los consumos de ambas formas se multiplican por el stackDrainMultiplier de ambas formas.
|
incompatibleWith |
Lista de "group.form" |
["ultimate.ultimate"] |
Formas que no pueden estar activas al mismo tiempo que esta (se comprueba en ambos sentidos). En una forma de raza, incluir ultimate.ultimate también evita que la forma Definitivo la copie como tu mejor forma; las formas propias de DragonMineZ solo lo incluyen en el nivel más alto de cada raza.
|
formCombo |
Texto | "" |
Id de atributos de arma que se usa para los combos cuerpo a cuerpo en esta forma, por ejemplo dragonminez:giant para las formas gigantes. Un nombre sin namespace se busca en dragonminez: y luego en minecraft:. Consulta Atributos de armas.
|
Costos y efectos
| Campo | Tipo | Qué hace |
|---|---|---|
triggerItemCosts |
Lista de { itemId o itemTag, nbt, count, consume } |
Objetos necesarios para transformarse. Las entradas son alternativas: se usa la primera que el jugador pueda pagar. count vale 1 por defecto y consume, true. itemTag es un id de etiqueta sin #. Los jugadores en creativo no lo necesitan.
|
durationItemCosts |
Lista de { itemId o itemTag, nbt, durationSeconds } |
Objetos que mantienen la forma activa: cada objeto compra durationSeconds (por defecto 1) de tiempo de forma. Cuando no queda ninguno, la forma termina.
|
mobEffects |
Lista de { effectId, amplifier, durationTicks, ambient, visible, showIcon } |
Efectos de poción que se aplican mientras estás transformado. durationTicks -1 (el valor por defecto) significa mientras dure la forma.
|
Claves de traducción
Los grupos de formas acumulables y sus formas se nombran con estas claves:
race.dragonminez.stack.group.<groupName> # e.g. "race.dragonminez.stack.group.kaioken" -> "Kaioken"
race.dragonminez.stack.form.<groupName>.<name> # e.g. "race.dragonminez.stack.form.kaioken.x2" -> "x2"
Añádelas a tu en_us.json o a tu propio archivo de idioma. Las traducciones personalizadas se combinan con las de Crowdin igual que en las razas personalizadas.
Recargar y validar
- Guarda tu archivo en
config/dragonminez/forms/. - Valida la sintaxis JSON (consulta Cómo usar JSON).
- Ejecuta
/dmzreload config(consulta Recargar y actualizar cambios). - Transfórmate en el juego y comprueba que las estadísticas, los consumos, la apariencia y la acumulación funcionen como esperas.