All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
Quest system: 4 entities (quest_arcs, quests, player_quests, player_quest_arcs) Arc "Les Marais du Têtard" (4 quêtes narratives) 3 quêtes standalone répétables (chasse/forge/craft) 5 achievements liés (quests_completed + quest_arc_completed) Event-driven: combat/forge/craft/loot émettent quest.progress API: available, active, completed, accept, claim, arcs Rebalance: Endurance coût combat 10→5, regen 6min→3min (20/h), repos 20→10 Dégâts joueur +3 base (plus de combats de 13 tours au level 1) Défaite endurance penalty 50→25 XP monstres réduite (25→8 Têtard, 130→50 Golem) — quêtes = source principale
32 lines
613 B
TypeScript
32 lines
613 B
TypeScript
import {
|
|
Entity,
|
|
PrimaryGeneratedColumn,
|
|
Column,
|
|
OneToMany,
|
|
} from 'typeorm';
|
|
import { Quest } from './quest.entity';
|
|
|
|
@Entity('quest_arcs')
|
|
export class QuestArc {
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id: string;
|
|
|
|
@Column({ length: 100 })
|
|
name: string;
|
|
|
|
@Column('text')
|
|
description: string;
|
|
|
|
@Column({ length: 50, nullable: true, type: 'varchar' })
|
|
zone: string | null; // 'marais', 'foret', etc.
|
|
|
|
@Column({ name: 'sort_order', default: 0 })
|
|
sortOrder: number;
|
|
|
|
@Column({ name: 'min_level', default: 1 })
|
|
minLevel: number;
|
|
|
|
@OneToMany(() => Quest, (q) => q.arc)
|
|
quests: Quest[];
|
|
}
|