/** * Core interfaces for the interactive fiction world model */ export interface Room { id: string; name: string; description: string; exits: Exit[]; objects: string[]; characters: string[]; } export interface Exit { direction: string; targetRoomId: string; description?: string; isLocked?: boolean; keyId?: string; } export interface GameObject { id: string; name: string; description: string; traits: string[]; states: Record; containedObjects?: string[]; allowedActions: string[]; } export interface Character { id: string; name: string; description: string; dialogue: Record; inventory: string[]; defaultResponse: string; mood?: string; } export interface Action { name: string; patterns: string[]; requiresObject?: boolean; requiresTarget?: boolean; handler: string; } export interface GameState { currentRoomId: string; inventory: string[]; visitedRooms: string[]; flags: Record; counters: Record; } export interface WorldModel { title: string; author: string; version: string; introduction: string; rooms: Record; objects: Record; characters: Record; actions: Record; initialState: GameState; }