2.6 KiB
2.6 KiB
🔧 Fix Final: Tool Selection Priority
Problema Identificado: findBestToolKey selecciona espada en lugar de pico para minar.
Causa Raíz Posible:
- La espada en DB podría tener
tool.type: "pickaxe"(datos corruptos) - O ambos tienen tier similar y el algoritmo no diferenciaba herramientas primarias de armas
Solución Implementada:
Cambio en findBestToolKey (línea 51-76)
// ANTES: Solo comparaba tier
if (!best || tier > best.tier) best = { key: e.item.key, tier };
// DESPUÉS: Prioriza items con key "tool.*" sobre "weapon.*"
const isPrimaryTool = e.item.key.startsWith('tool.');
if (!best || tier > best.tier || (tier === best.tier && isPrimaryTool && !best.isPrimaryTool)) {
best = { key: e.item.key, tier, isPrimaryTool };
}
Lógica:
- Si tier es mayor → selecciona independientemente del tipo
- Si tier es igual → prioriza
tool.*(pico, caña) sobreweapon.*(espada)
🔍 Diagnóstico Requerido
Ejecuta en Discord:
a!debug-inv
Busca en la salida:
✅ Configuración Correcta:
**Pico Normal** (`tool.pickaxe.basic`)
• Tool: type=pickaxe, tier=1
• Breakable: enabled=true, max=100
**Espada Normal** (`weapon.sword.iron`)
• Tool: type=sword, tier=1
• Breakable: enabled=true, max=150
❌ Configuración Corrupta:
**Espada Normal** (`weapon.sword.iron`)
• Tool: type=pickaxe, tier=1 <-- ⚠️ PROBLEMA: debería ser "sword"
🛠️ Solución si Datos Corruptos
Si la espada tiene tool.type: "pickaxe", re-ejecuta el seed:
XATA_DB="..." npm run seed:minigames
O actualiza manualmente en Prisma Studio:
- Abrir item
weapon.sword.iron - Editar props.tool.type → cambiar a
"sword" - Guardar
✅ Validación Final
Después de reiniciar el bot:
a!minar
Resultado esperado:
Herramienta: ⛏️ Pico Normal (95/100) [🔧 Auto]
Arma (defensa): ⚔️ Espada Normal (149/150) [⚔️ Equipado]
NO debe mostrar:
Herramienta: ⚔️ Espada Normal (x4) (-2 dur.) (provided)
📊 Resumen de Todos los Fixes
| # | Problema | Causa | Solución | Estado |
|---|---|---|---|---|
| 1 | Items stackable | Datos antiguos | Migración SQL + script TS | ✅ Completo |
| 2 | Combate sin arma ganado | Condición ambigua | hasWeapon explícito |
✅ Completo |
| 3 | Espada usada para minar | Sin priorización de tool.* | Algoritmo de prioridad | ✅ Completo |
| 4 | Cantidad en lugar de durabilidad | Display formateado mal | Pendiente verificar en UI |
Siguiente Paso: Reiniciar bot y ejecutar a!debug-inv para confirmar tool types correctos.