Implement code changes to enhance functionality and improve performance

This commit is contained in:
2025-10-05 23:36:17 -05:00
parent eae36f63e2
commit ff5b9a5a22
2 changed files with 1957 additions and 453 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,824 @@
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Amayo Bot | Guía Completa para Usuarios</title>
<meta
name="description"
content="Guía completa de Amayo Bot para usuarios de Discord: comandos de juego, economía, misiones, logros y mucho más."
/>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
rel="stylesheet"
/>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Inter', 'ui-sans-serif', 'system-ui', 'Segoe UI', 'sans-serif'],
mono: [
'JetBrains Mono',
'ui-monospace',
'SFMono-Regular',
'SFMono',
'Menlo',
'Monaco',
'Consolas',
'Liberation Mono',
'Courier New',
'monospace'
]
},
boxShadow: {
glow: '0 40px 120px -45px rgba(99, 102, 241, 0.45)'
}
}
}
};
</script>
<link rel="stylesheet" href="./assets/css/styles.css" />
</head>
<body class="min-h-screen bg-gradient-to-b from-slate-950 via-slate-950 to-slate-900 text-slate-100 antialiased">
<div class="flex min-h-screen flex-col">
<header class="relative overflow-hidden">
<div class="pointer-events-none absolute inset-0">
<div class="absolute -top-32 left-1/2 h-96 w-96 -translate-x-1/2 rounded-full bg-indigo-600/40 blur-3xl"></div>
<div class="absolute top-16 -left-28 h-72 w-72 rounded-full bg-sky-500/25 blur-3xl"></div>
<div class="absolute bottom-0 right-0 h-80 w-80 translate-y-1/3 rounded-full bg-fuchsia-500/20 blur-3xl"></div>
</div>
<div class="relative mx-auto flex max-w-5xl flex-col items-center px-6 pb-20 pt-16 text-center lg:px-8">
<p class="inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-4 py-1 text-xs font-semibold uppercase tracking-[0.35em] text-slate-200">
Amayo Bot • Guía Completa
</p>
<h1 class="mt-6 text-4xl font-bold text-white sm:text-5xl md:text-6xl">
Guía Completa de Amayo Bot
</h1>
<p class="mt-4 max-w-2xl text-base text-slate-200 sm:text-lg">
Aprende a usar todos los comandos y funcionalidades de Amayo Bot en tu servidor de Discord. Sistema de economía, minijuegos, misiones, logros, IA conversacional y mucho más.
</p>
<div class="mt-8 flex flex-wrap items-center justify-center gap-3">
<a
class="inline-flex items-center justify-center rounded-full bg-gradient-to-r from-indigo-500 to-fuchsia-500 px-6 py-3 text-sm font-semibold text-white shadow-xl shadow-indigo-500/30 transition hover:-translate-y-0.5 hover:shadow-indigo-500/40"
href="#primeros-pasos"
>
Comenzar
</a>
<button
class="inline-flex items-center justify-center rounded-full border border-white/10 bg-white/5 px-6 py-3 text-sm font-semibold text-slate-100 transition hover:border-indigo-400/70 hover:text-white"
id="toggle-nav"
>
Ver índice completo
</button>
</div>
<div class="mt-6 flex flex-wrap items-center justify-center gap-3 text-xs text-slate-300">
<span class="inline-flex items-center rounded-full border border-white/10 bg-white/5 px-3 py-1">
Versión 0.11.20
</span>
<span class="inline-flex items-center rounded-full border border-white/10 bg-white/5 px-3 py-1">
Actualizado: Enero 2025
</span>
<span class="inline-flex items-center rounded-full border border-white/10 bg-white/5 px-3 py-1">
Discord.js 15.0.0-dev
</span>
</div>
</div>
</header>
<div class="mx-auto flex w-full max-w-6xl flex-1 flex-col gap-10 px-6 pb-16 lg:flex-row lg:px-10">
<nav
id="toc"
class="hidden w-full max-w-xs rounded-3xl border border-white/10 bg-slate-900/80 p-6 text-left shadow-2xl shadow-indigo-500/20 backdrop-blur lg:sticky lg:top-24 lg:block lg:max-h-[calc(100vh-6rem)] lg:w-72 lg:overflow-y-auto"
>
<div class="text-xs font-semibold uppercase tracking-[0.3em] text-slate-400">
Índice de Contenidos
</div>
<ul class="mt-4 space-y-2 text-sm">
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#primeros-pasos">🚀 Primeros Pasos</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#comandos-basicos">⚡ Comandos Básicos</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#sistema-juego">🎮 Sistema de Juego</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#minijuegos">🎯 Minijuegos y Actividades</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#inventario-equipo">🎒 Inventario y Equipo</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#economia">💰 Sistema de Economía</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#tienda">🛒 Tienda y Compras</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#crafteo">🔨 Crafteo y Creación</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#logros">🏆 Logros</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#misiones">📜 Misiones</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#racha-diaria">🔥 Racha Diaria</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#consumibles">🍖 Consumibles y Pociones</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#cofres">🎁 Cofres y Recompensas</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#encantamientos">✨ Encantamientos</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#fundicion">🔥 Fundición</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#ia">🤖 Inteligencia Artificial</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#recordatorios">⏰ Recordatorios</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#alianzas">🤝 Sistema de Alianzas</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#admin">⚙️ Administración (Admin)</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#configuracion">🔧 Configuración Servidor</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#estadisticas">📊 Estadísticas</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#tips">💡 Tips y Trucos</a></li>
<li><a class="text-slate-200 transition hover:text-indigo-300" href="#faq">❓ Preguntas Frecuentes</a></li>
</ul>
</nav>
<main class="flex-1">
<div class="mx-auto flex w-full max-w-3xl flex-col gap-8">
<!-- PRIMEROS PASOS -->
<section id="primeros-pasos" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">🚀 Primeros Pasos</h2>
<p class="text-slate-200">
¡Bienvenido a <strong class="text-white">Amayo Bot</strong>! Este bot transforma tu servidor de Discord en una experiencia de juego completa con economía, minijuegos, misiones y mucho más.
</p>
<div class="space-y-4 rounded-2xl border border-indigo-500/30 bg-indigo-500/10 p-5 text-slate-200">
<h3 class="text-lg font-semibold text-indigo-200">✨ ¿Qué puedes hacer con Amayo?</h3>
<ul class="list-disc space-y-2 pl-5 text-sm">
<li><strong class="text-white">Jugar Minijuegos:</strong> Mina recursos, pesca, pelea contra enemigos y cultiva en granjas</li>
<li><strong class="text-white">Economía Completa:</strong> Gana monedas, compra en la tienda, craftea items y gestiona tu inventario</li>
<li><strong class="text-white">Sistema de Progresión:</strong> Sube de nivel, completa misiones, desbloquea logros y mantén tu racha diaria</li>
<li><strong class="text-white">Personalización:</strong> Equipa armas, armaduras y capas para mejorar tus estadísticas</li>
<li><strong class="text-white">IA Conversacional:</strong> Chatea con Gemini AI directamente desde Discord</li>
<li><strong class="text-white">Sistema de Alianzas:</strong> Comparte enlaces de invitación y gana puntos para tu servidor</li>
</ul>
</div>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">⚡ Prefix del Bot</h3>
<p class="text-sm text-slate-200">
El prefix por defecto es <code class="rounded bg-indigo-500/15 px-2 py-1 font-mono text-sm text-indigo-200">!</code>
</p>
<p class="text-xs text-slate-300 mt-2">
Los administradores pueden cambiarlo con <code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">!configuracion</code>
</p>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">❓ Obtener Ayuda</h3>
<p class="text-sm text-slate-200">
Usa <code class="rounded bg-indigo-500/15 px-2 py-1 font-mono text-sm text-indigo-200">!ayuda</code> para ver todos los comandos disponibles
</p>
<p class="text-xs text-slate-300 mt-2">
También puedes usar <code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">!ayuda &lt;comando&gt;</code> para detalles específicos
</p>
</div>
</div>
</section>
<!-- COMANDOS BÁSICOS -->
<section id="comandos-basicos" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">⚡ Comandos Básicos</h2>
<p class="text-slate-200">
Estos son los comandos esenciales que necesitas conocer para empezar.
</p>
<div class="space-y-4">
<div class="rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white mb-3">📋 Información y Utilidad</h3>
<div class="space-y-3 text-sm">
<div class="flex flex-col gap-1">
<code class="rounded bg-indigo-500/15 px-2 py-1 font-mono text-indigo-200 w-fit">!ayuda [comando|categoría]</code>
<p class="text-slate-300 pl-2">Muestra la lista de comandos. También puedes usar <code class="text-xs">!help</code>, <code class="text-xs">!comandos</code> o <code class="text-xs">!cmds</code></p>
</div>
<div class="flex flex-col gap-1">
<code class="rounded bg-indigo-500/15 px-2 py-1 font-mono text-indigo-200 w-fit">!ping</code>
<p class="text-slate-300 pl-2">Verifica la latencia del bot. También: <code class="text-xs">!latency</code>, <code class="text-xs">!pong</code></p>
</div>
<div class="flex flex-col gap-1">
<code class="rounded bg-indigo-500/15 px-2 py-1 font-mono text-indigo-200 w-fit">!player [@usuario]</code>
<p class="text-slate-300 pl-2">Muestra tu perfil completo de jugador con estadísticas, equipo e inventario. También: <code class="text-xs">!perfil</code>, <code class="text-xs">!profile</code>, <code class="text-xs">!yo</code>, <code class="text-xs">!me</code></p>
</div>
</div>
</div>
</div>
</section>
<!-- SISTEMA DE JUEGO -->
<section id="sistema-juego" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">🎮 Sistema de Juego</h2>
<p class="text-slate-200">
El sistema de juego de Amayo incluye <strong class="text-white">HP (puntos de vida)</strong>, <strong class="text-white">estadísticas de combate</strong>, <strong class="text-white">niveles de progresión</strong> y más.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">⚔️ Estadísticas de Combate</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><strong class="text-white">HP (Vida):</strong> Tus puntos de vida actuales y máximos</li>
<li><strong class="text-white">ATK (Ataque):</strong> Daño que infliges a los enemigos</li>
<li><strong class="text-white">DEF (Defensa):</strong> Reduce el daño recibido</li>
<li><strong class="text-white">Bonos de Equipo:</strong> Las armas, armaduras y capas mejoran tus stats</li>
</ul>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">📊 Ver tus Estadísticas</h3>
<div class="space-y-2 text-sm">
<div class="flex flex-col gap-1">
<code class="rounded bg-indigo-500/15 px-2 py-1 font-mono text-indigo-200 w-fit">!player</code>
<p class="text-slate-300">Vista general de tu perfil</p>
</div>
<div class="flex flex-col gap-1">
<code class="rounded bg-indigo-500/15 px-2 py-1 font-mono text-indigo-200 w-fit">!stats</code>
<p class="text-slate-300">Estadísticas detalladas de todas tus actividades</p>
</div>
</div>
</div>
</div>
<div class="rounded-2xl border border-amber-500/30 bg-amber-500/10 p-5 text-sm text-amber-100">
<strong class="block text-base font-semibold text-amber-200 mb-2">💡 Consejo:</strong>
<p>Equipa mejores armas y armaduras para aumentar tus estadísticas y tener más éxito en los minijuegos de combate.</p>
</div>
</section>
<!-- MINIJUEGOS -->
<section id="minijuegos" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">🎯 Minijuegos y Actividades</h2>
<p class="text-slate-200">
Los minijuegos son la forma principal de ganar recursos, monedas y experiencia. Cada uno tiene su propio estilo y recompensas.
</p>
<div class="space-y-6">
<!-- MINAR -->
<div class="rounded-2xl border border-orange-500/30 bg-orange-500/5 p-5">
<h3 class="text-lg font-semibold text-orange-200 mb-3">⛏️ Minar (Mining)</h3>
<div class="space-y-3 text-sm text-slate-200">
<p>Ve a la mina y extrae recursos minerales valiosos. Necesitas un pico para minar.</p>
<div class="bg-slate-900/50 p-3 rounded-lg">
<code class="text-indigo-200">!mina [nivel] [herramienta] [area:clave]</code>
<p class="text-xs text-slate-400 mt-1">Aliases: <code class="text-xs">!minar</code></p>
</div>
<div class="space-y-1 text-xs">
<p><strong class="text-white">Ejemplos:</strong></p>
<p class="pl-3">• <code class="bg-slate-800 px-1.5 py-0.5 rounded">!mina</code> — Mina en el nivel más alto desbloqueado</p>
<p class="pl-3">• <code class="bg-slate-800 px-1.5 py-0.5 rounded">!mina 2</code> — Mina en el nivel 2</p>
<p class="pl-3">• <code class="bg-slate-800 px-1.5 py-0.5 rounded">!mina 1 iron_pickaxe</code> — Usa un pico específico</p>
</div>
<div class="border-t border-white/10 pt-3 mt-3">
<p class="font-semibold text-white mb-1">Recompensas típicas:</p>
<p class="text-slate-300">Minerales (hierro, oro, diamantes), gemas, monedas</p>
</div>
</div>
</div>
<!-- PESCAR -->
<div class="rounded-2xl border border-cyan-500/30 bg-cyan-500/5 p-5">
<h3 class="text-lg font-semibold text-cyan-200 mb-3">🎣 Pescar (Fishing)</h3>
<div class="space-y-3 text-sm text-slate-200">
<p>Lanza tu caña en la laguna y captura peces y tesoros acuáticos. Necesitas una caña de pescar.</p>
<div class="bg-slate-900/50 p-3 rounded-lg">
<code class="text-indigo-200">!pescar [nivel] [herramienta] [area:clave]</code>
<p class="text-xs text-slate-400 mt-1">Aliases: <code class="text-xs">!fish</code></p>
</div>
<div class="space-y-1 text-xs">
<p><strong class="text-white">Ejemplos:</strong></p>
<p class="pl-3">• <code class="bg-slate-800 px-1.5 py-0.5 rounded">!pescar</code> — Pesca automáticamente</p>
<p class="pl-3">• <code class="bg-slate-800 px-1.5 py-0.5 rounded">!pescar 3</code> — Pesca en nivel 3</p>
</div>
<div class="border-t border-white/10 pt-3 mt-3">
<p class="font-semibold text-white mb-1">Recompensas típicas:</p>
<p class="text-slate-300">Peces, perlas, tesoros, monedas</p>
</div>
</div>
</div>
<!-- PELEAR -->
<div class="rounded-2xl border border-red-500/30 bg-red-500/5 p-5">
<h3 class="text-lg font-semibold text-red-200 mb-3">⚔️ Pelear (Combat)</h3>
<div class="space-y-3 text-sm text-slate-200">
<p>Entra a la arena y enfrenta enemigos peligrosos. Las armas mejoran tu daño.</p>
<div class="bg-slate-900/50 p-3 rounded-lg">
<code class="text-indigo-200">!pelear [nivel] [arma] [area:clave]</code>
<p class="text-xs text-slate-400 mt-1">Aliases: <code class="text-xs">!fight</code>, <code class="text-xs">!arena</code></p>
</div>
<div class="space-y-1 text-xs">
<p><strong class="text-white">Ejemplos:</strong></p>
<p class="pl-3">• <code class="bg-slate-800 px-1.5 py-0.5 rounded">!pelear</code> — Combate automático</p>
<p class="pl-3">• <code class="bg-slate-800 px-1.5 py-0.5 rounded">!pelear 1 iron_sword</code> — Usa espada de hierro</p>
</div>
<div class="border-t border-white/10 pt-3 mt-3">
<p class="font-semibold text-white mb-1">Recompensas típicas:</p>
<p class="text-slate-300">Experiencia, botines de enemigos, armaduras, armas, monedas</p>
</div>
</div>
</div>
<!-- PLANTAR -->
<div class="rounded-2xl border border-green-500/30 bg-green-500/5 p-5">
<h3 class="text-lg font-semibold text-green-200 mb-3">🌾 Plantar/Cultivar (Farming)</h3>
<div class="space-y-3 text-sm text-slate-200">
<p>Cultiva plantas y cosecha alimentos en tu granja. Usa una azada para mejores resultados.</p>
<div class="bg-slate-900/50 p-3 rounded-lg">
<code class="text-indigo-200">!plantar [nivel] [herramienta]</code>
<p class="text-xs text-slate-400 mt-1">Aliases: <code class="text-xs">!farm</code></p>
</div>
<div class="border-t border-white/10 pt-3 mt-3">
<p class="font-semibold text-white mb-1">Recompensas típicas:</p>
<p class="text-slate-300">Vegetales, frutas, semillas, ingredientes de cocina</p>
</div>
</div>
</div>
</div>
<div class="rounded-2xl border border-sky-500/30 bg-sky-500/10 p-5 text-sm text-sky-100">
<strong class="block text-base font-semibold text-sky-200 mb-2">⏰ Cooldowns:</strong>
<p>Cada minijuego tiene un tiempo de espera (cooldown) entre usos. Usa <code class="rounded bg-sky-500/20 px-1.5 py-0.5 font-mono text-xs">!cooldowns</code> para ver tus tiempos activos.</p>
</div>
</section>
<p class="text-slate-200">
Administra todo el inventario del juego. Usa <code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">!item-crear</code>
para abrir el editor interactivo y completa cada pestaña antes de guardar.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Comandos clave</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!item-crear &lt;key&gt;</code> — Crear un item nuevo.</li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!item-editar &lt;key&gt;</code> — Editar un item existente.</li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!items-lista [página]</code> — Ver listado paginado.</li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!item-ver &lt;key&gt;</code> — Ver detalles completos.</li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!item-eliminar &lt;key&gt;</code> — Eliminar un item.</li>
</ul>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Campos del modal Base</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><strong class="text-white">Nombre:</strong> Texto visible para jugadores.</li>
<li><strong class="text-white">Descripción:</strong> Lore o efectos.</li>
<li><strong class="text-white">Categoría:</strong> Agrupa items (ej. <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">weapons</code>).</li>
<li><strong class="text-white">Icon URL:</strong> Imagen opcional.</li>
<li><strong class="text-white">Stackable y Máx inventario:</strong> Usa <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">true,10</code>,
<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">false,1</code> o deja el límite vacío para infinito.
</li>
</ul>
</div>
</div>
<div class="space-y-4 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Props disponibles</h3>
<div class="grid gap-4 md:grid-cols-2">
<details open class="space-y-3 rounded-2xl border border-indigo-500/25 bg-indigo-500/5 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-indigo-200">Herramientas (<code class="font-mono text-xs">tool</code>)</summary>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"tool": { "type": "pickaxe|rod|sword|bow|halberd|net", "tier": 1 }
}</code></pre>
<p class="text-sm">Define el tipo de actividad que habilita tu item. El campo <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">tier</code> controla los requisitos mínimos.</p>
</details>
<details class="space-y-3 rounded-2xl border border-indigo-500/25 bg-indigo-500/5 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-indigo-200">Durabilidad (<code class="font-mono text-xs">breakable</code>)</summary>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"breakable": {
"enabled": true,
"maxDurability": 100,
"durabilityPerUse": 1
}
}</code></pre>
<p class="text-sm">Sólo funciona con items <em>no apilables</em>. Ajusta la pérdida de durabilidad por uso para balancear actividades.</p>
</details>
<details class="space-y-3 rounded-2xl border border-indigo-500/25 bg-indigo-500/5 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-indigo-200">Cofres (<code class="font-mono text-xs">chest</code>)</summary>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"chest": {
"enabled": true,
"rewards": [ ... ],
"consumeOnOpen": true
}
}</code></pre>
<p class="text-sm">Permite definir loot tables internas, recompensas de monedas, items o roles.</p>
</details>
<details class="space-y-3 rounded-2xl border border-indigo-500/25 bg-indigo-500/5 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-indigo-200">Comida y pociones (<code class="font-mono text-xs">food</code>)</summary>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"food": {
"healHp": 50,
"healPercent": 25,
"cooldownSeconds": 60
}
}</code></pre>
<p class="text-sm">Útil para pociones curativas o consumibles con cooldown.</p>
</details>
<details class="space-y-3 rounded-2xl border border-indigo-500/25 bg-indigo-500/5 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-indigo-200">Bonos de combate</summary>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"damage": 10,
"defense": 5,
"maxHpBonus": 20
}</code></pre>
<p class="text-sm">Configura stats extra para armas, armaduras o capas.</p>
</details>
<details class="space-y-3 rounded-2xl border border-indigo-500/25 bg-indigo-500/5 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-indigo-200">Etiquetas y metadatos</summary>
<p class="text-sm">Usa el modal <em>Tags</em> para añadir etiquetas separadas por coma, como <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">weapon,rare,crafteable</code>. Sirven para filtrar o aplicar reglas.</p>
</details>
</div>
</div>
</section>
<section id="mobs" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Mobs (Enemigos)</h2>
<p class="text-slate-200">
Los enemigos definen los encuentros durante minijuegos y niveles de área. Se crean con
<code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">!mob-crear</code> y usan stats y tablas de drop en formato JSON.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Campos principales</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><strong class="text-white">Base:</strong> Nombre y categoría opcional.</li>
<li><strong class="text-white">Stats:</strong> Define <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">attack</code>,
<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">hp</code>, <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">defense</code>, <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">xpReward</code>.</li>
<li><strong class="text-white">Drops:</strong> Incluye <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">draws</code> y una tabla con premios ponderados.</li>
</ul>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Ejemplo de configuración</h3>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"attack": 10,
"hp": 100,
"defense": 5,
"xpReward": 50
}</code></pre>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"draws": 2,
"table": [
{ "type": "coins", "amount": 50, "weight": 10 },
{ "type": "item", "itemKey": "leather", "qty": 1, "weight": 5 }
]
}</code></pre>
</div>
</div>
<div class="rounded-2xl border border-sky-500/30 bg-sky-500/10 p-5 text-sm text-sky-200">
<strong class="block text-base font-semibold text-sky-100">Tip:</strong>
Usa <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!mobs-lista</code> para auditar stats rápidamente y
<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!mob-ver &lt;key&gt;</code> para revisar drops antes de activar un área.
</div>
</section>
<section id="areas" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Áreas de juego (GameArea)</h2>
<p class="text-slate-200">
Las áreas definen dónde se desarrollan las actividades principales (minar, pescar, pelear, plantar). Cada área puede tener múltiples niveles configurables.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Modal Base</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><strong class="text-white">Nombre:</strong> Ej. <em>Caverna de Hierro</em>.</li>
<li><strong class="text-white">Tipo:</strong> <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">MINE</code>,
<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">LAGOON</code>, <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">FIGHT</code> o <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">FARM</code>.
</li>
</ul>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Modal Config (JSON)</h3>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"cooldownSeconds": 60,
"description": "Una mina profunda",
"icon": "⛏️"
}</code></pre>
<p class="text-sm text-slate-200">El ícono se mostrará en las tarjetas generadas por DisplayComponents.</p>
</div>
</div>
<div class="rounded-2xl border border-amber-500/30 bg-amber-500/10 p-5 text-sm text-amber-100">
<strong class="block text-base font-semibold text-amber-200">Recuerda:</strong>
Si eliminas un área con <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!area-eliminar</code>, revisa niveles asociados para evitar referencias rotas.
</div>
</section>
<section id="levels" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Niveles de área (GameAreaLevel)</h2>
<p class="text-slate-200">
Cada nivel controla requisitos, mobs, recompensas y vigencia. Gestiona niveles con
<code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">!area-nivel &lt;areaKey&gt; &lt;level&gt;</code>.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Requisitos</h3>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"tool": {
"required": true,
"toolType": "pickaxe",
"minTier": 2,
"allowedKeys": ["iron_pickaxe", "diamond_pickaxe"]
}
}</code></pre>
<p class="text-sm text-slate-200">Sirve para validar herramientas necesarias. Combínalo con los tiers definidos en los items.</p>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Recompensas</h3>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"draws": 3,
"table": [
{ "type": "coins", "amount": 100, "weight": 10 },
{ "type": "item", "itemKey": "iron_ore", "qty": 2, "weight": 5 }
]
}</code></pre>
<p class="text-sm text-slate-200">Define múltiples extracciones de la tabla con pesos personalizados.</p>
</div>
</div>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Mobs</h3>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"mobPool": {
"draws": 2,
"table": [
{ "mobKey": "goblin", "weight": 10 },
{ "mobKey": "troll", "weight": 3 }
]
}
}</code></pre>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Ventana</h3>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"window": {
"from": "2025-01-01T00:00:00Z",
"to": "2025-01-31T23:59:59Z"
}
}</code></pre>
</div>
</div>
</section>
<section id="offers" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Ofertas de tienda (ShopOffer)</h2>
<p class="text-slate-200">
Usa <code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">!offer-crear</code> para lanzar nuevas ofertas con stock limitado,
precios compuestos y ventanas temporales.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Precio (JSON)</h3>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"coins": 100,
"items": [
{ "itemKey": "iron_ore", "qty": 5 },
{ "itemKey": "wood", "qty": 10 }
]
}</code></pre>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Límites y ventana</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><strong class="text-white">Límite por usuario:</strong> Máximo por jugador.</li>
<li><strong class="text-white">Stock global:</strong> Total disponible.</li>
<li><strong class="text-white">Ventana:</strong> Fechas ISO de inicio y fin.</li>
</ul>
</div>
</div>
</section>
<section id="achievements" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Logros</h2>
<p class="text-slate-200">
Motiva a los jugadores con hitos permanentes. Crea logros con
<code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">!logro-crear</code> y configúralos usando el editor DisplayComponents.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Requisitos comunes</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">collect_items</code>: Recolectar items específicos.</li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">complete_missions</code>: Completar misiones listadas.</li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">reach_level</code>: Alcanzar cierto nivel o racha.</li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">stat_value</code>: Llegar a un valor en estadísticas.</li>
</ul>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Recompensas posibles</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li>Monedas</li>
<li>Items entregados automáticamente</li>
<li>Roles (usa ID de Discord)</li>
<li>Puntos de logro</li>
</ul>
</div>
</div>
<div class="rounded-2xl border border-emerald-500/30 bg-emerald-500/10 p-5 text-sm text-emerald-100">
<strong class="block text-base font-semibold text-emerald-200">Nota:</strong>
Usa <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!logros-lista</code> para auditar logros y
<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!logro-ver &lt;key&gt;</code> para validar estructura antes de publicarlos.
</div>
</section>
<section id="missions" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Misiones</h2>
<p class="text-slate-200">
Las misiones permiten objetivos diarios, semanales o repetibles. Adminístralas con
<code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">!mision-crear</code> y
<code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">!misiones-lista</code>.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Tipos de misión</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><strong class="text-white">daily:</strong> Reinicia cada día.</li>
<li><strong class="text-white">weekly:</strong> Reinicia cada semana.</li>
<li><strong class="text-white">one_time:</strong> Se completa una vez.</li>
<li><strong class="text-white">repeatable:</strong> Puede repetirse sin límite.</li>
</ul>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Requisitos combinables</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li>Consumir items o recursos.</li>
<li>Completar minijuegos específicos.</li>
<li>Derrotar mobs concretos.</li>
<li>Lograr cantidades de monedas.</li>
</ul>
</div>
</div>
<div class="rounded-2xl border border-sky-500/30 bg-sky-500/10 p-5 text-sm text-sky-100">
<strong class="block text-base font-semibold text-sky-200">Tip:</strong>
Aprovecha la ventana de disponibilidad para crear eventos temáticos limitados.
</div>
</section>
<section id="chests" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Cofres y recompensas</h2>
<p class="text-slate-200">
Configura cofres usando props <code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">chest</code> en los items y define tablas de recompensas con pesos.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Recompensas soportadas</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li>Monedas (<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">coins</code>)</li>
<li>Items (usa <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">itemKey</code> y <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">qty</code>)</li>
<li>Roles de Discord (<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">roleId</code>)</li>
</ul>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Consejos</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li>Usa <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">consumeOnOpen</code> para cofres desechables.</li>
<li>Combina cofres con logros y eventos para mejores recompensas.</li>
<li>Define varias entradas con pesos distintos para crear rarezas.</li>
</ul>
</div>
</div>
</section>
<section id="crafting" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Crafteos</h2>
<p class="text-slate-200">
Gestiona recetas desde la base de datos o crea comandos personalizados. El servicio de economía incluye
<code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">craftByProductKey</code> para validar materiales y entregar productos.
</p>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li>Define recetas en Prisma con entradas y productos.</li>
<li>Usa misiones o eventos para desbloquear recetas temporales combinando props y tags.</li>
<li>Considera usar <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">craftingOnly: true</code> en items que no se consiguen por drops.</li>
</ul>
</section>
<section id="mutations" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Mutaciones</h2>
<p class="text-slate-200">
Las mutaciones permiten modificar items existentes con efectos adicionales (ej. reforjar armas). Usa
<code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">findMutationByKey</code> y
<code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">applyMutationToInventory</code> desde el servicio de economía.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Políticas</h3>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"mutationPolicy": {
"allowedKeys": ["fire_upgrade", "ice_upgrade"],
"deniedKeys": ["cursed_upgrade"]
}
}</code></pre>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Sugerencias</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li>Crea mutaciones exclusivas por eventos.</li>
<li>Combínalas con logros o misiones épicas.</li>
<li>Controla conflictos usando <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">deniedKeys</code>.</li>
</ul>
</div>
</div>
</section>
<section id="potions" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Pociones y consumibles</h2>
<p class="text-slate-200">
Usa props <code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">food</code> para crear pociones curativas, boosters temporales o consumibles con cooldown.
</p>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Ejemplo de poción</h3>
<pre class="overflow-x-auto rounded-xl border border-indigo-500/30 bg-slate-900/70 p-4 text-xs text-indigo-100"><code>{
"food": {
"healHp": 75,
"healPercent": 15,
"cooldownKey": "healing_potion",
"cooldownSeconds": 45
}
}</code></pre>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Buenas prácticas</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li>Usa <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">cooldownKey</code> para compartir cooldown.</li>
<li>Balancea <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">healHp</code> y <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">healPercent</code> para distintos niveles.</li>
<li>Combina con logros para recompensar uso estratégico.</li>
</ul>
</div>
</div>
</section>
<section id="tools" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Herramientas y durabilidad</h2>
<p class="text-slate-200">
La durabilidad se administra a través de la combinación de props <code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">tool</code>
y <code class="rounded bg-indigo-500/15 px-1.5 py-0.5 font-mono text-xs text-indigo-200">breakable</code>. Para que un item pierda durabilidad, debe ser
<strong class="text-white">no apilable</strong> (<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">stackable=false</code>).
</p>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li>La función <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">reduceToolDurability</code> descuenta <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">durabilityPerUse</code> tras cada minijuego.</li>
<li>Cuando la durabilidad llega a 0, el item se elimina del inventario.</li>
<li>Si <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">breakable.enabled</code> es <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">false</code>, la herramienta es indestructible.</li>
<li>Usa tiers para bloquear áreas avanzadas. Ejemplo: Un área puede requerir una herramienta <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">pickaxe</code> con <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">tier &gt;= 2</code>.</li>
</ul>
<div class="rounded-2xl border border-amber-500/30 bg-amber-500/10 p-5 text-sm text-amber-100">
<strong class="block text-base font-semibold text-amber-200">Importante:</strong>
Después de cambiar items apilables a no apilables, recrea el item en los inventarios existentes para evitar stacks rotos.
</div>
</section>
<section id="services" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Servicios del sistema</h2>
<div class="grid gap-6 md:grid-cols-2">
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Economy Service</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">findItemByKey</code> y <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">addItemByKey</code></li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">consumeItemByKey</code> y <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">getInventoryEntry</code></li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">craftByProductKey</code> y <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">buyFromOffer</code></li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">findMutationByKey</code> y <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">applyMutationToInventory</code></li>
</ul>
</div>
<div class="space-y-3 rounded-2xl border border-white/5 bg-slate-900/60 p-5">
<h3 class="text-lg font-semibold text-white">Minigames Service</h3>
<ul class="list-disc space-y-1 pl-5 text-sm text-slate-200">
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">runMinigame</code> para ejecutar cualquier actividad.</li>
<li><code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">runMining</code> y <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">runFishing</code> como atajos.</li>
<li>Valida cooldowns, requisitos de herramientas y entrega recompensas.</li>
<li>Reduce durabilidad automáticamente cuando corresponde.</li>
</ul>
</div>
</div>
</section>
<section id="faq" class="space-y-6 rounded-3xl border border-white/5 bg-slate-900/80 p-8 shadow-2xl shadow-indigo-500/10 backdrop-blur">
<h2 class="text-3xl font-semibold text-white">Preguntas frecuentes</h2>
<div class="space-y-4">
<details class="rounded-2xl border border-white/5 bg-slate-900/60 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-white">¿Qué pasa si olvido definir <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">stackable</code>?</summary>
<p class="mt-3 text-sm">
Por defecto los items son apilables. Si tu herramienta pierde durabilidad, asegúrate de marcarla como <em>no apilable</em> en el modal Base.
</p>
</details>
<details class="rounded-2xl border border-white/5 bg-slate-900/60 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-white">¿Cómo pruebo mis configuraciones?</summary>
<p class="mt-3 text-sm">
Usa comandos de prueba en un servidor privado con el bot y confirma con
<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!player</code>,
<code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!stats</code> y <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">!inventario</code>.
</p>
</details>
<details class="rounded-2xl border border-white/5 bg-slate-900/60 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-white">¿Puedo clonar contenido entre servidores?</summary>
<p class="mt-3 text-sm">
Sí. Los items globales están disponibles en todos los servidores; los locales se limitan a su guild. Usa las herramientas de exportación de Prisma si necesitas migraciones masivas.
</p>
</details>
<details class="rounded-2xl border border-white/5 bg-slate-900/60 p-4 text-slate-200">
<summary class="cursor-pointer text-base font-semibold text-white">¿Cómo despliego esta documentación?</summary>
<p class="mt-3 text-sm">
Consulta las instrucciones en <code class="rounded bg-indigo-500/15 px-1 py-0.5 font-mono text-xs text-indigo-200">server/README.md</code> para publicar en Heroku como app independiente.
</p>
</details>
</div>
</section>
</div>
</main>
</div>
<footer class="border-t border-white/5 bg-slate-950/80 py-10 text-center text-sm text-slate-400">
<p>Amayo © 2025 — Documentación no oficial para administradores de comunidad.</p>
<a class="mt-3 inline-flex items-center gap-2 text-indigo-300 transition hover:text-indigo-200" href="#overview">
Volver arriba
<span aria-hidden="true">↑</span>
</a>
</footer>
</div>
<script src="./assets/js/main.js" type="module"></script>
</body>
</html>