feat(game): add area fallback logic for commands and helpers
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import type { CommandMessage } from '../../../core/types/commands';
|
||||
import type Amayo from '../../../core/client';
|
||||
import { runMinigame } from '../../../game/minigames/service';
|
||||
import { resolveArea, getDefaultLevel, findBestToolKey, parseGameArgs } from './_helpers';
|
||||
import { getDefaultLevel, findBestToolKey, parseGameArgs, resolveGuildAreaWithFallback } from './_helpers';
|
||||
import { updateStats } from '../../../game/stats/service';
|
||||
import { updateQuestProgress } from '../../../game/quests/service';
|
||||
import { checkAchievements } from '../../../game/achievements/service';
|
||||
@@ -18,11 +18,14 @@ export const command: CommandMessage = {
|
||||
const guildId = message.guild!.id;
|
||||
const { areaKey, levelArg, providedTool } = parseGameArgs(args, 'mine.cavern');
|
||||
|
||||
const area = await resolveArea(guildId, areaKey);
|
||||
const { area, source } = await resolveGuildAreaWithFallback(guildId, areaKey);
|
||||
if (!area) {
|
||||
await message.reply(`⚠️ Área de mina no configurada. Pide a un admin crear \`gameArea\` con key \`${areaKey}\`.`);
|
||||
await message.reply(`⚠️ Área de mina no configurada. Pide a un admin crear \`gameArea\` con key \`${areaKey}\` en este servidor.`);
|
||||
return;
|
||||
}
|
||||
const globalNotice = source === 'global'
|
||||
? `ℹ️ Usando configuración global para \`${areaKey}\`. Puedes crear \`gameArea\` para personalizarla en este servidor.`
|
||||
: null;
|
||||
|
||||
const level = levelArg ?? await getDefaultLevel(userId, guildId, area.id);
|
||||
const toolKey = providedTool ?? await findBestToolKey(userId, guildId, 'pickaxe');
|
||||
@@ -32,9 +35,9 @@ export const command: CommandMessage = {
|
||||
|
||||
// Actualizar stats
|
||||
await updateStats(userId, guildId, { minesCompleted: 1 });
|
||||
|
||||
// Actualizar progreso de misiones
|
||||
await updateQuestProgress(userId, guildId, 'mine_count', 1);
|
||||
|
||||
// Actualizar progreso de misiones
|
||||
await updateQuestProgress(userId, guildId, 'mine_count', 1);
|
||||
|
||||
// Verificar logros
|
||||
const newAchievements = await checkAchievements(userId, guildId, 'mine_count');
|
||||
@@ -43,7 +46,8 @@ export const command: CommandMessage = {
|
||||
const mobs = result.mobs.length ? result.mobs.join(', ') : '—';
|
||||
const toolInfo = result.tool?.key ? `🔧 ${result.tool.key}${result.tool.broken ? ' (rota)' : ` (-${result.tool.durabilityDelta} dur.)`}` : '—';
|
||||
|
||||
let response = `⛏️ Mina (nivel ${level})
|
||||
let response = globalNotice ? `${globalNotice}\n\n` : '';
|
||||
response += `⛏️ Mina (nivel ${level})
|
||||
Recompensas: ${rewards}
|
||||
Mobs: ${mobs}
|
||||
Herramienta: ${toolInfo}`;
|
||||
|
||||
Reference in New Issue
Block a user