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.
70 lines
2.2 KiB
TypeScript
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 {}
|