Files
TetaRdPG/src/app.module.ts
Tetardtek 4beb1b2ed9 feat: Phase 3 Lore & Contenu — L'Odyssée d'un têtard
Lore Bible (canon narratif complet) + Engine Design (séparation moteur/univers).

4 nouvelles zones (Ruisseau Miroir, Marais des Murmures, Torrent Brisé, Source du Courant)
dans la chaîne d'unlock après desert (niv 16-25+).

Module NPC complet (entity, service, controller) — 8 PNJ avec dialogues évolutifs
par palier de niveau : Gorn (niv 1-15), Pierre-Mémoire (niv 16+), Mira, Vell,
La Batracienne, Le Forgeron, Le Marchand.

20 monstres lore-friendly, 12 matériaux, 15 items (dont Bâton de Gorn légendaire).

17 quêtes narratives (4 arcs ch.9-12) avec textes acceptText/completeText
qui racontent l'Odyssée. Nouveau type story_event pour les moments narratifs purs.
3 quêtes répétables optionnelles.

Seed runner : npm run seed:odyssee

Tout est additif — zéro impact sur le contenu existant niv 1-15.
2026-03-25 00:52:14 +01:00

70 lines
2.2 KiB
TypeScript

import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ThrottlerModule } from '@nestjs/throttler';
import { EventEmitterModule } from '@nestjs/event-emitter';
import { AuthModule } from './auth/auth.module';
import { CharacterModule } from './character/character.module';
import { MonsterModule } from './monster/monster.module';
import { CombatModule } from './combat/combat.module';
import { ItemModule } from './item/item.module';
import { MaterialModule } from './material/material.module';
import { CraftModule } from './craft/craft.module';
import { ForgeModule } from './forge/forge.module';
import { EconomyModule } from './economy/economy.module';
import { TwitchModule } from './twitch/twitch.module';
import { AchievementModule } from './achievement/achievement.module';
import { CommunityModule } from './community/community.module';
import { HallOfFameModule } from './halloffame/halloffame.module';
import { ProfileModule } from './profile/profile.module';
import { QuestModule } from './quest/quest.module';
import { ShopModule } from './shop/shop.module';
import { NpcModule } from './npc/npc.module';
import { HealthController } from './common/health.controller';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
EventEmitterModule.forRoot(),
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
type: 'mysql',
url: config.get<string>('DATABASE_URL'),
autoLoadEntities: true,
synchronize: config.get('DB_SYNC') === 'true' || config.get('NODE_ENV') !== 'production',
logging: config.get('NODE_ENV') === 'development',
}),
}),
ThrottlerModule.forRoot([
{
ttl: 60_000,
limit: 20,
},
]),
AuthModule,
CharacterModule,
MonsterModule,
CombatModule,
ItemModule,
MaterialModule,
CraftModule,
ForgeModule,
EconomyModule,
TwitchModule,
AchievementModule,
CommunityModule,
HallOfFameModule,
ProfileModule,
QuestModule,
ShopModule,
NpcModule,
],
controllers: [HealthController],
})
export class AppModule {}