# Guía rápida para el staff: crear y ajustar contenido desde Discord Este documento reúne ejemplos prácticos y flujos de trabajo completos **para el equipo de staff**. Todo lo que ves aquí se realiza directamente con los comandos del bot (prefijo `!`), sin tocar código ni ejecutar scripts. Los comandos viven en `src/commands/messages/admin` y `src/commands/messages/game`, pero no necesitas abrir esos archivos: la idea es que puedas hacerlo todo desde Discord siguiendo estos pasos. --- ## Tabla de contenidos 1. [Antes de empezar](#antes-de-empezar) 2. [Items: creación, edición y revisión](#items-creación-edición-y-revisión) 3. [Crafteos y materiales](#crafteos-y-materiales) ⭐ **¡Ahora con editor integrado!** 4. [Fundición y refinado](#fundición-y-refinado) 5. [Mutaciones y encantamientos](#mutaciones-y-encantamientos) 6. [Mobs: enemigos y NPCs](#mobs-enemigos-y-npcs) 7. [Áreas y niveles](#áreas-y-niveles) 8. [Misiones (Quests)](#misiones-quests) 9. [Logros (Achievements)](#logros-achievements) 10. [Workflows completos de ejemplo](#workflows-completos-de-ejemplo) --- ## 🎯 Flujo rápido: Crear un ítem con receta de crafteo **Nuevo proceso (2025)** - Todo desde Discord, sin código: ``` 1. !item-crear iron_ingot → Crear ingrediente 1 2. !item-crear wood_plank → Crear ingrediente 2 3. !item-crear iron_sword → Crear producto ├─ Pulsar "Base" → Nombre, descripción, etc. ├─ Pulsar "Props" → Agregar {"craftable": {"enabled": true}} ├─ Pulsar "Receta" ⭐ NUEVO → Escribir: iron_ingot:3, wood_plank:1 └─ Pulsar "Guardar" → ¡Listo! Receta activa 4. !craftear iron_sword → Los jugadores pueden craftear ``` **Antes (2024)**: Había que pedirle al equipo dev que ejecutara scripts de Prisma 🚫 --- ## Antes de empezar > ⭐ **¡NUEVO!** Ahora puedes crear y editar recetas de crafteo directamente desde Discord sin necesidad del equipo dev. Usa el botón **Receta** en los comandos `!item-crear` e `!item-editar`. Ver [sección de Crafteos](#crear-nuevas-recetas-de-crafteo-directo-desde-discord) para más detalles. - Asegúrate de tener el permiso `Manage Guild` o el rol de staff configurado; varios comandos lo revisan con `hasManageGuildOrStaff`. - Siempre usa claves (`key`) en minúsculas y sin espacios. Son únicas por servidor y no se pueden repetir. - Todos los editores funcionan con botones + modales. Si cierras la ventana o pasa más de 30 min sin responder, el editor caduca y debes reabrirlo. - Cuando un modal pida JSON, puedes copiar los ejemplos de esta guía y ajustarlos. Si el JSON no es válido, el bot te avisará y no guardará los cambios. --- ## Items: creación, edición y revisión ### Crear un ítem nuevo — `!item-crear ` 1. Escribe `!item-crear piedra_mistica` (usa la key que necesites). 2. Pulsa **Base** y completa: - **Nombre** y **Descripción**: lo que verán los jugadores. - **Categoría** (opcional) para agrupar en listados (`weapon`, `material`, `consumible`, etc.). - **Icon URL** si tienes una imagen. - **Stackable y Máx inventario** en formato `true,10`. Ejemplos: `true,64`, `false,1`, o deja vacío para infinito. 3. Pulsa **Tags** y agrega etiquetas separadas por coma (`rare, evento`); sirven para filtrar en `!items-lista`. 4. Pulsa **Props (JSON)** y pega solo lo que necesites. Ejemplo rápido para una herramienta que también cura al uso: ```json { "tool": { "type": "pickaxe", "tier": 2 }, "breakable": { "enabled": true, "maxDurability": 120 }, "food": { "healHp": 25, "cooldownSeconds": 180 } } ``` 5. Pulsa **Receta** (⭐ nuevo) si quieres que el ítem sea crafteable. Ver [sección de Crafteos](#crear-nuevas-recetas-de-crafteo-directo-desde-discord) para más detalles. 6. Cuando todo esté listo, pulsa **Guardar**. El bot confirmará con "✅ Item creado". ### 🎮 Cómo se ve el editor de ítems El editor interactivo muestra toda la información del ítem y los botones de configuración: ``` ┌─────────────────────────────────────────────────────┐ │ 📦 Editor de Ítem: iron_sword │ ├─────────────────────────────────────────────────────┤ │ │ │ Nombre: Espada de Hierro │ │ Key: iron_sword │ │ Stackable: ❌ | Max Inv: 1 │ │ Tags: weapon, tier2 │ │ Receta: ✅ Habilitada (3 ingredientes → 1 unidad)│ ← ¡NUEVO! │ │ ├─────────────────────────────────────────────────────┤ │ │ │ [📝 Base] [🏷️ Tags] [⚙️ Receta] [🔧 Props] │ ← Botón Receta │ │ │ [💾 Guardar] [❌ Cancelar] │ │ │ └─────────────────────────────────────────────────────┘ ``` **Elementos clave**: - **Línea "Receta"**: Estado actual (✅ Habilitada o ❌ Deshabilitada) + detalles - **Botón "⚙️ Receta"**: Click para configurar ingredientes y cantidad producida - **Actualización en tiempo real**: Los cambios se reflejan inmediatamente ### Editar, listar y borrar - `!item-editar` abre el mismo editor, pero cargando un ítem existente. - `!item-eliminar ` borra la versión local (solicita confirmación). - `!items-lista` y `!item-ver ` sirven para revisar lo que ya existe. > 💡 Tip: si solo quieres revisar las propiedades de un ítem, usa `!item-ver `; mostrará los `props` formateados en JSON. ### Preparar ítems especiales - **Consumibles**: en Props agrega ```json "food": { "healHp": 40, "healPercent": 10, "cooldownKey": "food:pocion_epica", "cooldownSeconds": 120 } ``` Luego prueba con `!comer pocion_epica` (usa la key real) para ver el mensaje de curación y el cooldown. - **Cofres**: añade ```json "chest": { "enabled": true, "consumeOnOpen": true, "rewards": [ { "type": "coins", "amount": 500 }, { "type": "item", "itemKey": "token_evento", "qty": 3 } ] } ``` Después abre el cofre con `!abrir `. - **Armas/armaduras**: usa `damage`, `defense` o `maxHpBonus`. Si quieres limitar mutaciones, agrega `mutationPolicy` (ver sección más abajo). --- ## Crafteos y materiales El crafteo permite combinar materiales para crear ítems más valiosos. A diferencia de la fundición, el crafteo es instantáneo y no requiere tiempo de espera. ### Cómo funciona el crafteo 1. El jugador ejecuta `!craftear `. 2. El bot verifica que tenga todos los ingredientes. 3. Si los tiene, los descuenta del inventario y entrega el producto inmediatamente. 4. Las estadísticas del jugador se actualizan (`itemsCrafted`). --- ## Mutaciones y encantamientos Las mutaciones permiten mejorar ítems agregándoles bonificaciones especiales. Son consumibles permanentes que se aplican a un ítem específico. ### Crear mutaciones (requiere equipo dev) Las mutaciones se crean directamente en la base de datos. Envía al equipo dev: - **Key**: identificador único (ej. `ruby_core`, `sharpness_enchant`) - **Nombre**: nombre visible - **Efectos** (JSON): ```json { "damageBonus": 15, "defenseBonus": 0, "maxHpBonus": 0 } ``` ### Configurar políticas de mutación en ítems Decide qué mutaciones puede recibir cada ítem editando sus **Props**: 1. Ejecuta `!item-editar` y selecciona el ítem (ej. `iron_sword`). 2. Abre **Props (JSON)** y agrega o modifica: ```json "mutationPolicy": { "allowedKeys": ["ruby_core", "emerald_core", "sharpness_enchant"], "deniedKeys": ["curse_weakness"] } ``` - `allowedKeys`: solo estas mutaciones se pueden aplicar (si está vacío o ausente, acepta todas excepto las denegadas). - `deniedKeys`: estas mutaciones están prohibidas explícitamente. ### Ejemplos de mutaciones por tipo de ítem #### Armas (espadas, arcos, alabardas) ```json "mutationPolicy": { "allowedKeys": [ "sharpness_enchant", "fire_aspect", "vampire_core", "ruby_core" ], "deniedKeys": ["defense_boost", "hp_regen"] } ``` #### Armaduras (petos, cascos, botas) ```json "mutationPolicy": { "allowedKeys": [ "defense_boost", "hp_regen", "emerald_core", "thorns_enchant" ], "deniedKeys": ["sharpness_enchant", "fire_aspect"] } ``` #### Herramientas (picos, hachas) ```json "mutationPolicy": { "allowedKeys": [ "efficiency_boost", "unbreaking_core", "fortune_enchant" ], "deniedKeys": ["combat_related"] } ``` ### Aplicar mutaciones como staff (para pruebas) 1. Asegúrate de tener el ítem en tu inventario (`!inventario`). 2. Ejecuta: ``` !encantar iron_sword ruby_core ``` 3. El bot verificará: - Que tienes el ítem. - Que la mutación existe. - Que la política del ítem lo permite. 4. Si todo es correcto: "✨ Aplicada mutación `ruby_core` a **Espada de Hierro**." ### Verificar mutaciones aplicadas - Usa `!player <@usuario>` o `!stats` para ver bonificaciones de combate. - Las mutaciones aparecen sumadas en `damage`, `defense` o `maxHp` según corresponda. ### Catálogo de mutaciones sugeridas | Mutación Key | Nombre | Efectos | Tipo de Ítem | | --- | --- | --- | --- | | `ruby_core` | Núcleo de Rubí | +15 damage | Armas | | `emerald_core` | Núcleo de Esmeralda | +10 defense, +20 maxHp | Armaduras | | `sapphire_core` | Núcleo de Zafiro | +25 maxHp | Capas/Accesorios | | `sharpness_enchant` | Filo Mejorado | +8 damage | Armas cortantes | | `fire_aspect` | Aspecto ígneo | +12 damage | Armas de fuego | | `defense_boost` | Refuerzo Defensivo | +7 defense | Armaduras | | `hp_regen` | Regeneración | +30 maxHp | Armaduras/Capas | | `efficiency_boost` | Eficiencia | (lógica custom) | Herramientas | | `fortune_enchant` | Fortuna | (lógica custom) | Picos | | `unbreaking_core` | Irrompible | +50% durabilidad | Herramientas | | `vampire_core` | Vampirismo | +10 damage, lifesteal | Armas | | `thorns_enchant` | Espinas | refleja daño | Armaduras | > 💡 **Tip**: las mutaciones con efectos custom (como `fortune_enchant` que aumenta drops) requieren lógica adicional en el código. Consulta con el equipo dev antes de anunciarlas. --- ## Mobs: enemigos y NPCs - Asegúrate de tener el permiso `Manage Guild` o el rol de staff configurado; varios comandos lo revisan con `hasManageGuildOrStaff`. - Siempre usa claves (`key`) en minúsculas y sin espacios. Son únicas por servidor y no se pueden repetir. - Todos los editores funcionan con botones + modales. Si cierras la ventana o pasa más de 30 min sin responder, el editor caduca y debes reabrirlo. - Cuando un modal pida JSON, puedes copiar los ejemplos de esta guía y ajustarlos. Si el JSON no es válido, el bot te avisará y no guardará los cambios. --- ## Items: creación, edición y revisión ### Crear un ítem nuevo — `!item-crear ` 1. Escribe `!item-crear piedra_mistica` (usa la key que necesites). 2. Pulsa **Base** y completa: - **Nombre** y **Descripción**: lo que verán los jugadores. - **Categoría** (opcional) para agrupar en listados (`weapon`, `material`, `consumible`, etc.). - **Icon URL** si tienes una imagen. - **Stackable y Máx inventario** en formato `true,10`. Ejemplos: `true,64`, `false,1`, o deja vacío para infinito. 3. Pulsa **Tags** y agrega etiquetas separadas por coma (`rare, evento`); sirven para filtrar en `!items-lista`. 4. Pulsa **Props (JSON)** y pega solo lo que necesites. Ejemplo rápido para una herramienta que también cura al uso: ```json { "tool": { "type": "pickaxe", "tier": 2 }, "breakable": { "enabled": true, "maxDurability": 120 }, "food": { "healHp": 25, "cooldownSeconds": 180 } } ``` 5. Cuando todo esté listo, pulsa **Guardar**. El bot confirmará con “✅ Item creado”. ### Editar, listar y borrar - `!item-editar` abre el mismo editor, pero cargando un ítem existente. - `!item-eliminar ` borra la versión local (solicita confirmación). - `!items-lista` y `!item-ver ` sirven para revisar lo que ya existe. > 💡 Tip: si solo quieres revisar las propiedades de un ítem, usa `!item-ver `; mostrará los `props` formateados en JSON. ### Preparar ítems especiales - **Consumibles**: en Props agrega ```json "food": { "healHp": 40, "healPercent": 10, "cooldownKey": "food:pocion_epica", "cooldownSeconds": 120 } ``` Luego prueba con `!comer pocion_epica` (usa la key real) para ver el mensaje de curación y el cooldown. - **Cofres**: añade ```json "chest": { "enabled": true, "consumeOnOpen": true, "rewards": [ { "type": "coins", "amount": 500 }, { "type": "item", "itemKey": "token_evento", "qty": 3 } ] } ``` Después abre el cofre con `!abrir `. - **Armas/armaduras**: usa `damage`, `defense` o `maxHpBonus`. Si quieres limitar mutaciones, agrega `mutationPolicy` (ver sección más abajo). --- ## Crafteos y materiales El crafteo permite combinar materiales para crear ítems más valiosos. A diferencia de la fundición, el crafteo es instantáneo y no requiere tiempo de espera. ### Cómo funciona el crafteo 1. El jugador ejecuta `!craftear `. 2. El bot verifica que tenga todos los ingredientes. 3. Si los tiene, los descuenta del inventario y entrega el producto inmediatamente. 4. Las estadísticas del jugador se actualizan (`itemsCrafted`). ### Crear nuevas recetas de crafteo (¡directo desde Discord!) Ya **NO necesitas al equipo dev** para crear recetas. Ahora puedes configurarlas directamente al crear o editar un ítem. #### Paso 1: Crear todos los ítems involucrados **Ejemplo: Espada de Hierro** 1. **Ingredientes**: ``` !item-crear iron_ingot ``` - Nombre: Lingote de Hierro - Stackable: true,999 - Props: `{"craftingOnly": true}` ``` !item-crear wood_plank ``` - Nombre: Tablón de Madera - Stackable: true,999 - Props: `{"craftingOnly": true}` 2. **Producto final con receta**: ``` !item-crear iron_sword ``` - Nombre: Espada de Hierro - Descripción: Espada básica de hierro forjado - Stackable: false,1 - Props: ```json { "craftable": {"enabled": true}, "tool": {"type": "sword", "tier": 2}, "damage": 15, "breakable": {"enabled": true, "maxDurability": 200} } ``` #### Paso 2: Configurar la receta (¡NUEVO!) Antes de guardar el ítem, pulsa el botón **Receta** en el editor. Aparecerá un modal como este: ``` ┌─────────────────────────────────────────┐ │ 📝 Receta de Crafteo │ ├─────────────────────────────────────────┤ │ Habilitar receta? (true/false) │ │ [ true ] │ ├─────────────────────────────────────────┤ │ Cantidad que produce │ │ [ 1 ] │ ├─────────────────────────────────────────┤ │ Ingredientes (itemKey:qty, ...) │ │ ┌───────────────────────────────────┐ │ │ │ iron_ingot:3, wood_plank:1 │ │ │ │ │ │ │ └───────────────────────────────────┘ │ │ │ │ [Enviar] [Cancelar] │ └─────────────────────────────────────────┘ ``` **Campos del modal:** 1. **Habilitar receta?**: escribe `true` para activar, `false` para desactivar 2. **Cantidad que produce**: cuántas unidades del producto se crean (ej. `1` espada, `3` lingotes, `10` flechas) 3. **Ingredientes**: lista separada por comas en formato `itemKey:cantidad` El formato de ingredientes es: `itemKey:cantidad, itemKey:cantidad, ...` **Ejemplos válidos:** - `iron_ingot:3, wood_plank:1` → necesita 3 lingotes y 1 tablón - `leather:8, string:2` → necesita 8 cueros y 2 cuerdas - `ruby:1, gold_ingot:5, magic_dust:2` → necesita 1 rubí, 5 lingotes de oro y 2 polvos mágicos El bot automáticamente: - ✅ Valida que las claves (`itemKey`) existan en tu servidor - ✅ Convierte las claves a IDs de base de datos - ✅ Guarda la receta junto con el ítem - ❌ Rechaza ingredientes que no existen con mensaje de error claro Finalmente pulsa **Guardar** y listo. ¡La receta ya está activa! #### 📋 Ejemplo JSON completo de un ítem con receta Después de guardar, el ítem quedará estructurado así en la base de datos: **EconomyItem (iron_sword)**: ```json { "id": "uuid-123", "key": "iron_sword", "guildId": "guild-456", "name": "Espada de Hierro", "description": "Espada básica de hierro forjado", "stackable": false, "maxInventory": 1, "props": { "craftable": {"enabled": true}, "tool": {"type": "sword", "tier": 2}, "damage": 15, "breakable": {"enabled": true, "maxDurability": 200} }, "tags": ["weapon", "tier2"], "itemRecipe": { "id": "recipe-789", "productItemId": "uuid-123", "productQuantity": 1, "ingredients": [ { "id": "ing-001", "recipeId": "recipe-789", "itemId": "uuid-iron-ingot", "quantity": 3 }, { "id": "ing-002", "recipeId": "recipe-789", "itemId": "uuid-wood-plank", "quantity": 1 } ] } } ``` > 💡 **Nota**: No necesitas escribir este JSON manualmente. El editor lo crea automáticamente cuando pulsas "Receta" y guardas. #### Paso 3: Editar recetas existentes Si ya creaste un ítem y quieres agregar/modificar su receta: ``` !item-editar iron_sword ``` Pulsa **Receta** y edita: - Para **agregar** una receta nueva: pon `true` y escribe los ingredientes - Para **modificar** ingredientes: cambia el texto (ej. `iron_ingot:5, wood_plank:2`) - Para **deshabilitar** la receta: pon `false` en "Habilitar receta?" - Para **eliminar** completamente: pon `false` y deja ingredientes vacío Cuando guardas, el bot: - 🔄 Actualiza la receta si cambió - ➕ Crea la receta si es nueva - 🗑️ Elimina la receta si la deshabilitaste #### Paso 4: Probar la receta 1. Asegúrate de tener los ingredientes en tu inventario. 2. Ejecuta: ``` !craftear iron_sword ``` 3. El bot responderá: - ✅ Si tienes todo: "✨ Crafteaste **Espada de Hierro** x1" - ❌ Si falta algo: "No tienes suficientes ingredientes: necesitas 3 iron_ingot, 1 wood_plank" ### 📦 Ejemplos de Props JSON para diferentes tipos de crafteo #### Arma crafteable con durabilidad ```json { "craftable": {"enabled": true}, "tool": {"type": "sword", "tier": 2}, "damage": 15, "breakable": { "enabled": true, "maxDurability": 200, "repairItem": "iron_ingot", "repairAmount": 20 } } ``` **Receta sugerida**: `iron_ingot:3, wood_plank:1` --- #### Armadura crafteable con bonificaciones ```json { "craftable": {"enabled": true}, "wearable": { "slot": "chest", "visual": "https://example.com/iron_chestplate.png" }, "defense": 12, "maxHpBonus": 20, "breakable": { "enabled": true, "maxDurability": 300 } } ``` **Receta sugerida**: `iron_ingot:8, leather:2` --- #### Consumible crafteable (pociones) ```json { "craftable": {"enabled": true}, "food": { "healHp": 50, "healPercent": 0, "cooldownKey": "potion:health", "cooldownSeconds": 60 }, "stackable": true, "maxInventory": 10 } ``` **Receta sugerida**: `red_herb:2, water_bottle:1, magic_dust:1` --- #### Material de crafteo (produce múltiples unidades) ```json { "craftable": {"enabled": true}, "craftingOnly": true, "description": "Material refinado usado en crafteo avanzado", "stackable": true, "maxInventory": 999 } ``` **Receta sugerida**: `iron_ore:2, coal:1` → **Produce 3 unidades** (configurar en "Cantidad que produce": `3`) --- #### Herramienta con efectos especiales ```json { "craftable": {"enabled": true}, "tool": { "type": "pickaxe", "tier": 3, "efficiency": 1.5, "fortune": true }, "breakable": { "enabled": true, "maxDurability": 500, "unbreaking": 2 } } ``` **Receta sugerida**: `steel_ingot:3, diamond:2, enchanted_core:1` --- #### Ítem decorativo/coleccionable ```json { "craftable": {"enabled": true}, "collectible": true, "rarity": "legendary", "tradeable": false, "description": "Trofeo único obtenido al craftear materiales legendarios", "stackable": false, "maxInventory": 1 } ``` **Receta sugerida**: `mythril_ingot:10, dragon_scale:5, phoenix_feather:3` --- #### Cofre crafteable con recompensas ```json { "craftable": {"enabled": true}, "chest": { "enabled": true, "consumeOnOpen": true, "rewards": [ {"type": "coins", "amount": 1000}, {"type": "item", "itemKey": "rare_gem", "qty": 2} ] } } ``` **Receta sugerida**: `wood_plank:8, iron_ingot:2, gold_ingot:1` --- ### 📋 Tabla resumen de Props JSON por tipo | Tipo de Ítem | Props Esenciales | Receta Ejemplo | | --- | --- | --- | | **Arma** | `craftable`, `tool`, `damage`, `breakable` | `iron_ingot:3, wood_plank:1` | | **Armadura** | `craftable`, `wearable`, `defense`, `maxHpBonus` | `iron_ingot:8, leather:2` | | **Consumible** | `craftable`, `food`, `stackable` | `red_herb:2, water_bottle:1` | | **Material** | `craftable`, `craftingOnly`, `stackable` | `iron_ore:2, coal:1` (x3 output) | | **Herramienta** | `craftable`, `tool`, `breakable` | `steel_ingot:3, diamond:2` | | **Cofre** | `craftable`, `chest`, `stackable` | `wood_plank:8, iron_ingot:2` | | **Coleccionable** | `craftable`, `collectible`, `rarity` | `mythril:10, dragon_scale:5` | > 💡 **Tip**: Todos los ítems crafteables **DEBEN** tener `"craftable": {"enabled": true}` en sus props para que el comando `!craftear` funcione. --- ### Categorías de recetas sugeridas #### 🛠️ Herramientas **Pico de Hierro** - Ingredientes: 3 iron_ingot + 2 wood_plank - Output: 1 iron_pickaxe (tier 2, 150 durabilidad) **Caña de Pescar Mejorada** - Ingredientes: 2 wood_plank + 1 string + 1 iron_ingot - Output: 1 advanced_fishing_rod (tier 2, bonus catch rate) **Hacha de Batalla** - Ingredientes: 4 steel_ingot + 2 leather + 1 ruby - Output: 1 battle_axe (tier 3, 20 damage) #### ⚔️ Armas **Daga de Bronce** - Ingredientes: 2 bronze_ingot + 1 leather - Output: 1 bronze_dagger (10 damage, tier 1) **Espada de Acero** - Ingredientes: 5 steel_ingot + 2 leather + 1 gold_ingot - Output: 1 steel_sword (25 damage, tier 3) **Arco Largo** - Ingredientes: 3 wood_plank + 2 string + 1 iron_ingot - Output: 1 longbow (18 damage, tier 2) #### 🛡️ Armaduras **Peto de Cuero** - Ingredientes: 8 leather + 2 string - Output: 1 leather_chestplate (5 defense, tier 1) **Casco de Hierro** - Ingredientes: 5 iron_ingot + 1 leather - Output: 1 iron_helmet (8 defense, tier 2) **Botas de Acero** - Ingredientes: 4 steel_ingot + 2 leather - Output: 1 steel_boots (10 defense, tier 3) #### 🍖 Consumibles **Poción de Curación Menor** - Ingredientes: 1 red_herb + 1 water_bottle - Output: 1 minor_healing_potion (cura 25 HP) **Poción de Curación Mayor** - Ingredientes: 2 red_herb + 1 magic_dust + 1 glass_bottle - Output: 1 major_healing_potion (cura 75 HP) **Pan** - Ingredientes: 3 wheat + 1 water - Output: 5 bread (cura 15 HP cada uno) #### 🎨 Decorativos y Utilidad **Antorcha** - Ingredientes: 1 wood_plank + 1 coal - Output: 8 torch **Cofre de Madera** - Ingredientes: 8 wood_plank - Output: 1 wooden_chest (container) **Llave Maestra** - Ingredientes: 3 gold_ingot + 1 ruby + 1 magic_dust - Output: 1 master_key (abre cofres especiales) ### Árbol de progresión de crafteo ``` Nivel 1 (Principiante) ├─ Herramientas de Madera (wood_pickaxe, wood_axe) ├─ Armas Básicas (wooden_sword, stone_dagger) └─ Comida Simple (bread, cooked_fish) Nivel 2 (Aprendiz) ├─ Herramientas de Cobre/Bronce (copper_pickaxe, bronze_axe) ├─ Armadura de Cuero (leather_armor set) ├─ Armas de Hierro (iron_sword, iron_bow) └─ Pociones Menores (minor_healing_potion) Nivel 3 (Artesano) ├─ Herramientas de Hierro (iron_pickaxe tier 2) ├─ Armadura de Hierro (iron_armor set) ├─ Armas de Acero (steel_sword, steel_halberd) └─ Pociones Mayores (major_healing_potion) Nivel 4 (Maestro) ├─ Herramientas Encantadas (enchanted_pickaxe tier 3) ├─ Armadura de Acero (steel_armor set) ├─ Armas Legendarias (legendary_sword, dragon_bow) └─ Pociones Épicas (epic_elixir, immortality_potion) Nivel 5 (Legendario) ├─ Herramientas Míticas (mythril_pickaxe tier 4) ├─ Armadura Divina (divine_armor set) ├─ Armas Divinas (godslayer_sword, infinity_bow) └─ Elixires Divinos (phoenix_tears, gods_blessing) ``` ### Materiales base recomendados | Material | Key | Obtención | Uso Principal | | --- | --- | --- | --- | | Madera | `wood_plank` | Talar árboles | Herramientas tier 1 | | Cuero | `leather` | Mobs, caza | Armaduras tier 1 | | Cobre | `copper_ingot` | Fundir copper_ore | Herramientas tier 1-2 | | Estaño | `tin_ingot` | Fundir tin_ore | Aleaciones (bronce) | | Bronce | `bronze_ingot` | Fundir copper+tin | Herramientas tier 2 | | Hierro | `iron_ingot` | Fundir iron_ore | Armas/armor tier 2 | | Carbón | `coal` | Minar | Fundición universal | | Acero | `steel_ingot` | Fundir hierro+carbón | Armas/armor tier 3 | | Oro | `gold_ingot` | Fundir gold_ore | Joyería, ítems raros | | Rubí | `ruby` | Mobs raros, cofres | Encantamientos | | Esmeralda | `emerald` | Mobs raros, cofres | Encantamientos | | Zafiro | `sapphire` | Mobs raros, cofres | Encantamientos | | Polvo Mágico | `magic_dust` | Bosses, eventos | Crafteo avanzado | | Cristal de Lava | `lava_crystal` | Área volcánica | Crafteo legendario | | Mythril | `mythril_ingot` | Fundir mythril_ore | Armas/armor tier 4 | ### Verificar y solucionar problemas con recetas #### Ver información de una receta Para verificar si un ítem tiene receta activa, usa: ``` !item-ver iron_sword ``` En el editor aparecerá: - **Receta**: `Habilitada (3 ingredientes → 1 unidades)` ← tiene receta activa - **Receta**: `Deshabilitada` ← no tiene receta o está desactivada #### Errores comunes y soluciones **Error**: "No se encontró el ítem `xxx_ingot` en este servidor" - **Causa**: La clave (`itemKey`) del ingrediente no existe o tiene un typo - **Solución**: Verifica con `!items-lista` que todos los ingredientes existan. Crea los que falten con `!item-crear` **Error**: "No tienes suficientes ingredientes" - **Causa**: El jugador no tiene todos los materiales en su inventario - **Solución**: Usa `!inventario` para verificar qué falta. Añade ítems con `!give @usuario itemKey cantidad` **Problema**: La receta no se guarda - **Causa**: El prop `craftable.enabled` está en `false` o falta - **Solución**: En Props (JSON) asegúrate de tener: `"craftable": {"enabled": true}` **Problema**: La receta desapareció después de editar el ítem - **Causa**: No marcaste "Habilitar receta?" como `true` al editar - **Solución**: Vuelve a `!item-editar`, pulsa **Receta**, pon `true` y reingresa los ingredientes #### Workflow de debug para recetas 1. **Verificar que el producto existe**: ``` !item-ver iron_sword ``` Debe aparecer en la lista y tener `craftable.enabled: true` en props. 2. **Verificar que todos los ingredientes existen**: ``` !items-lista ``` Busca `iron_ingot` y `wood_plank` en la lista. 3. **Probar con admin**: - Añádete los ingredientes: `!give @tuUsuario iron_ingot 10` - Intenta craftear: `!craftear iron_sword` - Si funciona: la receta está bien configurada - Si falla: revisa los errores del bot 4. **Verificar la base de datos (solo si todo lo anterior falló)**: - Pide al equipo dev que revise la tabla `ItemRecipe` - Debe haber un registro con `productItemId` apuntando al ítem correcto - Los `RecipeIngredient` deben tener `itemId` y `quantity` correctos ### Cadenas de crafteo complejas **Ejemplo: Espada Legendaria** 1. **Recolectar materiales base**: - Minar 20 iron_ore - Minar 15 coal - Derrotar boss para obtener 3 magic_dust 2. **Fundición (fase 1)**: - Fundir iron_ore → iron_ingot (15 unidades) - Tiempo total: ~40 minutos 3. **Fundición (fase 2)**: - Fundir iron_ingot + coal + carbon → steel_ingot (8 unidades) - Tiempo total: ~60 minutos 4. **Crafteo (fase 1)**: - Craftear steel_ingot + leather → steel_sword_base 5. **Encantamiento**: - Aplicar ruby_core al steel_sword_base (+15 damage) 6. **Crafteo final**: - Craftear steel_sword_base(enchanted) + magic_dust + dragon_scale → legendary_dragon_slayer - Resultado: Arma tier 4 con 45 damage, 300 durabilidad, efectos especiales ### Marcado de ítems crafteable-only Para materiales que **solo** sirven para craftear y no tienen uso directo: ```json { "craftingOnly": true, "description": "Material usado únicamente para crafteo" } ``` Esto ayuda a los jugadores a entender que deben combinarlo con otros ítems para obtener valor. ### 💡 Tips y mejores prácticas para recetas #### Organización de recetas - **Nombra consistentemente**: Usa sufijos como `_ingot`, `_ore`, `_plank` para que sean fáciles de identificar - **Agrupa por tier**: Crea materiales tier 1, tier 2, tier 3... para facilitar progresión - **Documenta ingredientes raros**: Si una receta usa ítems de eventos o bosses, menciónalo en la descripción del producto #### Balance de economía - **Recetas básicas**: 2-3 ingredientes, cantidades bajas (< 5 unidades) - **Recetas intermedias**: 3-5 ingredientes, algunas de tier anterior - **Recetas avanzadas**: 5+ ingredientes, incluyen materiales raros y crafteos previos - **Recetas legendarias**: Cadenas complejas que requieren múltiples pasos de fundición y crafteo #### Productividad del staff - **Crea plantillas**: Guarda en un documento los props JSON comunes para copiar/pegar rápidamente - **Batch creation**: Crea todos los ingredientes primero, luego todos los productos - **Usa el mismo editor**: No cierres el editor entre ítems similares, solo cambia la key y ajusta valores - **Prueba inmediatamente**: Después de crear una receta, añádete los ingredientes y prueba `!craftear` para validar #### Errores a evitar - ❌ **No crear los ingredientes primero**: Si creas el producto con receta pero los ingredientes no existen, la receta fallará - ❌ **Typos en itemKeys**: `iron_ingott` vs `iron_ingot` - el bot no encontrará el ítem - ❌ **Olvidar craftable.enabled**: Si el prop no está en `true`, la receta no funcionará aunque esté guardada - ❌ **Cantidades desbalanceadas**: 100 unidades de un material común no debe producir 1 ítem legendario #### Ejemplos de recetas balanceadas | Tier | Ingredientes Típicos | Output Typical | Ejemplo | | --- | --- | --- | --- | | 1 (Común) | 2-3 materiales básicos x2-5 | 1-5 unidades | 3 wood + 2 stone → 1 basic_axe | | 2 (Poco común) | 3-4 materiales, algunos refinados x3-10 | 1-3 unidades | 5 iron_ingot + 2 leather → 1 iron_sword | | 3 (Raro) | 4-5 materiales, crafteos tier 2 x5-15 | 1-2 unidades | 8 steel_ingot + 3 ruby + 1 iron_sword → 1 steel_sword | | 4 (Épico) | 5-7 materiales, incluye raros x10-30 | 1 unidad | 10 mythril + 5 magic_dust + 3 dragon_scale → 1 mythril_sword | | 5 (Legendario) | 6+ materiales, cadenas complejas x20+ | 1 unidad | 15 divine_ore + 10 phoenix_feather + 1 mythril_sword → 1 godslayer | --- ## Mutaciones y encantamientos 1. Asegúrate de que existe la mutación (pide la `mutationKey` al equipo dev si aún no está en la base). 2. Desde `!item-editar`, abre **Props (JSON)** y agrega: ```json "mutationPolicy": { "allowedKeys": ["ruby_core", "emerald_core"], "deniedKeys": ["curse_core"] } ``` 3. Entrega al jugador la mutación correspondiente y pídele que use `!encantar `. 4. Para probarlo tú mismo, equipa el ítem y ejecuta `!encantar`. Si la política lo permite, el bot responde con “✨ Aplicada mutación…”. --- ## Fundición y refinado La fundición es un proceso que transforma materiales crudos en recursos refinados con un tiempo de espera. Es útil para economías más realistas donde los jugadores deben planificar. ### Cómo funciona la fundición 1. El jugador ejecuta `!fundir` especificando inputs y output. 2. El bot verifica que tenga los materiales, los descuenta del inventario y crea un **job** con tiempo de espera. 3. Cuando el tiempo expira, el jugador usa `!fundir-reclamar` para obtener el resultado. ### Crear nuevas recetas de fundición #### Paso 1: Crear los ítems necesarios 1. **Materiales de entrada** (ej. minerales crudos): ``` !item-crear copper_ore ``` - Nombre: Mineral de Cobre - Descripción: Mineral sin refinar extraído de las minas - Stackable: true,999 - Props: `{"craftingOnly": true}` ``` !item-crear coal ``` - Nombre: Carbón - Descripción: Combustible para fundición - Stackable: true,999 2. **Material de salida** (ej. lingote refinado): ``` !item-crear copper_ingot ``` - Nombre: Lingote de Cobre - Descripción: Cobre puro listo para craftear - Stackable: true,999 #### Paso 2: Coordinar con el equipo dev Envía la siguiente información al equipo de desarrollo: **Receta de fundición: Lingote de Cobre** - **Inputs**: - `copper_ore`: 5 unidades - `coal`: 2 unidades - **Output**: - `copper_ingot`: 2 unidades - **Duración**: 300 segundos (5 minutos) El equipo dev ejecutará: ```typescript // Ejemplo de lo que hará el dev (tú no necesitas hacerlo) await createSmeltJob(userId, guildId, [ { itemKey: 'copper_ore', qty: 5 }, { itemKey: 'coal', qty: 2 } ], 'copper_ingot', 2, 300 ); ``` #### Paso 3: Probar la receta 1. Asegúrate de tener los materiales: ``` !inventario ``` 2. Inicia la fundición: ``` !fundir copper_ore:5,coal:2 copper_ingot:2 300 ``` (El comando exacto puede variar, verifica con `!help fundir`) 3. Espera el tiempo configurado o usa un comando de admin para acelerar (si existe). 4. Reclama el resultado: ``` !fundir-reclamar ``` ### Ejemplos de recetas de fundición por nivel #### Nivel Básico (5-10 minutos) | Entrada | Salida | Tiempo | Uso | | --- | --- | --- | --- | | 5 copper_ore + 2 coal | 2 copper_ingot | 5 min | Crafteo básico | | 5 iron_ore + 3 coal | 2 iron_ingot | 8 min | Armas tier 1 | | 3 sand + 1 coal | 2 glass | 3 min | Construcción | #### Nivel Intermedio (15-30 minutos) | Entrada | Salida | Tiempo | Uso | | --- | --- | --- | --- | | 8 iron_ore + 5 coal | 3 steel_ingot | 20 min | Armas tier 2 | | 10 gold_ore + 5 coal | 3 gold_ingot | 25 min | Joyería | | 5 copper_ingot + 5 tin_ingot | 8 bronze_ingot | 15 min | Aleaciones | #### Nivel Avanzado (1-2 horas) | Entrada | Salida | Tiempo | Uso | | --- | --- | --- | --- | | 15 iron_ingot + 10 coal + 5 carbon | 5 steel_alloy | 60 min | Armas legendarias | | 20 mythril_ore + 10 coal + 3 magic_dust | 3 mythril_ingot | 90 min | Equipo épico | | 10 diamond_ore + 15 coal + 5 lava_crystal | 2 diamond_refined | 120 min | Crafteo endgame | ### Cadenas de producción Puedes crear economías complejas encadenando fundiciones: **Ejemplo: Espada de Acero** 1. Fundir `copper_ore` → `copper_ingot` (5 min) 2. Fundir `tin_ore` → `tin_ingot` (5 min) 3. Fundir `copper_ingot + tin_ingot` → `bronze_ingot` (15 min) 4. Fundir `iron_ore` → `iron_ingot` (8 min) 5. Fundir `iron_ingot + coal + carbon` → `steel_ingot` (20 min) 6. Craftear `steel_ingot + bronze_ingot + wood` → `steel_sword` ### Fundición para eventos **Ejemplo: Evento de Halloween** ``` !item-crear pumpkin_ore ``` - Nombre: Mineral de Calabaza Maldita - Props: `{"eventCurrency": {"enabled": true, "eventKey": "halloween2025"}}` **Receta especial (temporal):** - Inputs: 10 pumpkin_ore + 5 coal + 1 cursed_essence - Output: 1 halloween_legendary_sword - Duración: 60 min - Ventana: solo durante octubre 2025 ### Consejos de balance - **Fundiciones rápidas (1-5 min)**: para materiales básicos que se usan constantemente. - **Fundiciones medias (10-30 min)**: para recursos intermedios, fomenta planificación. - **Fundiciones largas (1-3 horas)**: para ítems raros/épicos, crea anticipación. - **Usa carbón/coal**: como costo fijo universal para evitar fundiciones sin límite. - **Output menor que input**: ej. 5 mineral → 2 lingotes, crea escasez y valor. --- ## Logros (Achievements) ### Crear un logro — `!logro-crear ` 1. Ejecuta el comando y completa el editor: - **Base**: Nombre, descripción, categoría, icono y puntos. - **Requisitos**: JSON con `type` y `value`. Ejemplo: ```json { "type": "mine_count", "value": 100 } ``` - **Recompensas**: JSON con monedas, ítems o títulos. Ejemplo: ```json { "coins": 1000, "items": [{ "key": "pickaxe_mythic", "quantity": 1 }] } ``` 2. Pulsa **Guardar**. El bot mostrará “✅ Logro creado”. 3. Usa `!logro-ver ` y `!logros-lista` para revisar lo que quedó configurado. Cuando anuncies el logro, recuerda qué acción lo desbloquea (`mine_count`, `fish_count`, `craft_count`, etc.). --- ## Misiones (Quests) ### Crear una misión — `!mision-crear ` 1. Completa la pestaña **Base** (nombre, descripción, categoría y tipo: `daily`, `weekly`, `permanent` o `event`). 2. En **Requisitos**, indica el contador que debe alcanzar: ```json { "type": "craft_count", "count": 3 } ``` También puedes usar `variety` con varias condiciones. 3. En **Recompensas**, define el premio (mismo formato que los logros). 4. Guarda y revisa con `!mision-ver ` o `!misiones-lista`. 5. Para pruebas, `!misiones` muestra al jugador su progreso y si puede reclamar con `!mision-reclamar `. --- ## Tienda y economía - **Crear oferta** — `!offer-crear` 1. En **Base**, especifica `itemKey` y si la oferta está habilitada. 2. En **Precio (JSON)**, indica monedas y/o ítems de pago: ```json { "coins": 1500, "items": [{ "itemKey": "token_evento", "qty": 2 }] } ``` 3. En **Ventana**, puedes fijar fechas `YYYY-MM-DD` o dejarlas vacías. 4. En **Límites**, define cupo por usuario o stock global. 5. Guarda y revisa la tienda con `!tienda`. - **Monedas y recursos**: usa `!monedas <@usuario>` para revisar balances y `!inventario <@usuario>` para confirmar que recibieron lo esperado. --- ## Resumen rápido de comandos útiles | Acción | Comando | Notas | | --- | --- | --- | | Crear/editar ítems | `!item-crear`, `!item-editar`, `!item-eliminar` | Requiere staff. Props en JSON. | | Revisar ítems | `!items-lista`, `!item-ver ` | Incluye props y tags. | | Consumir o probar ítems | `!comer `, `!encantar ` | Útiles para QA. | | Ofertas de tienda | `!offer-crear`, `!offer-editar` | Define precios, stock y ventanas. | | Logros | `!logro-crear`, `!logro-ver`, `!logros-lista`, `!logro-eliminar` | Requisitos y recompensas en JSON. | | Misiones | `!mision-crear`, `!mision-ver`, `!misiones-lista`, `!mision-eliminar` | Tipos: daily/weekly/permanent/event. | | Progreso de jugadores | `!stats`, `!player <@usuario>`, `!racha` | Ayuda a validar nuevas recompensas. | --- ## Áreas de juego y niveles Las áreas son lugares donde los jugadores realizan actividades (minar, pescar, pelear, plantar). Cada área tiene varios niveles, y cada nivel puede tener requisitos, recompensas y mobs específicos. ### Crear un área — `!area-crear ` 1. Ejecuta el comando con la key deseada (ej. `!area-crear mina_profunda`). 2. Pulsa **Base** y completa: - **Nombre**: Lo que verán los jugadores. - **Tipo**: `MINE`, `LAGOON`, `FIGHT` o `FARM` (en mayúsculas). 3. Pulsa **Config (JSON)** si necesitas configuración técnica adicional (raramente usado, pregunta al equipo dev). 4. Pulsa **Meta (JSON)** para metadatos adicionales (opcional). 5. Guarda. Usa `!areas-lista` para verificar. ### Editar un área — `!area-editar` Abre un selector con todas las áreas del servidor, elige una y usa el mismo editor que en crear. ### Configurar niveles de área — `!area-nivel ` Cada nivel puede tener: - **Requisitos**: herramienta mínima, nivel de personaje, etc. - **Recompensas**: qué se obtiene al completar (monedas, ítems, XP). - **Mobs**: lista de enemigos que aparecen en ese nivel. - **Ventana**: fechas ISO para eventos temporales. #### Ejemplo: crear el nivel 1 de una mina ```bash !area-nivel mina_profunda 1 ``` 1. **Requisitos** (JSON): ```json { "toolType": "pickaxe", "minToolTier": 1, "minLevel": 1 } ``` 2. **Recompensas** (JSON): ```json { "coins": 50, "items": [ { "key": "copper_ore", "quantity": 3 } ], "xp": 10 } ``` 3. **Mobs** (JSON) — Aquí defines qué mobs aparecen y su peso: ```json { "draws": 1, "table": [ { "mobKey": "slime_verde", "weight": 10 }, { "mobKey": "murcielago", "weight": 5 } ] } ``` > 💡 **Importante**: los mobs deben existir previamente. Créalos con `!mob-crear` antes de referenciarlos aquí. 4. **Ventana** (opcional): si quieres que este nivel solo esté disponible durante un evento, agrega fechas ISO: - Desde: `2025-12-01T00:00:00Z` - Hasta: `2025-12-31T23:59:59Z` 5. Guarda. Verifica con `!mina mina_profunda` (o el comando correspondiente al tipo de área). ### Borrar áreas y niveles - `!area-eliminar ` borra el área completa (solicita confirmación). - Para borrar un nivel específico, coordina con el equipo dev o edita manualmente la base de datos (por seguridad no hay comando público). --- ## Mobs (enemigos) Los mobs son enemigos que aparecen en áreas de tipo `FIGHT` o en niveles de minas/lagunas. También se pueden usar en eventos especiales. ### Crear un mob — `!mob-crear ` 1. Ejecuta el comando (ej. `!mob-crear slime_verde`). 2. Pulsa **Base** y completa: - **Nombre**: Nombre visible del mob. - **Categoría** (opcional): para agrupar (ej. `slime`, `undead`, `boss`). 3. Pulsa **Stats (JSON)** y define las estadísticas: ```json { "attack": 8, "hp": 50, "defense": 2, "xpReward": 15 } ``` 4. Pulsa **Drops (JSON)** para configurar la tabla de recompensas: ```json { "draws": 2, "table": [ { "type": "coins", "amount": 25, "weight": 10 }, { "type": "item", "itemKey": "slime_gel", "qty": 1, "weight": 7 }, { "type": "item", "itemKey": "healing_potion", "qty": 1, "weight": 3 } ] } ``` - `draws`: cuántos premios saca al morir. - `table`: lista de posibles recompensas con su peso (más peso = más probable). 5. Guarda y revisa con `!mobs-lista` o `!mob-ver `. ### Editar y borrar mobs - `!mob-editar` abre el mismo editor, pero cargando un mob existente. - `!mob-eliminar ` borra el mob (solicita confirmación). ### Probar mobs en combate - Usa `!pelear ` para simular un combate. El bot mostrará el resultado, daño infligido, drops recibidos y XP ganado. - Ajusta `attack`, `hp` y `defense` según el balance deseado. --- ## Recetas de crafteo y fundición Aunque el crafteo funciona con `!craftear ` y la fundición con `!fundir`, las **recetas** (`itemRecipe`) y los **trabajos de fundición** se administran desde backoffice o scripts porque involucran múltiples relaciones. ### ¿Cómo agrego una nueva receta de crafteo? 1. Asegúrate de que el producto final y todos los ingredientes existen (créalos con `!item-crear`). 2. Envía al equipo dev la siguiente información: - **Product Key**: ej. `iron_sword` - **Product Quantity**: cuánto entrega (normalmente 1). - **Ingredientes**: lista con `itemKey` y cantidad. Ejemplo: ``` - iron_ingot: 3 - wood_plank: 1 ``` 3. El equipo dev ejecutará el seed o script correspondiente. 4. Verifica con `!craftear iron_sword` que funcione correctamente. ### ¿Cómo agrego una nueva receta de fundición? 1. Crea los ítems de entrada (ej. `iron_ore`, `coal`) y el de salida (ej. `iron_ingot`). 2. Coordina con el equipo dev para que configuren el `smeltJob` indicando: - **Inputs**: lista de `itemKey` + cantidad. - **Output**: `itemKey` + cantidad. - **Duración**: segundos que tarda el proceso. 3. Prueba con `!fundir` y verifica el tiempo restante con `!fundir-reclamar`. > 📌 **Nota**: si necesitas muchas recetas, considera crear un archivo JSON con todas y enviarlo al equipo dev para carga masiva. --- ## Checklist para lanzar contenido nuevo - [ ] El ítem tiene nombre, descripción, tags y props correctos en `!item-ver`. - [ ] Hay una forma de conseguirlo (oferta, misión, logro, drop o craft). - [ ] Si es un mob, tiene stats y drops configurados; pruébalo con `!pelear`. - [ ] Si es un área con niveles, cada nivel tiene requisitos, recompensas y mobs válidos. - [ ] Probaste el flujo como jugador (`!craftear`, `!fundir`, `!comprar`, `!mina`, `!pelear`, etc.). - [ ] Los requisitos y recompensas de logros/misiones muestran JSON válido. - [ ] Comunicaste al equipo cuándo entra y cómo se consigue. Si algo falla, copia el mensaje de error completo y súbelo al canal de soporte interno; así el equipo de desarrollo puede ayudarte sin reproducir todo desde cero. --- ## Comandos de consulta rápida Estos comandos te ayudan a revisar lo que ya está configurado sin abrir editores: | Comando | Descripción | | --- | --- | | `!items-lista` | Lista todos los ítems del servidor. | | `!item-ver ` | Muestra detalles completos de un ítem (props, tags, etc.). | | `!mobs-lista` | Lista todos los mobs del servidor. | | `!areas-lista` | Lista todas las áreas del servidor. | | `!logros-lista` | Lista todos los logros disponibles. | | `!logro-ver ` | Muestra requisitos y recompensas de un logro. | | `!misiones-lista` | Lista todas las misiones del servidor. | | `!mision-ver ` | Muestra detalles de una misión específica. | --- ## Ejemplos completos de flujos comunes ### Ejemplo 1: Crear una zona de combate con mobs 1. Crea los mobs: ``` !mob-crear goblin_scout ``` - Nombre: Goblin Explorador - Stats: `{"attack": 10, "hp": 60, "defense": 3, "xpReward": 20}` - Drops: `{"draws": 1, "table": [{"type": "coins", "amount": 30, "weight": 10}, {"type": "item", "itemKey": "goblin_ear", "qty": 1, "weight": 5}]}` 2. Crea el área: ``` !area-crear bosque_oscuro ``` - Nombre: Bosque Oscuro - Tipo: FIGHT 3. Crea el nivel 1: ``` !area-nivel bosque_oscuro 1 ``` - Requisitos: `{"minLevel": 3}` - Recompensas: `{"coins": 100, "xp": 30}` - Mobs: `{"draws": 1, "table": [{"mobKey": "goblin_scout", "weight": 10}]}` 4. Prueba con `!pelear bosque_oscuro` (si el comando acepta áreas) o `!pelear goblin_scout` directamente. ### Ejemplo 2: Crear una misión diaria de minería 1. Asegúrate de que existe el área de mina (`!areas-lista`). 2. Crea la misión: ``` !mision-crear daily_mine_10 ``` - Nombre: Minero Diario - Descripción: Mina 10 veces hoy - Tipo: daily - Categoría: mining - Requisitos: `{"type": "mine_count", "count": 10}` - Recompensas: `{"coins": 500, "items": [{"key": "mining_token", "quantity": 1}]}` 3. Los jugadores verán la misión en `!misiones` y podrán reclamarla con `!mision-reclamar daily_mine_10` cuando completen los 10 minados. ### Ejemplo 3: Crear un cofre de evento 1. Crea el ítem cofre: ``` !item-crear event_chest_winter ``` - Nombre: Cofre de Invierno - Descripción: Un cofre especial lleno de sorpresas invernales - Stackable: true,10 - Props: ```json { "chest": { "enabled": true, "consumeOnOpen": true, "rewards": [ { "type": "coins", "amount": 1000 }, { "type": "item", "itemKey": "snowflake_rare", "qty": 5 }, { "type": "item", "itemKey": "ice_sword", "qty": 1 } ] } } ``` 2. Crea una oferta para venderlo: ``` !offer-crear ``` - Item Key: event_chest_winter - Habilitada: true - Precio: `{"coins": 2500}` - Ventana: desde `2025-12-01` hasta `2025-12-31` - Límite por usuario: 3 3. Anuncia el cofre en el servidor y los jugadores podrán comprarlo con `!comprar` y abrirlo con `!abrir event_chest_winter`.