🎨 Creación de Contenido

Guía técnica paso a paso para crear items, áreas/niveles, mobs, ofertas y ahora componentes RPG avanzados (durabilidad por instancia, efectos de estado, penalizaciones de muerte, rachas, riskFactor de áreas). Requiere permiso Manage Guild o rol de staff.

📦 Items: crear/editar

1) Crear base
!item-crear iron_sword
Base → Nombre: "Espada de Hierro", Descripción, Stackable: false,1
Tags → weapon, tier2

2) Props (JSON) comunes
{
  "tool": { "type": "sword", "tier": 2 },
  "damage": 15,
  "breakable": { "enabled": true, "maxDurability": 200 }
}

3) Receta (modal ⭐)
Habilitar: true
Produce: 1
Ingredientes: iron_ingot:3, wood_plank:1

4) Guardar → ✅ Item creado
Prueba: !craftear iron_sword

Usa !item-editar, !item-ver, !items-lista. Para herramientas NO apilables la durabilidad se gestiona por instancias dentro de inventory.state.instances.

Novedades RPG (Items)
  • Durabilidad por instancia: si stackable=false y breakable.enabled=true, cada unidad es una instancia con su propia durabilidad.
  • Mutaciones / Encantamientos: se reflejan sumando bonuses (damageBonus, defenseBonus, maxHpBonus).
  • Ítem purga efectos: puedes crear tu propia poción local: { "usable": true, "purgeAllEffects": true } y usarla con !efectos purgar.

🧭 Áreas y Niveles (MINE/LAGOON/FIGHT/FARM)

1) Crear área
!area-crear mine.iron_cavern
Config (JSON): {
  "cooldownSeconds": 60,
  "description": "Caverna rica en hierro",
  "icon": "⛏️",
  "riskFactor": 2
}
Guardar → ✅ Área creada

2) Crear nivel 1
!area-nivel mine.iron_cavern 1
Requisitos (JSON): {
  "tool": { "required": true, "toolType": "pickaxe", "minTier": 2 }
}
Recompensas (JSON): {
  "draws": 2,
  "table": [
    { "type": "coins", "amount": 50, "weight": 10 },
    { "type": "item",  "itemKey": "iron_ore", "qty": 2, "weight": 8 }
  ]
}
Mobs (JSON, opcional): {
  "draws": 1,
  "table": [ { "mobKey": "cave_spider", "weight": 10 } ]
}
Guardar → ✅ Nivel guardado
Errores comunes
  • mobKey o itemKey inexistente → crea primero o corrige la key
  • Pesos mal balanceados → revisa weight (no negativos; no tienen que sumar 100)
  • Herramienta requerida mal configurada → revisa toolType y minTier
  • riskFactor (0-3) afecta % de oro que pierdes al morir (escala hasta 25% total con nivel).

👹 Mobs (enemigos/NPCs)

1) Crear mob
!mob-crear goblin
Base → Nombre: Goblin, Categoría: enemies
Stats (JSON): { "attack": 10, "hp": 50, "defense": 3, "xpReward": 25 }
Drops (JSON): {
  "draws": 2,
  "table": [
    { "type": "coins", "amount": 20, "weight": 10 },
    { "type": "item",  "itemKey": "leather", "qty": 1, "weight": 5 }
  ]
}
Guardar → ✅ Mob creado

Revisa con !mobs-lista y !mob-eliminar <key> si necesitas limpiar datos de prueba.

Integración combate
  • El daño del jugador usa arma + mutaciones + racha (1% cada 3 victorias, cap 30%).
  • Defensa reduce daño hasta 60% (5% por punto, cap).
  • Si daño efectivo = 0 → derrota automática (flag autoDefeatNoWeapon).

🛒 Ofertas de Tienda

1) Crear oferta
!offer-crear
Base → itemKey: iron_sword, Habilitada: true
Precio (JSON): { "coins": 100 }
— o —
Precio (JSON): {
  "coins": 50,
  "items": [ { "itemKey": "iron_ore", "qty": 5 } ]
}
Límites → por usuario: 5, stock global: 100
Ventana → inicio/fin ISO (opcional)
Guardar → ✅ Oferta guardada
Errores comunes
  • itemKey no existe → crea el ítem primero
  • Formato de precio inválido → respeta estructura de coins e items
  • Ventana inválida → usa fechas ISO: YYYY-MM-DDTHH:MM:SSZ
  • Para vender una poción de purga local crea un ítem consumible y ofrece en la tienda.
Recomendaciones
Resumen rápido nuevas claves JSON
area.config.riskFactor: 0-3 (aumenta % oro perdido) item.props.breakable.maxDurability / durabilityPerUse item.props.tool { type, tier } item.props.purgeAllEffects = true (ítem purga) status effects: almacenados en DB (PlayerStatusEffect) death penalty: porcentaje dinámico + fatiga escalada