package storytelling type IStory interface { GetStory(scenario *Story, codes []string) *Story } // История - это введение, набор точек и вопросы дела type Story struct { // Введение - то, что игрок получает в начале игры Introduction *Introduction `json:"introduction,omitempty"` // Список точек Places []*Place `json:"places"` // Вопросы дела - список вопросов, на которые команда должна ответить Questions []*Question `json:"questions,omitempty"` } // Вопрос дела - вопрос, который автор сценария добавляет вместе с // правильным ответом; команда отвечает на вопросы в конце игры type Question struct { // Код - идентификатор вопроса, используется при отправке ответов Code string `json:"code"` // Текст вопроса Text string `json:"text"` // Правильный ответ - виден только автору и организаторам, // команде не передаётся Answer string `json:"answer"` } // Введение - текст и аудио, которые игрок получает в начале игры type Introduction struct { // Текст введения Text string `json:"text"` // Аудио введения Audio string `json:"audio,omitempty"` } // Точка - что-то куда можно сходить // Это может быть место - аптека, остановка, площадь... // Это может быть персонаж - пострадавший, продавец, полицейский... // Это может быть описание действия игрока - ответ на вопрос, реакция на выбитую дверь... type Place struct { // Код - то что вбивает игрок Code string `json:"code"` // Название места, имя персонажа, заданный игроком вопрос... Name string `json:"name"` // Текст - получаемая текстовая информация Text string `json:"text"` // Картинка - получаемая визуальная информация Image string `json:"image"` // Признак скрытой карточки - некоторые места изначально не доступны Hidden bool `json:"hidden"` // Приложения - получаемые улики Applications []*Application `json:"applications,omitempty"` // Двери к другим точкам - действия или диалоги, открывающие другие точки Doors []*Door `json:"doors"` // Получаемые ключи - ключи используются для получения доступа к скрытым дверям Keys []*Key `json:"keys"` } // Приложение - улика // Это может быть оружие, отпечатки, фотография... type Application struct { // Название улики Name string `json:"name"` // Картинка Image string `json:"image"` // Тип файла улики: image | pdf | audio. FileType string `json:"file_type,omitempty"` } // Дверь - действие или диалог type Door struct { // Код Code string `json:"code"` // Название - заданный вопрос, проделанное действие... Name string `json:"name"` // Некоторые двери изначально не доступны // Ключи требуемые для получения доступа к скрытым дверям // Если указаны ключи то дверь считается скрытой Keys []*Key `json:"keys"` } // Аналог карт допуска в "Тайны Аркхема" type Key struct { // Название Name string `json:"name"` }