# 📖 Guía del Sistema de Juegos - Amayo Bot ## Índice - [Introducción](#introducción) - [Estructura del Sistema](#estructura-del-sistema) - [Creación de Items](#creación-de-items) - [Sistema de Tienda](#sistema-de-tienda) - [Áreas de Juego](#áreas-de-juego) - [Mobs (Enemigos)](#mobs-enemigos) - [Sistema de Crafteo](#sistema-de-crafteo) - [Sistema de Fundición](#sistema-de-fundición) - [Variables del Sistema](#variables-del-sistema) --- ## Introducción Este sistema de juegos permite crear y gestionar un RPG completo dentro de Discord, con items, tienda, combate, crafteo, y más. ### Características Principales - ✅ Sistema de economía con múltiples monedas - ✅ Inventario por usuario y servidor - ✅ Tienda con ofertas temporales y límites - ✅ Sistema de crafteo con recetas - ✅ Áreas explorables con niveles - ✅ Enemigos (mobs) con drops - ✅ Sistema de fundición para procesar items - ✅ Mutaciones de items (mejoras/transformaciones) --- ## Estructura del Sistema ### Directorios Principales ``` /src/commands/messages/game/ ├── itemCreate.ts # Crear items ├── itemEdit.ts # Editar items existentes ├── offerCreate.ts # Crear ofertas de tienda ├── offerEdit.ts # Editar ofertas ├── areaCreate.ts # Crear áreas de juego ├── areaEdit.ts # Editar áreas ├── areaNivel.ts # Gestionar niveles de área ├── mobEdit.ts # Crear/editar mobs ├── craftear.ts # Sistema de crafteo ├── comprar.ts # Comprar en la tienda ├── abrir.ts # Abrir items consumibles └── ... /src/game/ ├── economy/ # Sistema de economía │ ├── service.ts │ └── types.ts ├── combat/ # Sistema de combate │ ├── equipmentService.ts │ └── attacksWorker.ts ├── consumables/ # Items consumibles │ └── service.ts ├── cooldowns/ # Sistema de cooldowns │ └── service.ts ├── minigames/ # Minijuegos │ ├── service.ts │ ├── types.ts │ └── seed.ts ├── mutations/ # Mutaciones de items │ └── service.ts └── smelting/ # Sistema de fundición └── service.ts ``` --- ## Creación de Items ### Comando Base ``` !item-crear ``` ### Ejemplo Práctico **1. Crear un item básico (Poción de Vida)** ``` !item-crear pocion_vida ``` Esto abrirá un editor interactivo con los siguientes botones: #### 📝 **Base** - Información básica del item - **Key**: `pocion_vida` (identificador único) - **Name**: `Poción de Vida` - **Description**: `Restaura 50 HP al usuario` - **Type**: `consumable` (otros: `material`, `equipment`, `key_item`, `currency`) - **Rarity**: `common` (otros: `uncommon`, `rare`, `epic`, `legendary`, `mythic`) - **Stackable**: `true` (si se puede apilar en el inventario) - **Max Stack**: `99` (cantidad máxima por stack) #### 💎 **Valor Base** Define el valor del item en el sistema económico: ```json { "coins": 50, "gems": 0 } ``` #### 🎯 **Metadatos** Información adicional para items especiales: **Para consumibles:** ```json { "effect": "heal", "amount": 50, "duration": 0 } ``` **Para equipamiento:** ```json { "slot": "weapon", "attack": 10, "defense": 0, "speed": 5, "level_req": 1 } ``` **Para materiales de crafteo:** ```json { "craftable": true, "tier": 1 } ``` #### 🖼️ **Icono/Emoji** Emoji que representa el item: `🧪` o emoji personalizado `<:potion:123456789>` --- ### Tipos de Items Comunes #### 1. **Consumibles** (`consumable`) Items que se usan y desaparecen: - Pociones de vida/maná - Comida - Buffs temporales - Pergaminos de teletransporte **Ejemplo:** ```json { "type": "consumable", "metadata": { "effect": "heal_hp", "amount": 100, "cooldown": 30 } } ``` #### 2. **Materiales** (`material`) Recursos para crafteo: - Minerales - Madera - Hierbas - Partes de mobs **Ejemplo:** ```json { "type": "material", "metadata": { "tier": 1, "craftable": true } } ``` #### 3. **Equipamiento** (`equipment`) Items equipables: - Armas - Armaduras - Accesorios **Ejemplo:** ```json { "type": "equipment", "metadata": { "slot": "weapon", "attack": 25, "defense": 0, "speed": 10, "level_req": 5, "durability": 100 } } ``` #### 4. **Items Clave** (`key_item`) Items importantes de quest: - Llaves - Documentos - Objetos de misión #### 5. **Moneda** (`currency`) Items que actúan como moneda: - Monedas alternativas - Tokens de eventos - Puntos de tienda --- ## Sistema de Tienda ### Crear una Oferta ``` !offer-crear ``` ### Estructura de una Oferta #### 📦 **Base** - **Item Key**: `pocion_vida` (el item que se vende) - **Enabled**: `true` (si la oferta está activa) #### 💰 **Precio (JSON)** Define cuánto cuesta el item: ```json { "coins": 100, "gems": 0, "items": { "hierro": 5, "madera": 10 } } ``` Puedes combinar: - `coins`: Moneda base - `gems`: Gemas premium - `items`: Otros items como pago (sistema de trueque) #### 🕒 **Ventana Temporal** Define cuándo está disponible la oferta: - **Inicio (ISO)**: `2025-10-05T00:00:00Z` (opcional) - **Fin (ISO)**: `2025-10-31T23:59:59Z` (opcional) Si no se especifica, la oferta está disponible siempre. #### 🎯 **Límites** Control de compras: - **Límite por usuario**: `5` (cada usuario puede comprar máximo 5) - **Stock global**: `100` (solo hay 100 unidades disponibles en total) Dejar vacío = sin límite #### 📝 **Metadata (JSON)** Información adicional: ```json { "featured": true, "discount": 20, "bundle": ["pocion_vida", "pocion_mana"], "event": "halloween_2025" } ``` ### Ejemplo Completo: Oferta de Halloween ``` Item: pocion_halloween Precio: { "coins": 50, "items": { "calabaza": 3 } } Ventana: 2025-10-01 hasta 2025-10-31 Límite por usuario: 10 Stock global: 500 Metadata: { "event": "halloween_2025", "featured": true } ``` --- ## Áreas de Juego ### Crear un Área ``` !area-crear ``` ### Estructura de un Área #### 📍 **Base** - **Key**: `bosque_inicial` (identificador único) - **Name**: `Bosque Inicial` - **Description**: `Un bosque tranquilo perfecto para principiantes` - **Image URL**: URL de imagen del área (opcional) #### 🎮 **Configuración** ```json { "minLevel": 1, "maxLevel": 5, "danger": "low", "biome": "forest" } ``` ### Niveles de Área Cada área puede tener múltiples niveles con diferentes enemigos: ``` !area-nivel ``` **Ejemplo de configuración de nivel:** ```json { "level": 1, "mobs": ["lobo_joven", "jabali_salvaje"], "weights": [60, 40], "bossKey": null, "requirements": { "minPlayerLevel": 1 } } ``` - **mobs**: Lista de keys de mobs que aparecen - **weights**: Probabilidad de aparición (en porcentaje) - **bossKey**: Mob especial de jefe (opcional) - **requirements**: Requisitos para acceder --- ## Mobs (Enemigos) ### Crear/Editar un Mob ``` !mob-editar ``` ### Estructura de un Mob #### 🎯 **Base** ```json { "key": "lobo_joven", "name": "Lobo Joven", "description": "Un lobo joven vagando por el bosque", "image": "🐺", "level": 2 } ``` #### ⚔️ **Stats** ```json { "hp": 50, "attack": 8, "defense": 3, "speed": 12, "exp": 15 } ``` #### 🎁 **Drops (Recompensas)** ```json { "coins": { "min": 5, "max": 15 }, "items": { "piel_lobo": { "chance": 0.3, "min": 1, "max": 2 }, "colmillo": { "chance": 0.15, "min": 1, "max": 1 }, "carne_cruda": { "chance": 0.5, "min": 1, "max": 3 } } } ``` - **coins**: Rango de monedas que dropea - **items**: Items con probabilidad de drop - `chance`: Probabilidad (0.3 = 30%) - `min`/`max`: Cantidad que dropea #### 🧬 **Comportamiento** ```json { "aggressive": true, "pack": false, "flee_threshold": 0.2, "abilities": ["howl", "bite"] } ``` --- ## Sistema de Crafteo ### Crear Items Crafteables Para que un item se pueda craftear, define su receta en los metadatos: **Ejemplo: Espada de Hierro** ```json { "type": "equipment", "metadata": { "slot": "weapon", "attack": 15, "craftable": true, "recipe": { "hierro": 5, "madera": 2, "cuero": 1 }, "crafting_time": 60, "success_rate": 0.95, "level_req": 3 } } ``` ### Usar el Sistema de Crafteo ``` !craftear ``` El bot verificará: 1. ✅ Que tengas los materiales necesarios 2. ✅ Que cumplas el nivel requerido 3. ✅ Calculará el éxito basado en `success_rate` 4. ✅ Consumirá los materiales 5. ✅ Te dará el item (si tiene éxito) --- ## Sistema de Fundición Procesa materiales crudos en refinados: ### Configuración de Items Fundibles **Ejemplo: Hierro Crudo → Lingote de Hierro** **Item: `hierro_crudo`** ```json { "type": "material", "metadata": { "smeltable": true, "smelts_into": "lingote_hierro", "smelting_time": 30, "fuel_cost": 1 } } ``` ### Usar el Sistema ``` !fundir ``` Ejemplo: ``` !fundir hierro_crudo 10 ``` Esto iniciará un trabajo de fundición que se completará después del tiempo especificado. --- ## Sistema de Mutaciones Transforma items en versiones mejoradas: ### Configurar Mutaciones **Ejemplo: Espada de Hierro → Espada de Acero** ```json { "from_item": "espada_hierro", "to_item": "espada_acero", "requirements": { "items": { "carbon": 3, "polvo_magico": 1 }, "coins": 500, "level": 10 }, "success_rate": 0.8, "keep_on_fail": false } ``` - **keep_on_fail**: Si `false`, pierdes el item si falla - **success_rate**: Probabilidad de éxito --- ## Variables del Sistema Puedes usar variables dinámicas en descripciones y nombres: ### Variables de Usuario - `{user}` - Nombre del usuario - `{user.id}` - ID del usuario - `{user.mention}` - Mención del usuario - `{user.tag}` - Usuario#1234 - `{user.level}` - Nivel del jugador - `{user.exp}` - Experiencia del jugador - `{user.coins}` - Monedas del jugador - `{user.gems}` - Gemas del jugador ### Variables de Servidor - `{guild}` - Nombre del servidor - `{guild.id}` - ID del servidor - `{guild.members}` - Cantidad de miembros - `{guild.owner}` - Dueño del servidor ### Variables de Item - `{item.name}` - Nombre del item - `{item.count}` - Cantidad en inventario - `{item.value}` - Valor del item ### Ejemplo de Uso **Descripción dinámica:** ``` "¡{user}, has encontrado {item.name}! Ahora tienes {item.count} en tu inventario." ``` **Resultado:** ``` "¡Shni, has encontrado Poción de Vida! Ahora tienes 15 en tu inventario." ``` --- ## Comandos Útiles ### Gestión de Items - `!item-crear ` - Crear nuevo item - `!item-editar ` - Editar item existente - `!inventario` - Ver tu inventario - `!usar ` - Usar un item consumible ### Economía - `!monedas` - Ver tus monedas - `!daily` - Recompensa diaria - `!dar <@user> ` - Dar items a otro usuario ### Tienda - `!tienda` - Ver la tienda - `!comprar [cantidad]` - Comprar items - `!offer-crear` - Crear oferta (admin) - `!offer-editar ` - Editar oferta (admin) ### Combate - `!explorar ` - Explorar un área - `!atacar` - Atacar al mob actual - `!huir` - Intentar huir del combate - `!equipar ` - Equipar un item ### Crafteo - `!craftear ` - Craftear un item - `!receta ` - Ver la receta de un item - `!fundir ` - Fundir materiales ### Áreas - `!area-crear ` - Crear área (admin) - `!area-editar ` - Editar área (admin) - `!area-nivel ` - Configurar niveles (admin) - `!areas` - Ver áreas disponibles --- ## Tips y Mejores Prácticas ### 1. **Nomenclatura de Keys** Usa nombres descriptivos y sin espacios: - ✅ `pocion_vida_grande` - ✅ `espada_hierro_t2` - ❌ `Poción de Vida Grande` (evitar espacios y mayúsculas) ### 2. **Balance Económico** - Items comunes: 10-100 coins - Items raros: 100-1000 coins - Items épicos: 1000-10000 coins - Items legendarios: 10000+ coins ### 3. **Drop Rates Recomendados** - Comunes: 50-80% - Raros: 20-30% - Épicos: 5-10% - Legendarios: 1-3% - Míticos: <1% ### 4. **Organización de Áreas** Crea áreas progresivas: 1. **Área Inicial** (Nivel 1-5): Mobs fáciles, drops básicos 2. **Área Intermedia** (Nivel 6-15): Mobs moderados, mejores drops 3. **Área Avanzada** (Nivel 16-30): Mobs difíciles, drops raros 4. **Área End-Game** (Nivel 31+): Jefes, drops legendarios ### 5. **Testing** Antes de lanzar al público: - ✅ Prueba todas las recetas de crafteo - ✅ Verifica que los precios sean balanceados - ✅ Asegúrate de que los mobs no sean muy fáciles/difíciles - ✅ Revisa que todos los items tengan iconos - ✅ Prueba las ofertas temporales --- ## Solución de Problemas ### "Item no encontrado" - Verifica que la key esté escrita correctamente - Asegúrate de que el item exista en la base de datos - Revisa si el item es específico del servidor ### "No tienes suficientes materiales" - Usa `!inventario` para verificar tus items - Asegúrate de tener todos los materiales de la receta ### "No tienes nivel suficiente" - Usa `!perfil` para ver tu nivel actual - Combate más mobs para ganar experiencia ### "La oferta no está disponible" - Verifica las fechas de la ventana temporal - Asegúrate de que la oferta esté habilitada - Revisa si alcanzaste el límite de compras --- ## Créditos Sistema creado para **Amayo Bot** Documentación actualizada: Octubre 2025 Para soporte adicional, contacta a los administradores del servidor.