Files
amayo/scripts/smokeQuestsAchievements.ts

100 lines
2.7 KiB
TypeScript
Raw Normal View History

import "dotenv/config";
import { prisma } from "../src/core/database/prisma";
import { seedAchievements } from "../src/game/achievements/seed";
import {
generateDailyQuests,
updateQuestProgress,
claimQuestReward,
getPlayerQuests,
} from "../src/game/quests/service";
import {
checkAchievements,
getPlayerAchievements,
} from "../src/game/achievements/service";
async function ensureGuildAndUser(guildId: string, userId: string) {
await prisma.guild.upsert({
where: { id: guildId },
update: { name: "test" },
create: { id: guildId, name: "test", prefix: "!" },
});
await prisma.user.upsert({
where: { id: userId },
update: {},
create: { id: userId },
});
}
async function run() {
const guildId = "test-guild-quests";
const userId = "test-user-1";
await ensureGuildAndUser(guildId, userId);
console.log("Seeding achievements global...");
await seedAchievements(null);
console.log("Seeding achievements for guild...");
await seedAchievements(guildId);
console.log("Generating daily quests for guild...");
await generateDailyQuests(guildId);
console.log("Player quests before progress:");
console.log(await getPlayerQuests(userId, guildId));
// Buscar una quest de tipo fight_count
const quests = await prisma.quest.findMany({
where: { guildId, type: "daily" },
});
const q = quests.find((q) => (q.requirements as any).type === "fight_count");
if (!q) {
console.log("No daily fight quest found, picking first.");
}
const questToUse = q || quests[0];
console.log("Using quest:", questToUse?.key);
// Simular progreso para completarla
const req = (questToUse.requirements as any) || { count: 1 };
const needed = req.count || 1;
console.log("Incrementing progress by", needed);
const updates = await updateQuestProgress(
userId,
guildId,
req.type || "fight_count",
needed
);
console.log(
"Quests completed by updateQuestProgress:",
updates.map((u) => u.key)
);
// Intentar reclamar
const progressRow = await prisma.questProgress.findFirst({
where: { userId, guildId, questId: questToUse.id, completed: true },
});
if (progressRow) {
const claim = await claimQuestReward(userId, guildId, questToUse.id);
console.log("Claim result:", claim);
} else {
console.log("No completed quest progress to claim");
}
// Check achievements trigger
console.log("Checking achievements for fight_count");
const unlocked = await checkAchievements(userId, guildId, "fight_count");
console.log(
"Achievements unlocked:",
unlocked.map((a) => a.key)
);
console.log("Player achievements summary:");
console.log(await getPlayerAchievements(userId, guildId));
process.exit(0);
}
run().catch((e) => {
console.error(e);
process.exit(1);
});