Catalogo de Datos JSON - vykymoon/rpg-character-creator GitHub Wiki

Todo el contenido del juego (razas, clases, habilidades y vestuario) vive en src/main/resources/data/. Agregar o ajustar contenido no requiere tocar Java.

Archivo Factory Contenido actual
races.json RaceFactory 7 razas
classes.json CharacterClassFactory 6 clases
skills.json SkillFactory 12 habilidades
outfits.json OutfitFactory 10 piezas de vestuario

characters.json (personajes guardados) está en la misma carpeta pero no es catálogo: lo gestiona el DAO. Ver Galería y Persistencia.

Razas

Campos: id, name, description, baseStrength, baseDexterity, baseIntelligence, baseVitality.

id Nombre FUE DES INT VIT Descripción
humano Humano 5 5 5 5 Equilibrado en todo
elfo Elfo 3 7 6 4 Ágil e intelectual, frágil
orco Orco 8 3 2 7 Fuerza y resistencia brutales
enano Enano 6 3 4 7 Resistente y fuerte, lento
mediano Mediano 2 8 5 4 Pequeño y escurridizo
draconiano Draconiano 6 4 4 6 Escamas duras y sangre de fuego
gnomo Gnomo 2 5 8 5 Frágil de cuerpo, brillante de mente

Clases

Campos: id, name, description, bonusStrength, bonusDexterity, bonusIntelligence, bonusVitality.

id Nombre FUE DES INT VIT Total
guerrero Guerrero +5 +2 +0 +4 11
mago Mago +0 +2 +6 +1 9
picaro Pícaro +2 +6 +1 +2 11
clerigo Clérigo +2 +1 +5 +3 11
arquero Arquero +2 +6 +1 +2 11
druida Druida +1 +2 +6 +2 11

El Mago suma 9 puntos y las demás 11. Viene del código original; conviene confirmar si es intencional.

Habilidades

Campos: id, name, description, manaCost, allowedRaces, allowedClasses.

id Nombre Maná Razas Clases
golpe_certero Golpe Certero 0 todas todas
bola_de_fuego Bola de Fuego 15 todas mago
sigilo Sigilo 5 elfo, humano, mediano todas
curacion_menor Curación Menor 10 todas clerigo, druida
furia_sangrienta Furia Sangrienta 0 orco todas
aliento_de_fuego Aliento de Fuego 12 draconiano todas
resistencia_petrea Resistencia Pétrea 8 enano todas
truco_menor Truco Menor 4 gnomo todas
vista_de_aguila Vista de Águila 6 todas arquero
golpe_escudo Golpe de Escudo 5 todas guerrero
paso_sombrio Paso Sombrío 14 todas picaro, mago
enraizar Enraizar 9 todas druida

Vestuario

Campos: id, name, slot, spriteRef, allowedRaces, allowedClasses.

id Nombre Slot Razas Clases
armor_leather Armadura de Cuero armadura todas todas
armor_plate Armadura de Placas armadura todas guerrero, clerigo
robe_mage Túnica de Mago armadura todas mago, druida
helmet_war Casco de Guerra casco todas todas
cape_elven Capa Élfica capa elfo todas
hood_shadow Capucha de Sombras casco todas picaro
shield_oak Escudo de Roble escudo todas guerrero, clerigo
cloak_runic Manto Rúnico capa todas mago, druida
boots_light Botas Ligeras botas todas todas
helmet_dragon Yelmo Dracónico casco draconiano todas

spriteRef apunta a un PNG dentro de src/main/resources/sprites/ (pixel art 64×64, fondo transparente). Hoy son placeholders: se reemplazan por arte definitivo conservando el nombre del archivo.

Reglas de restricción

  • allowedRaces / allowedClasses vacío ([]) = sin restricción.
  • Se puede escribir el id ("elfo") o el nombre ("Elfo"), sin distinguir mayúsculas.
  • Una habilidad o pieza es elegible solo si cumple la restricción de raza y la de clase.
  • Los ítems no elegibles se ocultan en los pasos 3 y 4 (con un aviso de cuántos quedaron ocultos). Skill.getRequirementLabel() ya entrega el texto ("Solo Elfo") por si se prefiere mostrarlos deshabilitados.

Cómo agregar contenido

Una raza nueva

  1. Editar races.json y añadir un objeto con un id único en minúsculas:
{
  "id": "tiefling",
  "name": "Tiefling",
  "description": "Sangre infernal, carisma natural.",
  "baseStrength": 4,
  "baseDexterity": 5,
  "baseIntelligence": 7,
  "baseVitality": 4
}
  1. (Opcional) Añadir su foto en sprites/avatars/tiefling.jpg. El nombre del archivo es el nombre de la raza en minúsculas; si no existe se usa default.png.
  2. Recompilar (mvn clean compile) para que Maven copie el JSON a target/classes.

Una habilidad exclusiva

{
  "id": "rayo_arcano",
  "name": "Rayo Arcano",
  "description": "Descarga mágica a distancia.",
  "manaCost": 12,
  "allowedRaces": ["elfo", "gnomo"],
  "allowedClasses": ["mago"]
}

Validaciones al cargar

Las factories fallan al arrancar (con un mensaje claro) si:

Situación Excepción
El archivo no existe en el classpath IllegalStateException indicando la ruta esperada
JSON mal formado IllegalStateException("JSON inválido en ...")
Catálogo vacío IllegalStateException
Entrada nula, sin id o sin name IllegalStateException
id duplicado (sin distinguir mayúsculas) IllegalStateException
Se pide un id inexistente IllegalArgumentException listando los disponibles

Límite conocido: no hay validación contra un esquema formal; un nombre de campo mal escrito ("baseStrenght") deja el valor en 0 sin avisar.