feat: quêtes transition Acte I→II + minLevel arc Ruisseau 13
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
This commit is contained in:
@@ -34,7 +34,7 @@ export async function seedOdysseeQuests(dataSource: DataSource) {
|
|||||||
description: 'Gorn en parlait : un ruisseau qui montre ce qu\'on ne veut pas voir. Mira, Vell et toi devez l\'affronter ensemble.',
|
description: 'Gorn en parlait : un ruisseau qui montre ce qu\'on ne veut pas voir. Mira, Vell et toi devez l\'affronter ensemble.',
|
||||||
zone: 'ruisseau_miroir',
|
zone: 'ruisseau_miroir',
|
||||||
sortOrder: 4,
|
sortOrder: 4,
|
||||||
minLevel: 15,
|
minLevel: 13,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ export async function seedOdysseeQuests(dataSource: DataSource) {
|
|||||||
arcId: arc4.id,
|
arcId: arc4.id,
|
||||||
arcOrder: 1,
|
arcOrder: 1,
|
||||||
zone: null as string | null,
|
zone: null as string | null,
|
||||||
minLevel: 15,
|
minLevel: 13,
|
||||||
repeatable: false,
|
repeatable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -70,7 +70,7 @@ export async function seedOdysseeQuests(dataSource: DataSource) {
|
|||||||
arcId: arc4.id,
|
arcId: arc4.id,
|
||||||
arcOrder: 2,
|
arcOrder: 2,
|
||||||
zone: 'ruisseau_miroir',
|
zone: 'ruisseau_miroir',
|
||||||
minLevel: 15,
|
minLevel: 13,
|
||||||
repeatable: false,
|
repeatable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -401,11 +401,27 @@ export async function seedOdysseeQuests(dataSource: DataSource) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Quêtes répétables (grind léger entre les arcs — optionnel, pas obligatoire pour l'histoire)
|
// Quêtes de transition — découverte des premiers monstres (bridge Acte I → Acte II)
|
||||||
|
const transitionQuests = [
|
||||||
|
{ name: 'Au-delà de l\'Étang', description: 'L\'eau change. Des reflets étranges dansent à la surface du Ruisseau. Affrontez votre premier Reflet Sombre.', objectiveType: 'kill_monster', objectiveTargetId: m.get('Reflet Sombre'), objectiveCount: 1, rewardXp: 400, rewardGold: 200, zone: 'ruisseau_miroir', minLevel: 13 },
|
||||||
|
{ name: 'Les Cristaux du Ruisseau', description: 'Des insectes de cristal patrouillent les rives. Éliminez 3 Gerris de Cristal.', objectiveType: 'kill_monster', objectiveTargetId: m.get('Gerris de Cristal'), objectiveCount: 3, rewardXp: 500, rewardGold: 250, zone: 'ruisseau_miroir', minLevel: 13 },
|
||||||
|
{ name: 'Explorateur du Miroir', description: 'Le Ruisseau regorge de créatures inconnues. Remportez 5 combats dans cette zone.', objectiveType: 'kill_any', objectiveTargetId: null, objectiveCount: 5, rewardXp: 600, rewardGold: 300, zone: 'ruisseau_miroir', minLevel: 13 },
|
||||||
|
{ name: 'Éclats de Vérité', description: 'Les créatures du Ruisseau laissent tomber des éclats brillants. Récoltez 3 Éclats de Miroir.', objectiveType: 'gather_material', objectiveTargetId: mat.get('Éclat de Miroir'), objectiveCount: 3, rewardXp: 500, rewardGold: 250, zone: 'ruisseau_miroir', minLevel: 13 },
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const q of transitionQuests) {
|
||||||
|
const existing = await questRepo.findOne({ where: { name: q.name } });
|
||||||
|
if (!existing) {
|
||||||
|
await questRepo.save(questRepo.create({ ...q, rewardTitle: null, arcId: null, arcOrder: 0, repeatable: false, acceptText: null, completeText: null }));
|
||||||
|
questsAdded++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Quêtes répétables (grind léger entre les arcs — optionnel)
|
||||||
const dailyQuests = [
|
const dailyQuests = [
|
||||||
{ name: 'Éclats quotidiens', description: 'Récoltez des Éclats de Miroir dans le Ruisseau.', objectiveType: 'gather_material', objectiveTargetId: mat.get('Éclat de Miroir'), objectiveCount: 3, rewardXp: 300, rewardGold: 150, zone: 'ruisseau_miroir', minLevel: 16 },
|
{ name: 'Éclats quotidiens', description: 'Récoltez des Éclats de Miroir dans le Ruisseau.', objectiveType: 'gather_material', objectiveTargetId: mat.get('Éclat de Miroir'), objectiveCount: 3, rewardXp: 300, rewardGold: 150, zone: 'ruisseau_miroir', minLevel: 13 },
|
||||||
{ name: 'Brumes du jour', description: 'Récoltez de la Mousse Murmurante dans le Marais.', objectiveType: 'gather_material', objectiveTargetId: mat.get('Mousse Murmurante'), objectiveCount: 2, rewardXp: 400, rewardGold: 200, zone: 'marais_murmures', minLevel: 19 },
|
{ name: 'Brumes du jour', description: 'Récoltez de la Mousse Murmurante dans le Marais.', objectiveType: 'gather_material', objectiveTargetId: mat.get('Mousse Murmurante'), objectiveCount: 2, rewardXp: 400, rewardGold: 200, zone: 'marais_murmures', minLevel: 16 },
|
||||||
{ name: 'Pierres du Torrent', description: 'Récoltez des Pierres de Torrent.', objectiveType: 'gather_material', objectiveTargetId: mat.get('Pierre de Torrent'), objectiveCount: 2, rewardXp: 500, rewardGold: 250, zone: 'torrent_brise', minLevel: 22 },
|
{ name: 'Pierres du Torrent', description: 'Récoltez des Pierres de Torrent.', objectiveType: 'gather_material', objectiveTargetId: mat.get('Pierre de Torrent'), objectiveCount: 2, rewardXp: 500, rewardGold: 250, zone: 'torrent_brise', minLevel: 19 },
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const q of dailyQuests) {
|
for (const q of dailyQuests) {
|
||||||
@@ -416,5 +432,5 @@ export async function seedOdysseeQuests(dataSource: DataSource) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`✅ Odyssée: ${questsAdded} quêtes (4 arcs narratifs + ${dailyQuests.length} répétables)`);
|
console.log(`✅ Odyssée: ${questsAdded} quêtes (4 arcs + ${transitionQuests.length} transition + ${dailyQuests.length} répétables)`);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user