{
 "title": "Торба-на-Круче",
 "description": "Стоодиннадцатилетие Бильбо Торбинса оборачивается самым странным праздником в истории Хоббитании: фейерверк Гэндальфа, прощальная речь — и хозяин исчезает прямо со стула. На каминной доске Фродо ждёт запечатанный конверт с завещанием и золотым Кольцом, Лякошели обшаривают нору, а маг советует спрятать Кольцо и молчать о нём.",
 "quest_concept": "Праздник Бильбо оборачивается его исчезновением: Фродо наследует Торбу и золотое Кольцо, отражает натиск Лякошелей и выслушивает предупреждение Гэндальфа.",
 "story_description": "Фродо Торбинс празднует вместе со всей Хоббитанией стоодиннадцатый день рождения Бильбо и своё совершеннолетие. После огненного дракона Гэндальфа Бильбо произносит прощальную речь, надевает Кольцо — и исчезает. В опустевшей норе Фродо находит на каминной доске запечатанный конверт: завещание и золотое Кольцо на цепочке. Лякошель-Торбинсы требуют Торбу себе, а Любелия обшаривает углы и простукивает полы. Гэндальф, чей серый плащ растворяется в сумерках, наказывает: спрячь Кольцо подальше, не давай повода к толкам — и жди меня в самое неподходящее время.",
 "player": {
  "start_location": "tukromnyy_ugolok",
  "start_position": {
   "x": 960,
   "y": 540
  }
 },
 "characters": [
  {
   "name": "Фродо",
   "role": "protagonist",
   "archetype": "human_adult_male",
   "personality": "Тридцатитрёхлетний хоббит, совершеннолетний с этого дня: любезный хозяин с твёрдой рукой, когда дело касается Лякошелей.",
   "speech_style": "Говорит вежливо и с достоинством; растерянность прячет за учтивостью.",
   "description": "Наследник Бильбо, новый хозяин Торбы-на-Круче."
  },
  {
   "name": "Бильбо",
   "role": "npc",
   "archetype": "human_elderly_male",
   "personality": "Богатый сумасброд, сто одиннадцать лет которого не оставили следа; в кармане он всё время трогает Кольцо.",
   "speech_style": "Речь заготовлена заранее и блещет шутками; под конец — решимость уйти.",
   "description": "Владелец Торбы-на-Круче, устроитель Угощения века."
  },
  {
   "name": "Гэндальф",
   "role": "npc",
   "archetype": "human_elderly_male",
   "personality": "Седой маг в синей шляпе: искусник по огням — и хранитель страшного подозрения о Кольце.",
   "speech_style": "Говорит веско, полушутя-полусерьёзно; предупреждает дважды.",
   "description": "Старый друг Бильбо, виновник огненной потехи."
  },
  {
   "name": "Мерри",
   "role": "npc",
   "archetype": "human_adult_male",
   "personality": "Приятель Фродо из Брендизайков: расторопный, насмешливый, верный.",
   "speech_style": "Отвечает по-деловому, с хоббитской шуткой.",
   "description": "Мерри Брендизайк, помогающий Фродо принимать поздравляющих."
  },
  {
   "name": "Оддо",
   "role": "antagonist",
   "archetype": "human_adult_male",
   "personality": "Лякошель-Торбинс: по его мнению, законный наследник Торбы, которого опять обошли.",
   "speech_style": "Громогласные требования и обиженное фырканье при виде завещания.",
   "description": "Оддо Лякошель-Торбинс, претендент на Торбу-на-Круче."
  },
  {
   "name": "Любелия",
   "role": "npc",
   "archetype": "human_elderly_female",
   "personality": "Супруга Оддо: обшаривает углы, простукивает полы и присваивает зонтиком всё ценное, что плохо лежит.",
   "speech_style": "Кисло-сладкие комплименты вещам хозяина и прощальное шипение.",
   "description": "Любелия Лякошель-Торбинс, главная гроза распродаж в Хоббитании."
  },
  {
   "name": "Жихарь",
   "role": "npc",
   "archetype": "human_elderly_male",
   "personality": "Старый Хэм Скромби, бывший садовник Торбы: говорит веско, сорок лет присматривая за Кручей.",
   "speech_style": "Неторопливые рассказы с прибаутками и попрёками мельнику.",
   "description": "Голос «Укромного уголка», знающий о Торбе всё."
  }
 ],
 "locations": [
  {
   "name": "Трактир «Укромный уголок»",
   "description": "Трактирчик на дороге в Приречье: здесь Жихарь рассказывает про Бильбо, сокровища и фейерверк, которого Хоббитания не видала сто лет.",
   "area": "трактир",
   "entities": [
    {
     "name": "Жихарь",
     "is_agent": true,
     "description": "Старик, окружённый слушателями: про господина Торбинса он знает всё и ещё немного.",
     "interact_hint": "Жихарь — поговорить",
     "dialogues": [
      1
     ],
     "conditional_dialogues": [],
     "character": "Жихарь",
     "archetype": "human_elderly_male",
     "id": "tavern_zhihar",
     "on_interact": {}
    },
    {
     "id": "atm_tavern_pivnye_bochki",
     "name": "Пивные бочки",
     "type": "oak_barrel",
     "is_agent": false,
     "description": "Дубовые бочки у стены: пиво в «Укромном уголке» всегда свежее.",
     "inspect_text": "Один бочонок, слышно, уже пуст — мельник не промах.",
     "action_description": "",
     "interact_hint": "Бочки — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Один бочонок, слышно, уже пуст — мельник не промах."
     }
    },
    {
     "id": "atm_tavern_kamin",
     "name": "Очаг",
     "type": "stone_fireplace",
     "is_agent": false,
     "description": "Уютный очаг, у которого спорят о чужих делах.",
     "inspect_text": "Слухи о празднике разнеслись по всей Хоббитании.",
     "action_description": "",
     "interact_hint": "Очаг — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Слухи о празднике разнеслись по всей Хоббитании."
     }
    }
   ],
   "items": [],
   "atmosphere_objects": [],
   "room_classification": {
    "setting": "interior",
    "function": "tavern",
    "style": "rustic",
    "mood": "cozy"
   },
   "id": "tukromnyy_ugolok",
   "exits": [
    {
     "to": "belye_vorota",
     "direction": "forward",
     "exit_type": "path",
     "label": "-> Белые ворота",
     "action_label": "Пойти к Белым воротам Торбы-на-Круче"
    }
   ],
   "triggers": [],
   "loc_type": "indoor",
   "rooms_layout": {
    "vibe": "тёплый трактир",
    "description": "Трактирный зал с бочками и очагом",
    "view_type": "side",
    "wall_theme": "wood",
    "floor_theme": "wooden",
    "wall_decor": [
     {
      "type": "hanging_sign",
      "name": "Вывеска",
      "x": 12
     }
    ],
    "ceiling_decor": [],
    "floor_items": [
     {
      "type": "oak_barrel",
      "name": "Бочка",
      "x": 15
     },
     {
      "type": "wooden_table",
      "name": "Стол",
      "x": 40
     },
     {
      "type": "bench",
      "name": "Лавка",
      "x": 55
     }
    ],
    "rooms": [
     {
      "x": 5,
      "width": 8,
      "height": 4,
      "floor_theme": "wooden",
      "wall_theme": "wood",
      "description": "Основная часть зала"
     }
    ],
    "doors": [
     {
      "x": 0,
      "side": "left"
     },
     {
      "x": 59,
      "side": "right"
     }
    ],
    "decor_items": [
     {
      "type": "oak_barrel",
      "name": "Бочка",
      "x": 15
     },
     {
      "type": "wooden_table",
      "name": "Стол",
      "x": 40
     },
     {
      "type": "bench",
      "name": "Лавка",
      "x": 55
     },
     {
      "type": "hanging_sign",
      "name": "Вывеска",
      "x": 12
     }
    ],
    "decor_pool": [
     "oak_barrel",
     "wooden_table",
     "bench",
     "hanging_sign"
    ]
   },
   "bg_color": "#6a4a2a",
   "wall_theme": "wood",
   "floor_theme": "wooden"
  },
  {
   "name": "Белые ворота Торбы",
   "description": "Ворота украшены табличкой «ВХОДИТЬ ТОЛЬКО ПО ДЕЛУ НАСЧЁТ УГОЩЕНИЯ»; сюда стекаются поздравляющие — званые и незваные.",
   "area": "двор",
   "entities": [
    {
     "name": "Табличка на воротах",
     "is_agent": false,
     "description": "Аккуратно выведенное объявление хозяина, занятого по горло.",
     "inspect_text": "«ВХОДИТЬ ТОЛЬКО ПО ДЕЛУ НАСЧЁТ УГОЩЕНИЯ» — решено!",
     "interact_hint": "Табличка — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "«ВХОДИТЬ ТОЛЬКО ПО ДЕЛУ НАСЧЁТ УГОЩЕНИЯ» — решено!"
     },
     "type": "wooden_sign",
     "id": "vorota_tablichka"
    },
    {
     "id": "atm_vorota_podarki",
     "name": "Гора подарков",
     "type": "wooden_chest",
     "is_agent": false,
     "description": "Бильбо раздаёт подарки всем и каждому; кто хочет ещё, выбирается чёрным ходом и снова подходит к воротам.",
     "inspect_text": "Дивные игрушки, некоторые — так даже волшебные: гномы постарались.",
     "action_description": "",
     "interact_hint": "Подарки — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Дивные игрушки, некоторые — так даже волшебные: гномы постарались."
     }
    },
    {
     "id": "atm_vorota_zabor",
     "name": "Невысокий забор",
     "type": "wattle_fence",
     "is_agent": false,
     "description": "Хоббитский плетень, через который переговариваются зеваки со всей Кручи.",
     "inspect_text": "Хоббитята дожидаются фейерверка, свесив ноги.",
     "action_description": "",
     "interact_hint": "Забор — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Хоббитята дожидаются фейерверка, свесив ноги."
     }
    }
   ],
   "items": [],
   "atmosphere_objects": [],
   "room_classification": {
    "setting": "outdoor_natural",
    "function": "other",
    "style": "fairytale",
    "mood": "peaceful"
   },
   "id": "belye_vorota",
   "exits": [
    {
     "to": "tukromnyy_ugolok",
     "direction": "back",
     "exit_type": "path",
     "label": "-> Укромный уголок",
     "action_label": "Вернуться в трактир"
    },
    {
     "to": "prazdnichnaya_luzhajka",
     "direction": "forward",
     "exit_type": "path",
     "label": "-> Праздничная лужайка",
     "action_label": "Пройти на лужайку, где накрыты столы"
    }
   ],
   "triggers": [
    {
     "id": "trigger_1",
     "type": "enter_location",
     "target": "belye_vorota",
     "objective_id": 1,
     "conditions": {}
    }
   ],
   "loc_type": "outdoor",
   "rooms_layout": {
    "vibe": "суета у ворот",
    "description": "Праздничный двор с подарками и плетнём",
    "view_type": "side",
    "wall_theme": "wood",
    "floor_theme": "grass",
    "wall_decor": [
     {
      "type": "wooden_sign",
      "name": "Табличка",
      "x": 10
     },
     {
      "type": "picket_fence",
      "name": "Забор",
      "x": 50
     }
    ],
    "ceiling_decor": [],
    "floor_items": [
     {
      "type": "wooden_chest",
      "name": "Подарки",
      "x": 20
     },
     {
      "type": "wildflower_patch",
      "name": "Цветы",
      "x": 40
     },
     {
      "type": "park_bench",
      "name": "Скамья",
      "x": 58
     }
    ],
    "rooms": [
     {
      "x": 5,
      "width": 8,
      "height": 4,
      "floor_theme": "grass",
      "wall_theme": "wood",
      "description": "Основная часть двора"
     }
    ],
    "doors": [
     {
      "x": 0,
      "side": "left"
     },
     {
      "x": 59,
      "side": "right"
     }
    ],
    "decor_items": [
     {
      "type": "wooden_chest",
      "name": "Подарки",
      "x": 20
     },
     {
      "type": "wildflower_patch",
      "name": "Цветы",
      "x": 40
     },
     {
      "type": "park_bench",
      "name": "Скамья",
      "x": 58
     },
     {
      "type": "wooden_sign",
      "name": "Табличка",
      "x": 10
     }
    ],
    "decor_pool": [
     "wooden_chest",
     "wildflower_patch",
     "park_bench",
     "wooden_sign"
    ]
   },
   "bg_color": "#87CEEB",
   "wall_theme": "wood",
   "floor_theme": "grass"
  },
  {
   "name": "Праздничная лужайка",
   "description": "Особый шатёр на сто сорок четыре избранника, столы с яствами — и небо, где огнистые птицы реют, а из пламени вылетает красно-золотой дракон.",
   "area": "лужайка",
   "entities": [
    {
     "name": "Бильбо",
     "is_agent": true,
     "description": "Хозяин праздника на стуле под деревом: он трогает что-то в кармане и собирается с духом.",
     "interact_hint": "Бильбо — поговорить",
     "dialogues": [
      3
     ],
     "conditional_dialogues": [],
     "character": "Бильбо",
     "archetype": "human_elderly_male",
     "id": "luzhajka_bilbo",
     "on_interact": {}
    },
    {
     "name": "Гэндальф",
     "is_agent": true,
     "description": "Маг, довольный произведённым эффектом: дракон пронёсся над головами и взорвался над Приречьем.",
     "interact_hint": "Гэндальф — поговорить",
     "dialogues": [
      5
     ],
     "conditional_dialogues": [],
     "character": "Гэндальф",
     "archetype": "human_elderly_male",
     "id": "luzhajka_gandalf",
     "on_interact": {}
    },
    {
     "id": "atm_luzhajka_shater",
     "name": "Большой шатёр",
     "type": "canvas_tent",
     "is_agent": false,
     "description": "Павильон для ста сорока четырёх избранников, побаивающихся послеобеденной речи хозяина.",
     "inspect_text": "Того и жди понесёт он какую-нибудь околесицу под названием «стихи».",
     "action_description": "",
     "interact_hint": "Шатёр — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Того и жди понесёт он какую-нибудь околесицу под названием «стихи»."
     }
    },
    {
     "id": "atm_luzhajka_fonari",
     "name": "Разноцветные фонари",
     "type": "paper_lantern",
     "is_agent": false,
     "description": "Фонарики, подвешенные по всей лужайке: к ночи они вспыхнут все разом.",
     "inspect_text": "Гномы в надвинутых капюшонах распевают непонятные песни.",
     "action_description": "",
     "interact_hint": "Фонари — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Гномы в надвинутых капюшонах распевают непонятные песни."
     }
    },
    {
     "id": "atm_luzhajka_stoly",
     "name": "Столы с яствами",
     "type": "wooden_table",
     "is_agent": false,
     "description": "Угощались до отвала: ели сытно, много, вкусно и долго.",
     "inspect_text": "Чего не съели — забрали с собой.",
     "action_description": "",
     "interact_hint": "Столы — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Чего не съели — забрали с собой."
     }
    }
   ],
   "items": [],
   "atmosphere_objects": [],
   "room_classification": {
    "setting": "outdoor_natural",
    "function": "other",
    "style": "fairytale",
    "mood": "cheerful"
   },
   "id": "prazdnichnaya_luzhajka",
   "exits": [
    {
     "to": "belye_vorota",
     "direction": "back",
     "exit_type": "path",
     "label": "-> Белые ворота",
     "action_label": "Вернуться к воротам"
    },
    {
     "to": "gostinaya_torby",
     "direction": "forward",
     "exit_type": "door",
     "label": "-> Гостиная Торбы",
     "action_label": "Войти в опустевшую нору",
     "pass_condition": {
      "objective_completed": [
       5
      ]
     },
     "pass_refusals": [
      {
       "text": "В нору идти рано: Гэндальф хочет тебе что-то сказать.",
       "conditions": {
        "not": {
         "objective_completed": 5
        }
       }
      }
     ]
    }
   ],
   "triggers": [
    {
     "id": "trigger_2",
     "type": "enter_location",
     "target": "prazdnichnaya_luzhajka",
     "objective_id": 2,
     "conditions": {
      "objective_completed": [
       1
      ]
     }
    }
   ],
   "loc_type": "outdoor",
   "rooms_layout": {
    "vibe": "главный праздник столетия",
    "description": "Лужайка с шатром, столами и фонарями",
    "view_type": "side",
    "wall_theme": "wood",
    "floor_theme": "grass",
    "wall_decor": [
     {
      "type": "paper_lantern",
      "name": "Фонарь",
      "x": 12
     },
     {
      "type": "paper_lantern",
      "name": "Фонарь",
      "x": 52
     }
    ],
    "ceiling_decor": [],
    "floor_items": [
     {
      "type": "canvas_tent",
      "name": "Шатёр",
      "x": 18
     },
     {
      "type": "wooden_table",
      "name": "Столы",
      "x": 38
     },
     {
      "type": "oak_barrel",
      "name": "Бочка",
      "x": 55
     }
    ],
    "rooms": [
     {
      "x": 5,
      "width": 8,
      "height": 4,
      "floor_theme": "grass",
      "wall_theme": "wood",
      "description": "Основная часть лужайки"
     }
    ],
    "doors": [
     {
      "x": 0,
      "side": "left"
     },
     {
      "x": 59,
      "side": "right"
     }
    ],
    "decor_items": [
     {
      "type": "canvas_tent",
      "name": "Шатёр",
      "x": 18
     },
     {
      "type": "wooden_table",
      "name": "Столы",
      "x": 38
     },
     {
      "type": "oak_barrel",
      "name": "Бочка",
      "x": 55
     },
     {
      "type": "paper_lantern",
      "name": "Фонарь",
      "x": 12
     }
    ],
    "decor_pool": [
     "canvas_tent",
     "wooden_table",
     "oak_barrel",
     "paper_lantern"
    ]
   },
   "bg_color": "#7CFC00",
   "wall_theme": "wood",
   "floor_theme": "grass"
  },
  {
   "name": "Гостиная Торбы",
   "description": "Круглая гостиная хоббитской норы: на каминной доске, возле часов, лежит что-то плоское и запечатанное.",
   "area": "нора",
   "entities": [
    {
     "name": "Каминная доска",
     "is_agent": false,
     "description": "Широкая доска над камином: часы, безделушки — и толстый конверт, адресованный Фродо.",
     "inspect_text": "На конверте — имя Фродо; печать цела.",
     "interact_hint": "Каминная доска — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "spawn_item",
      "item_id": "gostinaya_konvert",
      "item_name": "Запечатанный конверт",
      "item_description": "Толстый конверт с именем Фродо: внутри — завещание и что-то тяжёлое на цепочке.",
      "item_type": "sealed_letter",
      "use_effect": {
       "type": "complete_objective",
       "objective_id": 8,
       "target_type": "global",
       "apply_to": "self",
       "conditions": {
        "objective_completed": [
         7
        ]
       }
      },
      "conditions": {
       "objective_completed": [
        6
       ]
      }
     },
     "type": "stone_fireplace",
     "id": "gostinaya_kamin"
    },
    {
     "name": "Гардероб Бильбо",
     "is_agent": false,
     "description": "Из пронафталиненного шкафа исчезли древний плащ с капюшоном и старый кожаный пояс с коротким мечом.",
     "inspect_text": "Хозяин переоделся в лохмотья путника — и ушёл.",
     "interact_hint": "Гардероб — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Хозяин переоделся в лохмотья путника — и ушёл."
     },
     "type": "wooden_chest",
     "id": "gostinaya_garderob"
    },
    {
     "id": "atm_gostinaya_kreslo",
     "name": "Кресло у окна",
     "type": "living_sofa",
     "is_agent": false,
     "description": "Кресло, из которого Бильбо и Гэндальф глядели вечером на запад, на цветущий сад.",
     "inspect_text": "Тёмно-алые львиные зевы и золотистые подсолнухи подступают к круглым окошкам.",
     "action_description": "",
     "interact_hint": "Кресло — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Тёмно-алые львиные зевы и золотистые подсолнухи подступают к круглым окошкам."
     }
    }
   ],
   "items": [
    {
     "id": "gostinaya_koltso",
     "name": "Кольцо Бильбо",
     "type": "gold_ring",
     "description": "Золотое Кольцо на цепочке: тяжёлее и старше, чем кажется.",
     "visible_condition": {
      "objective_completed": 8
     },
     "use_effect": {
      "type": "show_description",
      "description": "Надеть? Ни в коем случае: «Не давай никакого повода к толкам»."
     }
    }
   ],
   "atmosphere_objects": [],
   "room_classification": {
    "setting": "interior",
    "function": "living_room",
    "style": "rustic",
    "mood": "cozy"
   },
   "id": "gostinaya_torby",
   "exits": [
    {
     "to": "prazdnichnaya_luzhajka",
     "direction": "back",
     "exit_type": "door",
     "label": "-> Праздничная лужайка",
     "action_label": "Вернуться на лужайку"
    },
    {
     "to": "kabinet_torby",
     "direction": "forward",
     "exit_type": "door",
     "label": "-> Кабинет",
     "action_label": "Пройти в кабинет, где разбирают бумаги"
    },
    {
     "to": "sad_kruchi",
     "direction": "right",
     "exit_type": "door",
     "label": "-> Сад Кручи",
     "action_label": "Выйти в вечерний сад",
     "pass_condition": {
      "objective_completed": [
       11
      ]
     },
     "pass_refusals": [
      {
       "text": "В сад — потом: в кабинете ждут Лякошели и Мерри.",
       "conditions": {
        "not": {
         "objective_completed": 11
        }
       }
      }
     ]
    }
   ],
   "triggers": [
    {
     "id": "trigger_6",
     "type": "enter_location",
     "target": "gostinaya_torby",
     "objective_id": 6,
     "conditions": {}
    },
    {
     "id": "trigger_7",
     "type": "pickup_item",
     "target": "gostinaya_konvert",
     "objective_id": 7,
     "conditions": {}
    },
    {
     "id": "trigger_8",
     "type": "use_item",
     "target": "gostinaya_konvert",
     "objective_id": 8,
     "conditions": {}
    },
    {
     "id": "trigger_9",
     "type": "pickup_item",
     "target": "gostinaya_koltso",
     "objective_id": 9,
     "conditions": {}
    }
   ],
   "loc_type": "indoor",
   "rooms_layout": {
    "vibe": "опустевшая нора после праздника",
    "description": "Круглая гостиная с камином и креслами",
    "view_type": "side",
    "wall_theme": "wood",
    "floor_theme": "wooden",
    "wall_decor": [
     {
      "type": "wall_mirror",
      "name": "Зеркало",
      "x": 14
     },
     {
      "type": "landscape_painting",
      "name": "Картина",
      "x": 50
     }
    ],
    "ceiling_decor": [],
    "floor_items": [
     {
      "type": "stone_fireplace",
      "name": "Камин",
      "x": 22
     },
     {
      "type": "living_sofa",
      "name": "Кресло",
      "x": 42
     },
     {
      "type": "wooden_chest",
      "name": "Гардероб",
      "x": 56
     }
    ],
    "rooms": [
     {
      "x": 5,
      "width": 8,
      "height": 4,
      "floor_theme": "wooden",
      "wall_theme": "wood",
      "description": "Основная часть гостиной"
     }
    ],
    "doors": [
     {
      "x": 0,
      "side": "left"
     },
     {
      "x": 59,
      "side": "right"
     }
    ],
    "decor_items": [
     {
      "type": "stone_fireplace",
      "name": "Камин",
      "x": 22
     },
     {
      "type": "living_sofa",
      "name": "Кресло",
      "x": 42
     },
     {
      "type": "wooden_chest",
      "name": "Гардероб",
      "x": 56
     },
     {
      "type": "wall_mirror",
      "name": "Зеркало",
      "x": 14
     }
    ],
    "decor_pool": [
     "stone_fireplace",
     "living_sofa",
     "wooden_chest",
     "wall_mirror"
    ]
   },
   "bg_color": "#8A6A4A",
   "wall_theme": "wood",
   "floor_theme": "wooden"
  },
  {
   "name": "Кабинет",
   "description": "Кабинет с круглым окном: Фродо разбирает бумаги, Мерри отшивает гостей, а Лякошели всё ещё надеются урвать Торбу.",
   "area": "нора",
   "entities": [
    {
     "name": "Оддо",
     "is_agent": true,
     "description": "Оддо Лякошель громогласно требует «этого племянничка Бильбо» и объяснений.",
     "interact_hint": "Оддо — поговорить",
     "dialogues": [
      7
     ],
     "conditional_dialogues": [],
     "character": "Оддо",
     "archetype": "human_adult_male",
     "id": "kabinet_oddo",
     "on_interact": {}
    },
    {
     "name": "Любелия",
     "is_agent": true,
     "description": "Любелия обшаривает углы и выстукивает стены и полы.",
     "interact_hint": "Любелия — поговорить",
     "dialogues": [
      9
     ],
     "conditional_dialogues": [],
     "character": "Любелия",
     "archetype": "human_elderly_female",
     "id": "kabinet_lyubeliya",
     "on_interact": {}
    },
    {
     "name": "Мерри",
     "is_agent": true,
     "description": "Мерри Брендизайк, оставленный за хозяина: развёл руками перед незваными гостями.",
     "interact_hint": "Мерри — поговорить",
     "dialogues": [
      11
     ],
     "conditional_dialogues": [],
     "character": "Мерри",
     "archetype": "human_adult_male",
     "id": "kabinet_merri",
     "on_interact": {}
    },
    {
     "name": "Кипа бумаг",
     "is_agent": false,
     "description": "Стол, заваленный бумагами: приглашения, ответы, завещание с восемью подписями красными чернилами.",
     "inspect_text": "Всё в завещании ясно и правильно — положенные восемь свидетелей аккуратно расписались.",
     "interact_hint": "Бумаги — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Всё в завещании ясно и правильно — положенные восемь свидетелей аккуратно расписались."
     },
     "type": "decor_book",
     "id": "kabinet_bumagi"
    },
    {
     "id": "atm_kabinet_zont_lyubelii",
     "name": "Зонтик в прихожей",
     "type": "wooden_chest",
     "is_agent": false,
     "description": "Зонт Любелии, в который «случайно завалились» несколько небольших, но ценных приобретений.",
     "inspect_text": "Твёрдой рукой ты избавил её от ценностей — и от зонтика заодно.",
     "action_description": "",
     "interact_hint": "Зонтик — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Твёрдой рукой ты избавил её от ценностей — и от зонтика заодно."
     }
    }
   ],
   "items": [],
   "atmosphere_objects": [],
   "room_classification": {
    "setting": "interior",
    "function": "other",
    "style": "fairytale",
    "mood": "peaceful"
   },
   "id": "kabinet_torby",
   "exits": [
    {
     "to": "gostinaya_torby",
     "direction": "back",
     "exit_type": "door",
     "label": "-> Гостиная Торбы",
     "action_label": "Вернуться в гостиную"
    }
   ],
   "triggers": [],
   "loc_type": "indoor",
   "rooms_layout": {
    "vibe": "кабинет с бумагами",
    "description": "Кабинет с письменным столом и книгами",
    "view_type": "side",
    "wall_theme": "wood",
    "floor_theme": "wooden",
    "wall_decor": [
     {
      "type": "decor_bookshelf",
      "name": "Полка",
      "x": 12
     },
     {
      "type": "still_life_painting",
      "name": "Картина",
      "x": 52
     }
    ],
    "ceiling_decor": [],
    "floor_items": [
     {
      "type": "wooden_desk",
      "name": "Стол",
      "x": 24
     },
     {
      "type": "decor_book",
      "name": "Бумаги",
      "x": 40
     },
     {
      "type": "living_sofa",
      "name": "Кресло",
      "x": 56
     }
    ],
    "rooms": [
     {
      "x": 5,
      "width": 8,
      "height": 4,
      "floor_theme": "wooden",
      "wall_theme": "wood",
      "description": "Основная часть кабинета"
     }
    ],
    "doors": [
     {
      "x": 0,
      "side": "left"
     },
     {
      "x": 59,
      "side": "right"
     }
    ],
    "decor_items": [
     {
      "type": "wooden_desk",
      "name": "Стол",
      "x": 24
     },
     {
      "type": "decor_book",
      "name": "Бумаги",
      "x": 40
     },
     {
      "type": "living_sofa",
      "name": "Кресло",
      "x": 56
     },
     {
      "type": "decor_bookshelf",
      "name": "Полка",
      "x": 12
     }
    ],
    "decor_pool": [
     "wooden_desk",
     "decor_book",
     "living_sofa",
     "decor_bookshelf"
    ]
   },
   "bg_color": "#A08060",
   "wall_theme": "wood",
   "floor_theme": "wooden"
  },
  {
   "name": "Сад Кручи",
   "description": "Вечерний сад за круглыми окнами: львиные зевы, подсолнухи, настурции — и сумерки, в которых серый плащ мага растворяется мгновенно.",
   "area": "сад",
   "entities": [
    {
     "name": "Гэндальф",
     "is_agent": true,
     "description": "Маг, которого пригибает к земле какая-то тяжкая ноша: он ушёл не сразу — сказать Фродо пару слов.",
     "interact_hint": "Гэндальф — поговорить",
     "dialogues": [
      13
     ],
     "conditional_dialogues": [],
     "character": "Гэндальф",
     "archetype": "human_elderly_male",
     "id": "sad_gandalf",
     "on_interact": {}
    },
    {
     "id": "atm_sad_lviny_zevy",
     "name": "Львиные зевы",
     "type": "wildflower_patch",
     "is_agent": false,
     "description": "Тёмно-алые львиные зевы подступают к самым круглым окошкам норы.",
     "inspect_text": "Цветущий сад, на который глядели Бильбо и Гэндальф в последний вечер.",
     "action_description": "",
     "interact_hint": "Цветы — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Цветущий сад, на который глядели Бильбо и Гэндальф в последний вечер."
     }
    },
    {
     "id": "atm_sad_kalitka",
     "name": "Садовая калитка",
     "type": "wooden_gate",
     "is_agent": false,
     "description": "Калитка, за которой широким шагом уходит серый плащ.",
     "inspect_text": "Они расстались надолго.",
     "action_description": "",
     "interact_hint": "Калитка — осмотреть",
     "dialogues": [],
     "conditional_dialogues": [],
     "on_interact": {
      "type": "show_description",
      "description": "Они расстались надолго."
     }
    }
   ],
   "items": [],
   "atmosphere_objects": [],
   "room_classification": {
    "setting": "outdoor_natural",
    "function": "garden",
    "style": "rustic",
    "mood": "peaceful"
   },
   "id": "sad_kruchi",
   "exits": [
    {
     "to": "gostinaya_torby",
     "direction": "back",
     "exit_type": "door",
     "label": "-> Гостиная Торбы",
     "action_label": "Вернуться в нору"
    }
   ],
   "triggers": [],
   "loc_type": "outdoor",
   "rooms_layout": {
    "vibe": "вечерний сад в сумерках",
    "description": "Сад с цветами и калиткой",
    "view_type": "side",
    "wall_theme": "wood",
    "floor_theme": "grass",
    "wall_decor": [
     {
      "type": "wooden_gate",
      "name": "Калитка",
      "x": 50
     }
    ],
    "ceiling_decor": [],
    "floor_items": [
     {
      "type": "wildflower_patch",
      "name": "Цветы",
      "x": 15
     },
     {
      "type": "stone_lantern",
      "name": "Фонарь",
      "x": 35
     },
     {
      "type": "park_bench",
      "name": "Скамья",
      "x": 55
     }
    ],
    "rooms": [
     {
      "x": 5,
      "width": 8,
      "height": 4,
      "floor_theme": "grass",
      "wall_theme": "wood",
      "description": "Основная часть сада"
     }
    ],
    "doors": [
     {
      "x": 0,
      "side": "left"
     },
     {
      "x": 59,
      "side": "right"
     }
    ],
    "decor_items": [
     {
      "type": "wildflower_patch",
      "name": "Цветы",
      "x": 15
     },
     {
      "type": "stone_lantern",
      "name": "Фонарь",
      "x": 35
     },
     {
      "type": "park_bench",
      "name": "Скамья",
      "x": 55
     },
     {
      "type": "wooden_gate",
      "name": "Калитка",
      "x": 50
     }
    ],
    "decor_pool": [
     "wildflower_patch",
     "stone_lantern",
     "park_bench",
     "wooden_gate"
    ]
   },
   "bg_color": "#4a7a3a",
   "wall_theme": "wood",
   "floor_theme": "grass"
  }
 ],
 "completion": {
  "title": "Кольцо у Фродо",
  "description": "Фродо — хозяин Торбы и Хранитель Кольца: завещание прочитано, Лякошели выпровожены, Кольцо спрятано подальше. Гэндальф растворился в сумерках, наказав ждать его в самое неподходящее время.",
  "endings": [
   {
    "state": "consequences",
    "conditions": {
     "any": [
      {
       "objective_completed": 14
      }
     ]
    },
    "title": "Искушение исчезнуть",
    "description": "Фродо чуть не надел Кольцо, чтобы исчезнуть от Лякошелей, — и получил от Гэндальфа самый строгий его нагоняй: владельцы волшебных сокровищ рано или поздно становятся на себя непохожими."
   },
   {
    "state": "bonus",
    "conditions": {
     "any": [
      {
       "objective_completed": 15
      },
      {
       "objective_completed": 16
      }
     ]
    },
    "title": "Хозяин со слухами",
    "description": "Фродо знал Хоббитанию как свои пять пальцев: слушал Жихаря в «Укромном уголке» и проводил Любелию со всеми её зонтичными приобретениями. Слухи о Торбе он держит под контролем — как и советовал маг."
   },
   {
    "state": "detour",
    "conditions": {
     "any": [
      {
       "objective_completed": 4
      }
     ]
    },
    "title": "Сто сорок четыре ошарашенных хоббита",
    "description": "Речь Бильбо закончилась так, как не заканчивалась ни одна речь в Хоббитании: вспышка — и хозяина нет. Старый Оддо Шерстолап снял ноги со стола и затопотал."
   }
  ],
  "final_objective_id": 13
 },
 "objectives": [
  {
   "id": 1,
   "description": "Прибыть к Белым воротам Торбы",
   "type": "exploration",
   "dependencies": [],
   "on_complete": [],
   "story_task": "Попасть на Угощение века",
   "target": "belye_vorota"
  },
  {
   "id": 2,
   "description": "Выйти на праздничную лужайку",
   "type": "exploration",
   "dependencies": [
    1
   ],
   "on_complete": [],
   "story_task": "Попасть на Угощение века",
   "target": "prazdnichnaya_luzhajka"
  },
  {
   "id": 3,
   "description": "Выслушать прощальную речь Бильбо",
   "type": "dialogue",
   "dependencies": [
    2
   ],
   "on_complete": [],
   "story_task": "Попасть на Угощение века",
   "target": "luzhajka_bilbo"
  },
  {
   "id": 4,
   "description": "Бильбо надел Кольцо и исчез",
   "type": "event",
   "dependencies": [],
   "on_complete": [],
   "hidden": true
  },
  {
   "id": 5,
   "description": "Прийти в себя с Гэндальфом",
   "type": "dialogue",
   "dependencies": [
    3
   ],
   "on_complete": [],
   "story_task": "Наследство Бильбо",
   "target": "luzhajka_gandalf"
  },
  {
   "id": 6,
   "description": "Войти в опустевшую нору",
   "type": "exploration",
   "dependencies": [],
   "on_complete": [],
   "story_task": "Наследство Бильбо",
   "target": "gostinaya_torby"
  },
  {
   "id": 7,
   "description": "Взять с каминной доски запечатанный конверт",
   "type": "item",
   "dependencies": [
    6
   ],
   "on_complete": [],
   "story_task": "Наследство Бильбо",
   "target": "gostinaya_konvert"
  },
  {
   "id": 8,
   "description": "Распечатать конверт: завещание и Кольцо",
   "type": "use_item",
   "dependencies": [
    7
   ],
   "on_complete": [],
   "story_task": "Наследство Бильбо",
   "target": "gostinaya_konvert"
  },
  {
   "id": 9,
   "description": "Взять золотое Кольцо с каминной доски",
   "type": "item",
   "dependencies": [
    8
   ],
   "on_complete": [],
   "story_task": "Новый Хранитель",
   "target": "gostinaya_koltso"
  },
  {
   "id": 10,
   "description": "Выдержать натиск Оддо Лякошеля",
   "type": "dialogue",
   "dependencies": [
    9
   ],
   "on_complete": [],
   "story_task": "Защитить Торбу",
   "target": "kabinet_oddo"
  },
  {
   "id": 11,
   "description": "Попросить Мерри закрыть лавочку",
   "type": "dialogue",
   "dependencies": [
    10
   ],
   "on_complete": [],
   "story_task": "Защитить Торбу",
   "target": "kabinet_merri"
  },
  {
   "id": 12,
   "description": "Выслушать предупреждение Гэндальфа о Кольце",
   "type": "dialogue",
   "dependencies": [
    11
   ],
   "on_complete": [],
   "story_task": "Новый Хранитель",
   "target": "sad_gandalf"
  },
  {
   "id": 13,
   "description": "Спрятать Кольцо и ждать Гэндальфа",
   "type": "final",
   "dependencies": [
    1,
    2,
    3,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12
   ],
   "on_complete": [],
   "story_task": "Новый Хранитель",
   "target": "sad_kruchi"
  },
  {
   "id": 14,
   "description": "Промах: подумать о том, чтобы надеть Кольцо",
   "type": "event",
   "dependencies": [],
   "on_complete": [],
   "hidden": true
  },
  {
   "id": 15,
   "description": "Проводить Любелию с её зонтиком",
   "type": "dialogue",
   "dependencies": [
    10
   ],
   "on_complete": [],
   "story_task": "Защитить Торбу",
   "target": "kabinet_lyubeliya",
   "optional": true
  },
  {
   "id": 16,
   "description": "Послушать Жихаря в «Укромном уголке»",
   "type": "dialogue",
   "dependencies": [],
   "on_complete": [],
   "story_task": "Попасть на Угощение века",
   "target": "tavern_zhihar",
   "optional": true
  }
 ],
 "triggers": [],
 "dialogues": [
  {
   "speaker": "System",
   "text": "Стоял ясный, погожий сентябрь: вся Хоббитания говорила только об Угощении.",
   "choices": [],
   "gives_item": null
  },
  {
   "speaker": "Жихарь",
   "text": "Уж как ни говори про господина Бильбо, а хоббит он первостатейный и вежливость очень даже соблюдает. А уж торжество готовится — во!",
   "choices": [
    {
     "text": "Что за праздник готовится, Жихарь?",
     "next": [
      2
     ],
     "complete_objective": 16
    }
   ],
   "gives_item": null
  },
  {
   "speaker": "Жихарь",
   "text": "На Угощение пригласят всех до единого, и всем будут подарки! А огненной потехи в Хоббитании не бывало лет сто — сам Гэндальф пожалует.",
   "choices": [],
   "gives_item": null
  },
  {
   "speaker": "Бильбо",
   "text": "Любезные мои! Позвольте, я скажу пару слов... Я тронут вашим вниманием. Полагаю, вы все знаете, зачем мы собрались: я должен сообщить нечто ОЧЕНЬ ВАЖНОЕ.",
   "choices": [
    {
     "text": "(слушать речь вместе со всеми)",
     "next": [
      4
     ],
     "complete_objective": 3,
     "conditions": {
      "objective_completed": [
       2
      ]
     }
    },
    {
     "text": "(следить за золотым Кольцом, которое он трогает в кармане)",
     "next": [
      4
     ],
     "complete_objective": 4,
     "conditions": {
      "objective_completed": [
       2
      ]
     }
    }
   ],
   "gives_item": null
  },
  {
   "speaker": "Бильбо",
   "text": "Я решил уйти. Сейчас. ПРОЩАЙТЕ! — Он ступил со стула и исчез: вспыхнул ослепительный огонь, и сто сорок четыре ошарашенных хоббита замерли.",
   "choices": [],
   "gives_item": null
  },
  {
   "speaker": "Гэндальф",
   "text": "Держи себя в руках, Фродо. Он всегда был сумасбродом — но на этот раз дело серьёзнее. Иди в нору: он оставил тебе кое-что на каминной доске.",
   "choices": [
    {
     "text": "Что он оставил, Гэндальф?",
     "next": [
      6
     ],
     "complete_objective": 5,
     "conditions": {
      "objective_completed": [
       3
      ]
     }
    }
   ],
   "gives_item": null
  },
  {
   "speaker": "Гэндальф",
   "text": "Увидишь сам. Я пока останусь: гости расходиться не хотят, а мне надо кое-что обдумать. Кое-что... очень старое.",
   "choices": [],
   "gives_item": null
  },
  {
   "speaker": "Оддо",
   "text": "Наконец-то! Я требую объяснений: почему всё оставлено ЭТОМУ племянничку? Торба по праву должна была достаться мне!",
   "choices": [
    {
     "text": "Завещание в полном порядке, Оддо. Восемь свидетелей.",
     "next": [
      8
     ],
     "complete_objective": 10,
     "conditions": {
      "objective_completed": [
       9
      ]
     }
    }
   ],
   "gives_item": null
  },
  {
   "speaker": "Оддо",
   "text": "(перечитывает завещание и фыркает) Всё ясно и правильно, будь оно неладно... Любелия! Идём! Мы ещё оспорим это!",
   "choices": [],
   "gives_item": null
  },
  {
   "speaker": "Любелия",
   "text": "(обшаривает углы и простукивает полы) Какие у вас глубокомысленные коврики, дорогой Фродо... И занавесочки изумительные.",
   "choices": [
    {
     "text": "Вы обронили несколько вещиц в зонтик, Любелия.",
     "next": [
      10
     ],
     "complete_objective": 15,
     "conditions": {
      "objective_completed": [
       10
      ]
     }
    }
   ],
   "gives_item": null
  },
  {
   "speaker": "Любелия",
   "text": "(оборачиваясь на крыльце) Дорого же ты заплатишь за это, Торбинс из Торбы! Ты ещё вспомнишь мои слова!",
   "choices": [],
   "gives_item": null
  },
  {
   "speaker": "Мерри",
   "text": "Закрывать лавочку, Фродо? Пускай хоть с тараном придут — не откроем!",
   "choices": [
    {
     "text": "Запри дверь, Мерри. Хватит на сегодня.",
     "next": [
      12
     ],
     "complete_objective": 11,
     "conditions": {
      "objective_completed": [
       10
      ]
     }
    }
   ],
   "gives_item": null
  },
  {
   "speaker": "Мерри",
   "text": "Есть, хозяин! Эх, какой был праздник... Пойдём, я тебя чаем напою.",
   "choices": [],
   "gives_item": null
  },
  {
   "speaker": "Гэндальф",
   "text": "Не надел, и молодец! Поосторожнее с Кольцом, Фродо: оно не для того сделано, чтоб ты исчезал, когда тебе удобно. У него могут быть и другие свойства.",
   "choices": [
    {
     "text": "Что в нём опасного, Гэндальф?",
     "next": [
      14
     ],
     "complete_objective": 12,
     "conditions": {
      "objective_completed": [
       11
      ]
     }
    },
    {
     "text": "Может, надеть его — и исчезнуть от Лякошелей?",
     "next": [
      15
     ],
     "conditions": {
      "objective_completed": [
       11
      ]
     },
     "effect": [
      {
       "type": "complete_objective",
       "objective_id": 14
      }
     ]
    }
   ],
   "gives_item": null
  },
  {
   "speaker": "Гэндальф",
   "text": "Пока не знаю — и говорить не буду. Спрячь его подальше и не давай повода к толкам. Жди меня в самое неподходящее время.",
   "choices": [
    {
     "text": "Прощай, Гэндальф...",
     "next": [
      16
     ]
    }
   ],
   "gives_item": null
  },
  {
   "speaker": "Гэндальф",
   "text": "Не смей! Владельцы волшебных сокровищ рано или поздно становятся на себя непохожими. Береги его — и не болтай о нём.",
   "choices": [
    {
     "text": "Прости. Что мне делать с Кольцом?",
     "next": [
      14
     ],
     "complete_objective": 12,
     "conditions": {
      "objective_completed": [
       11
      ]
     }
    }
   ],
   "gives_item": null
  },
  {
   "speaker": "Гэндальф",
   "text": "Серый плащ вмиг растворился в сумерках. Они расстались надолго.",
   "choices": [],
   "gives_item": null
  }
 ],
 "items": []
}