Skip to content

A project that extracts Honkai: Star Rail text corpus

Notifications You must be signed in to change notification settings

mrzjy/StarrailDialog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StarrailDialogue

This is a small personal project that extracts Honkai: Star Rail text corpus (including dialogue and miscellaneous items).

本项目用于抽取崩坏:星穹铁道游戏的对话等文本语料

Other projects you might be interested in:

  • GenshinDialog: Same but for Genshin Impact
  • hoyo_public_wiki_parser: Parse Hoyoverse public wiki data
    • Recommended: Typically this is where you could get more complete dialogues throughout various quests, together with quest descriptions

Example

# A message with Trailblazor
{
  "contacts": [
    {
      "Name": "黑塔",
      "SignatureText": "此号停用 | 商务联系:艾丝妲",
      "ContactsCamp": "空间站「黑塔」"
    }
  ],
  "messages": [
    {
      "Sender": "黑塔",
      "MainText": "嘿,{NICKNAME},我是黑塔,有好事找你"
    },
    {
      "Sender": "黑塔",
      "MainText": "速来我的办公室!等你!"
    },
    {
      "Sender": "PlayerAuto",
      "MainText": "?"
    },
    {
      "Sender": "Player",
      "MainText": "可你就在我旁边啊",
    },
    {
      "Sender": "Player",
      "MainText": "你直接说不就行了",
    },
    {
      "Sender": "黑塔",
      "MainText": "[自动回复]您好,我现在有事不在,一会也不会和您联系",
    },
    {
      "Sender": "PlayerAuto",
      "MainText": "? ?",
    },
    {
      "Sender": "System",
      "MainText": "{NICKNAME}",
    }
  ]
}

Disclaimer

While this project depends on the legendary Dim's StarRailData project, there are other more plausible data sources to achieve the same thing:

fandom.png

Steps

The logic is simple:

  1. Git clone Dim's StarRailData
  2. Git clone and cd to this repo
  3. Run the extraction codes by specifying Dim's starrail data path

Feature Support

What data can be extracted:

  • Dialogue
    • Messages: Text communications that the Trailblazer receives from other Characters and NPCs. [Ref]
    • Train visitor: Characters will periodically appear in the Astral Express and can be interacted with. [Ref]
    • Story
    • etc
  • Misc
    • Books
    • Missions
    • Items
    • Maze buffs
    • avatars
    • etc

Note:

  • Extraction results are stored in the "data" folder. I won't provide full extraction results, please run the code yourself to get full extracted data.
  • Bugs or data problems possibly exist, feel free to PR (although the author is not very active...)
  • There are string variables (e.g., "{NICKNAME}" stands for trailblazer's name) in the corpus.
  • Known Issues:
    • There is incorrect / non-existent text hash, hence some texts would be shown as "N/A"

Dialogues

The resulting extraction remains structured, waiting for you to be further processed.

  • Code
python get_dialogues.py --lang=CHS --repo=PATH_TO_STARRAIL_DATA
  • Example
# messages.jsonl
{"ID": 1150300, "StartMessageItemIDList": [115030004], "IsPerformMessage": true, "contacts": [{"ID": 1004, "Name": "瓦尔特", "IconPath": "SpriteOutput/AvatarRoundIcon/1004.png", "SignatureText": "列车组各位,随时保持联系", "ContactsType": 1, "ContactsCamp": "星穹列车"}], "messages": [{"ID": 115030004, "Sender": "瓦尔特", "ItemType": "Text", "MainText": "初步的研究结果出来了。这种空间扭曲现象催生的实体被称作「拟造花萼」", "OptionText": "N/A", "NextItemIDList": [115030005], "SectionID": 1150300}, {"ID": 115030005, "Sender": "瓦尔特", "ItemType": "Text", "MainText": "这种实体中可能存有具备实用价值的现实资料。你们与其接触时要倍加小心,空间扭曲现象的本质就是无法解释的混沌,很难判断其中是否还蕴藏着某些危险要素", "OptionText": "N/A", "NextItemIDList": [], "SectionID": 1150300}]}

# train_visitor.jsonl
[{"type": "RPG.GameCore.PlayAndWaitSimpleTalk", "conversations": [{"TalkSentenceID": 500100102, "ProtectTime": 0.3, "role": "艾丝妲", "content": "如果在列车的这个位置布设空间望远镜,应该能观测到更短的波长……", "type": "PlayAndWaitSimpleTalk"}, {"TalkSentenceID": 500100103, "ProtectTime": 0.3, "role": "艾丝妲", "content": "嗯,方向感觉还不错。", "type": "PlayAndWaitSimpleTalk"}]}, {"type": "RPG.GameCore.PlayOptionTalk", "options": [{"TalkSentenceID": 500100104, "next_TalkSentenceID": "500100105", "role": "{NICKNAME}", "content": "有新论文选题?"}, {"TalkSentenceID": 500100107, "next_TalkSentenceID": "500100108", "role": "{NICKNAME}", "content": "刚刚在工作吗?"}]}, {"type": "RPG.GameCore.PlayAndWaitSimpleTalk", "conversations": [{"TalkSentenceID": 500100105, "ProtectTime": 0.3, "role": "艾丝妲", "content": "是呀。之前苦思冥想不得其法,一登上列车,想法就接二连三地冒出来,灵感真是折磨人的小妖怪。", "type": "PlayAndWaitSimpleTalk"}, {"TalkSentenceID": 500100106, "ProtectTime": 0.3, "role": "艾丝妲", "content": "这篇论文或许和列车有关…到时候还要请你们接受我的采访,多多提供一手资料。", "type": "PlayAndWaitSimpleTalk"}], "next_TalkSentenceID": 500100110}, {"type": "RPG.GameCore.PlayAndWaitSimpleTalk", "conversations": [{"TalkSentenceID": 500100108, "ProtectTime": 0.3, "role": "艾丝妲", "content": "当然不是啦。我又不是以工作名义来参观的,而是受到了{NICKNAME}的邀请,对吧?", "type": "PlayAndWaitSimpleTalk"}, {"TalkSentenceID": 500100109, "ProtectTime": 0.3, "role": "艾丝妲", "content": "所以在登上列车的那一刻,我就迫不及待调整至休假模式,全力睁大眼睛,寻找下一个论文选题。", "type": "PlayAndWaitSimpleTalk"}], "next_TalkSentenceID": 500100110}, {"type": "RPG.GameCore.PlayAndWaitSimpleTalk", "conversations": [{"TalkSentenceID": 500100110, "ProtectTime": 0.3, "role": "艾丝妲", "content": "——这些都不是重点啦。", "type": "PlayAndWaitSimpleTalk"}]}, {"type": "RPG.GameCore.PlayOptionTalk", "options": [{"TalkSentenceID": 500100111, "next_TalkSentenceID": "500100112", "role": "{NICKNAME}", "content": "今天就好好享受列车时光吧。"}]}, {"type": "RPG.GameCore.PlayAndWaitSimpleTalk", "conversations": [{"TalkSentenceID": 500100112, "ProtectTime": 0.3, "role": "艾丝妲", "content": "说得没错。", "type": "PlayAndWaitSimpleTalk"}]}, {"type": "RPG.GameCore.PlayAndWaitSimpleTalk", "conversations": [{"TalkSentenceID": 500100113, "ProtectTime": 0.3, "role": "艾丝妲", "content": "虽然之前也来过列车,不过有{NICKNAME}在的列车,我还是第一次来呢。", "type": "PlayAndWaitSimpleTalk"}, {"TalkSentenceID": 500100114, "ProtectTime": 0.3, "role": "艾丝妲", "content": "我很期待哦。", "type": "PlayAndWaitSimpleTalk"}]}, {"type": "RPG.GameCore.EndPerformance"}]

# story
[{"type": "RPG.GameCore.PlayOptionTalk", "options": [{"TalkSentenceID": 100020113, "next_TalkSentenceID": "100020113", "role": "{NICKNAME}", "content": "这…是…哪里?"}, {"TalkSentenceID": 100020115, "next_TalkSentenceID": "100020115", "role": "{NICKNAME}", "content": "卡芙…卡?"}, {"TalkSentenceID": 100020118, "next_TalkSentenceID": "100020118", "role": "{NICKNAME}", "content": "…你是…谁?"}]}, {"type": "RPG.GameCore.WaitCustomString", "TalkSentenceID": 100020113, "role": "{NICKNAME}", "content": "这…是…哪里?", "next_TalkSentenceID": 100020121}, {"type": "RPG.GameCore.WaitCustomString", "TalkSentenceID": 100020115, "role": "{NICKNAME}", "content": "卡芙…卡?", "next_TalkSentenceID": 100020121}, {"type": "RPG.GameCore.WaitCustomString", "TalkSentenceID": 100020118, "role": "{NICKNAME}", "content": "…你是…谁?", "next_TalkSentenceID": 100020121}, {"type": "RPG.GameCore.WaitCustomString", "TalkSentenceID": 100020121, "role": "卡芙卡", "content": "听我说:你的脑袋里现在一片混沌。你不清楚自己是谁,为什么在这儿,接下来要做什么;你觉得我很熟悉,却不清楚该不该信任我——"}, {"type": "RPG.GameCore.PlayOptionTalk", "options": [{"TalkSentenceID": 100020126, "next_TalkSentenceID": "100020126", "role": "{NICKNAME}", "content": "喜欢…大概。"}, {"TalkSentenceID": 100020130, "next_TalkSentenceID": "100020130", "role": "{NICKNAME}", "content": "我不要…"}, {"TalkSentenceID": 100020133, "next_TalkSentenceID": "100020133", "role": "{NICKNAME}", "content": "你要去哪…"}]}, {"type": "RPG.GameCore.WaitCustomString", "TalkSentenceID": 100020126, "role": "{NICKNAME}", "content": "喜欢…大概。", "next_TalkSentenceID": 100020136}, {"type": "RPG.GameCore.WaitCustomString", "TalkSentenceID": 100020130, "role": "{NICKNAME}", "content": "我不要…", "next_TalkSentenceID": 100020136}, {"type": "RPG.GameCore.WaitCustomString", "TalkSentenceID": 100020133, "role": "{NICKNAME}", "content": "你要去哪…", "next_TalkSentenceID": 100020136}, {"type": "RPG.GameCore.WaitCustomString", "TalkSentenceID": 100020136, "role": "银狼", "content": "还要说多久?按照剧本,{RUBY_B#「开拓」的旅行者}星穹列车{RUBY_E#}的人就快到了,我们不该跟他们照上面。"}, {"type": "RPG.GameCore.PlayOptionTalk", "options": [{"TalkSentenceID": 100020139, "next_TalkSentenceID": "100020139", "role": "{NICKNAME}", "content": "不,不要…"}, {"TalkSentenceID": 100020140, "next_TalkSentenceID": "100020139", "role": "{NICKNAME}", "content": "别了…"}, {"TalkSentenceID": 100020141, "next_TalkSentenceID": "100020139", "role": "{NICKNAME}", "content": "卡芙…卡…"}]}, {"type": "RPG.GameCore.WaitCustomString", "TalkSentenceID": 100020139, "role": "{NICKNAME}", "content": "不,不要…"}, {"type": "RPG.GameCore.EndPerformance"}]

Known Issues

  1. Some dialogues are incomplete, the relation between different sessions are unknown. (Better check out hoyo_public_wiki_parser to get more complete dialogues within a quest)

Misc

The resulting extraction contains miscellaneous items

  • Code
python get_misc.py --lang=CHS --repo=PATH_TO_STARRAIL_DATA
  • Example
# avatar.jsonl
{"Himeko": {"basic": {"Name": "Himeko", "Camp": "Astral Express", "AvatarVOTag": "himeko", "DamageType": "Fire", "AvatarBaseType": "Mage", "CV": {"CV_CN": "林簌", "CV_JP": "田中理恵", "CV_KR": "김보나", "CV_EN": "Cia Court"}}, "dialogue_lines": [{"title": "First Meeting", "Voice_M": "Welcome aboard, {NICKNAME}. I'm Himeko, navigator of the Astral Express. I'm sure we're about to embark on a fascinating journey together.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Greeting", "Voice_M": "Hey there. Tired? How about a coffee?", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Parting", "Voice_M": "Relax, Pom-Pom and I are here to take care of the train.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "About Self: Relationship With the Astral Express", "Voice_M": "The Express and I are like old friends — we've helped each other a lot. I fixed it so that it could get back to its original route, and in return it takes me to unknown frontiers.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "About Self: Fixing the Express", "Voice_M": "As far as malfunctions on the train are concerned, I've usually dealt with them before you guys even realize anything's amiss.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Chat: Final Stop", "Voice_M": "I'm speculating, but I think the Express departs from Akivili's home world and returns there before starting the journey anew. So the Express doesn't have a \"final stop\" per se — it's up to you where you disembark.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Hobbies", "Voice_M": "I have a knack for blending different coffee beans. Can I make you a cup? I recommend not adding milk — black coffee is proper coffee.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Annoyances", "Voice_M": "Seems like only Dan Heng has a kind word for my coffee. What do you think? ...Well, I've always thought that bitter is better...", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Something to Share", "Voice_M": "When people live together it seems like nobody ever changes. Only when they're away from each other for a long time do surprising transformations occur...", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Knowledge", "Voice_M": "When we scour the universe for the things we seek, most of the time it's less of a \"Eureka, I found it!\" moment and more of a \"Is this it? What if I'm wrong?\" moment.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "About March 7th", "Voice_M": "If I woke up on the Express without any memories, there's no way I'd recover as quickly as March has. I admire her for that, but I also worry about her... If I'm ever too busy, please do take the time to chat with her.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "About Dan Heng", "Voice_M": "Dan Heng is the cautious type — I think he's gotten used to doing things by himself. He doesn't like to bother or inconvenience others. That's why I asked him to be the train's guard and maintain the data bank. I don't think he'd have joined us if there wasn't anything for him to do.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "About Welt", "Voice_M": "I think Welt's anxious that he can't keep up with you youngsters, but he sure seems young at heart to me...", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "About Pom-Pom", "Voice_M": "To Pom-Pom, I'll always be the train's mechanic, haha.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "About Dan Heng 2", "Voice_M": "He's not so uptight nowadays. I think {NICKNAME} and March helped him understand that relying on others sometimes really isn't a big deal.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Battle Begins: Weakness Break", "Voice_M": "I have something for you.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Battle Begins: Danger Alert", "Voice_M": "Be careful.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Turn Begins 1", "Voice_M": "Combat is a series of precise machinations.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Turn Begins 2", "Voice_M": "Time for a detailed overhaul.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Turn Idling", "Voice_M": "It won't be so easy next time.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Basic ATK", "Voice_M": "One at a time!", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Skill", "Voice_M": "Come one, come all.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Hit by Light Attack", "Voice_M": "Barely felt it.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Hit by Heavy Attack", "Voice_M": "You've got a lot of nerve.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Ultimate: Activate", "Voice_M": "Perhaps you still don't understand...", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Ultimate: Unleash", "Voice_M": "Humanity never conceals its desire to control the heavens... And I'm no exception.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Talent", "Voice_M": "You won't get away!", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Downed", "Voice_M": "I was... just getting... started...", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Return to Battle", "Voice_M": "Did you miss me?", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Health Recovery", "Voice_M": "Much obliged.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Technique", "Voice_M": "Burn away.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Battle Won", "Voice_M": "One step closer to the stars.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Treasure Opening", "Voice_M": "This is also the reward of trailblazing.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Successful Puzzle-Solving", "Voice_M": "Sometimes you gotta do things yourself.", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Enemy Target Found", "Voice_M": "Practice target?", "Voice_F": "N/A", "UnlockDesc": "N/A"}, {"title": "Returning to Town", "Voice_M": "Fancy a coffee?", "Voice_F": "N/A", "UnlockDesc": "N/A"}], "story": {"1": "An adventurous scientist who encountered the Astral Express as a young woman when it got stranded in her homeworld.\\nYears later, when Himeko finally repaired the Express and began her journey into the stars, she realized that this is only the beginning. On her journey to trailblaze new worlds, she would need many more companions...\\nAnd while they may have different destinations, they all gaze at the same starry sky.", "2": "The girl is lost.\\n\\nShe can't remember when she became lost. She just walked and walked, on and on into the dark night, chasing the sun and the moon, over and over again — until she falls.\\n\\nShe remembers what she looked like as a college freshman, remembers her chosen major — interstellar travel dynamics — and now she's lying face down in the mud.\\n\\nShe looks up to the stars, and just then sees meteors streaming down: one, two, three... And then more, smaller ones, flickering and flashing ever so finely before a magnificent blaze tore open the night.\\n\\nHer limbs drag her forward, leading her on to where the land meets the ocean. At the shoreline, the waters jostle against her like how the tide treats that stranded Express, alone and lost.\\n\\nShe walks in and see the scenery outside beginning to change. The Express shows her a myriad of magnificent worlds. They are faraway, beyond her homeworld, yet also close enough to be a simple train ride.\\n\\nShe tries to repair the Express. It starts up only briefly, but it is enough to skid across the sky of her home. She immediately sees the path home. From that altitude, the journey is so short, and even the ocean of her homeworld appears so insignificant.\\n\\nIt asked her whether she'd like to travel together. She wonders what kind of journey that would be.\\n\\n\"A journey to the beginning.\"\\n\"Let's go then.\" Without hesitation, the girl replied, \"Just as you brought me home, so would I take you home, too.\"", "3": "Himeko has a suitcase.\\n\\nThis suitcase is her treasure trove. Previously, she'd filled it with all kinds of train repair tools to fix up the Express. But now, it's packed with a molecular saw, an escaped satellite, and countless other contraptions — the embodiment of her whims and the proof of her resolute will.\\n\\nNo travel companion is more faithful to her than this suitcase. Passengers come and go on the Express, and perhaps not even \"the conductor\" would be able to accompany her and the Express from start to finish.\\n\\nBut she doesn't care. She didn't care when that pretentious blond man left without saying goodbye, just like how she didn't care about her distant homeworld and old friends.\\n\\nShe knows that this journey is lonely. Even if she could get to know like-minded travel companions, even if they showed her generous grace, even if she could witness the end of a complete journey with those companions — that's all just a momentary fluke.\\n\\nShe knows that this journey is lonely. Nobody can follow in the exact same footsteps as anyone else. Nobody can experience for someone else everything that happens along a journey. All she can rely on are her own two eyes and feet.\\n\\nThat's why she stores inside her suitcase all the sights her eyes have witnessed, and all the footprints her feet have left behind.", "4": "Himeko's memory is very good.\\n\\nThe longer the journey gets, the more travel companions she accrues. She can still remember many of them.\\n\\nShe remembers her awkward chit-chats with Pom-Pom, and how the first two passengers aboard the Express were Welt and his blond friend. She remembers how the taciturn Dan Heng defeated the monsters that can swallow stars with just one strike of his lance. She remembers how March 7th had awoken from her icy slumber, all the outfits she'd designed for March, and what March loves the most. She remembers how the Crew arrived at Herta Space Station, how she met {NICKNAME}, and how they'd embarked on a new journey once more.\\n\\nShe remembers the specifications for every single component of the Express and how they're assembled. She remembers when to oil the Express's bearings and when each plant on the Express needs watering. She remembers Pom-Pom's non-negotiable bottom line, and that Welt has rather juvenile hobbies. She remembers that Dan Heng is always pulling all-nighters to organize the data bank, and how March 7th loves to sleep in. She remembers the personality, habits, hobbies, birthdays, and other anniversary days of everyone aboard the Express. And she remembers much, much more.\\n\\nThe greatest pleasure for Himeko is that everyone can safely reach their destination on the Express.\\n\\n\"Traveling always has an end point. When it happens, I'll smile and say goodbye to everyone.\"\\n\\nShe always says that, and she'll definitely remember to do that.\\n\\nIt's memory that has formed the road she came from, and memory that will eventually return her to the seas from whence she came.", "5": "\"What a long journey.\" She says.\\n\\n\"I've been waiting for so, so long.\"████ looks at her: \"It wasn't bad luck that has led you down this path, but wanderlust and curiosity.\"\\n\\n\"Of course,\" she smiles, \"But I've experienced far less than what you've been through.\"\\n\\n\"No, I've never experienced the things you have.\" ████ shakes their head: \"There are as many routes as there are pairs of feet.\"\\n\\n\"Right now, we may be standing in the same place, but we harbor different thoughts and views.\"\\n\\nTogether, they look up to the stars in silence, and just then saw meteors streaming down: one, two, three... And then more, smaller ones, flickering and flashing ever so finely before a magnificent blaze tore open the night.\\n\\nA quiet voice disturbs the still air once more: \"What do you see?\"\\n\\n\"The stars have finished their journey.\" She says.\\n\\n████ laughs: \"I, instead, see that their journey is only just beginning.\"\\n\\nThey do not speak again.\\n\\n\"Let's go back. They're waiting for me.\"\\n\\n████ is silent, then asks: \"Has the journey so far made you happy?\"\\n\\nShe picks up her suitcase and walks back in the direction of the Express without looking back.\\n\\n\"Same as always.\""}, "skill": [{"SkillName": "Sawblade Tuning", "SkillTag": "Single Target", "SkillTypeDesc": "Basic ATK", "levels": [{"1": {"SkillDesc": "Deals Fire DMG equal to 50% of Himeko's ATK to a single enemy.", "SimpleSkillDesc": "Deals minor Fire DMG to a single enemy."}}, {"2": {"SkillDesc": "Deals Fire DMG equal to 60% of Himeko's ATK to a single enemy.", "SimpleSkillDesc": "Deals minor Fire DMG to a single enemy."}}, {"3": {"SkillDesc": "Deals Fire DMG equal to 70% of Himeko's ATK to a single enemy.", "SimpleSkillDesc": "Deals minor Fire DMG to a single enemy."}}, {"4": {"SkillDesc": "Deals Fire DMG equal to 80% of Himeko's ATK to a single enemy.", "SimpleSkillDesc": "Deals minor Fire DMG to a single enemy."}}, {"5": {"SkillDesc": "Deals Fire DMG equal to 90% of Himeko's ATK to a single enemy.", "SimpleSkillDesc": "Deals minor Fire DMG to a single enemy."}}, {"6": {"SkillDesc": "Deals Fire DMG equal to 1% of Himeko's ATK to a single enemy.", "SimpleSkillDesc": "Deals minor Fire DMG to a single enemy."}}, {"7": {"SkillDesc": "Deals Fire DMG equal to 110% of Himeko's ATK to a single enemy.", "SimpleSkillDesc": "Deals minor Fire DMG to a single enemy."}}, {"8": {"SkillDesc": "Deals Fire DMG equal to 120% of Himeko's ATK to a single enemy.", "SimpleSkillDesc": "Deals minor Fire DMG to a single enemy."}}, {"9": {"SkillDesc": "Deals Fire DMG equal to 130% of Himeko's ATK to a single enemy.", "SimpleSkillDesc": "Deals minor Fire DMG to a single enemy."}}]}, {"SkillName": "Molten Detonation", "SkillTag": "Blast", "SkillTypeDesc": "Skill", "levels": [{"1": {"SkillDesc": "Deals Fire DMG equal to 1% of Himeko's ATK to a single enemy and Fire DMG equal to 40% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"2": {"SkillDesc": "Deals Fire DMG equal to 110% of Himeko's ATK to a single enemy and Fire DMG equal to 44% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"3": {"SkillDesc": "Deals Fire DMG equal to 120% of Himeko's ATK to a single enemy and Fire DMG equal to 48% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"4": {"SkillDesc": "Deals Fire DMG equal to 130% of Himeko's ATK to a single enemy and Fire DMG equal to 52% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"5": {"SkillDesc": "Deals Fire DMG equal to 140% of Himeko's ATK to a single enemy and Fire DMG equal to 56% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"6": {"SkillDesc": "Deals Fire DMG equal to 150% of Himeko's ATK to a single enemy and Fire DMG equal to 60% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"7": {"SkillDesc": "Deals Fire DMG equal to 163% of Himeko's ATK to a single enemy and Fire DMG equal to 65% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"8": {"SkillDesc": "Deals Fire DMG equal to 175% of Himeko's ATK to a single enemy and Fire DMG equal to 70% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"9": {"SkillDesc": "Deals Fire DMG equal to 188% of Himeko's ATK to a single enemy and Fire DMG equal to 75% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"10": {"SkillDesc": "Deals Fire DMG equal to 2% of Himeko's ATK to a single enemy and Fire DMG equal to 80% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"11": {"SkillDesc": "Deals Fire DMG equal to 210% of Himeko's ATK to a single enemy and Fire DMG equal to 84% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"12": {"SkillDesc": "Deals Fire DMG equal to 220% of Himeko's ATK to a single enemy and Fire DMG equal to 88% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"13": {"SkillDesc": "Deals Fire DMG equal to 230% of Himeko's ATK to a single enemy and Fire DMG equal to 92% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"14": {"SkillDesc": "Deals Fire DMG equal to 240% of Himeko's ATK to a single enemy and Fire DMG equal to 96% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}, {"15": {"SkillDesc": "Deals Fire DMG equal to 250% of Himeko's ATK to a single enemy and Fire DMG equal to 1% of Himeko's ATK to enemies adjacent to it.", "SimpleSkillDesc": "Deals Fire DMG to a single enemy and minor Fire DMG to enemies adjacent to it."}}]}, {"SkillName": "Heavenly Flare", "SkillTag": "AoE", "SkillTypeDesc": "Ultimate", "levels": [{"1": {"SkillDesc": "Deals Fire DMG equal to 138% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"2": {"SkillDesc": "Deals Fire DMG equal to 147% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"3": {"SkillDesc": "Deals Fire DMG equal to 156% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"4": {"SkillDesc": "Deals Fire DMG equal to 166% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"5": {"SkillDesc": "Deals Fire DMG equal to 175% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"6": {"SkillDesc": "Deals Fire DMG equal to 184% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"7": {"SkillDesc": "Deals Fire DMG equal to 196% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"8": {"SkillDesc": "Deals Fire DMG equal to 207% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"9": {"SkillDesc": "Deals Fire DMG equal to 218% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"10": {"SkillDesc": "Deals Fire DMG equal to 230% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"11": {"SkillDesc": "Deals Fire DMG equal to 239% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"12": {"SkillDesc": "Deals Fire DMG equal to 248% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"13": {"SkillDesc": "Deals Fire DMG equal to 258% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"14": {"SkillDesc": "Deals Fire DMG equal to 267% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}, {"15": {"SkillDesc": "Deals Fire DMG equal to 276% of Himeko's ATK to all enemies. Himeko regenerates 5 extra Energy for each enemy defeated.", "SimpleSkillDesc": "Deals Fire DMG to all enemies and regenerates Energy if enemies are defeated."}}]}, {"SkillName": "Victory Rush", "SkillTag": "AoE", "SkillTypeDesc": "Talent", "levels": [{"1": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 70% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"2": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 77% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"3": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 84% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"4": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 91% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"5": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 98% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"6": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 105% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"7": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 114% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"8": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 122% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"9": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 131% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"10": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 140% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"11": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 147% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"12": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 154% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"13": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 161% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"14": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 168% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}, {"15": {"SkillDesc": "When an enemy is inflicted with Weakness Break, Himeko gains 1 point of Charge (max 3 points).\\nIf Himeko is fully Charged when an ally performs an attack, Himeko immediately performs 1 follow-up attack and deals Fire DMG equal to 175% of her ATK to all enemies, consuming all Charge points.\\nAt the start of the battle, Himeko gains 1 point of Charge.", "SimpleSkillDesc": "Gains a Charge stack when an enemy's Weakness is Broken.\\nAfter an ally performs an attack, if fully Charged, immediately performs a follow-up attack and deal Fire DMG to all enemies, consuming all Charge stacks.\\nGains 1 Charge stack at the start of each battle."}}]}, {"SkillName": "Attack", "SkillTag": null, "SkillTypeDesc": null, "levels": [{"1": {"SkillDesc": "Attack an enemy, and when the battle starts, reduce their Toughness of the corresponding Type.", "SimpleSkillDesc": "N/A"}}]}, {"SkillName": "Incomplete Combustion", "SkillTag": "Impair", "SkillTypeDesc": "Technique", "levels": [{"1": {"SkillDesc": "After using Technique, creates a dimension that lasts for 15 second(s). After entering battle with enemies in the dimension, there is a 1% base chance to increase Fire DMG taken by enemies by 10% for 2 turn(s). Only 1 dimension created by allies can exist at the same time.", "SimpleSkillDesc": "Creates a dimension. After entering combat with enemies in the dimension, there is a high chance to increase Fire DMG taken by enemies."}}]}]}}

# books.jsonl
{"BookSeriesID": 1, "BookSeries": "Floriography Manual Attached to a Bouquet", "BookSeriesComments": "Contains commonly used floriography in Belobog. The ways of the world are condensed into this manual.", "BookSeriesNum": 1, "BookSeriesWorld": 2, "IsShowInBookshelf": true}

# items.jsonl
{"ID": 2, "ItemMainType": "Virtual", "ItemSubType": "Virtual", "InventoryDisplayTag": 1, "Rarity": "Rare", "PurposeType": 11, "ItemName": "Credit", "ItemDesc": "This currency, used by the Interastral Peace Corporation to settle accounts with its customers, is now widely accepted as the hard currency for space travel.", "ItemBGDesc": "\"People run around fighting and trading for numbers in a terminal, but the truly precious cannot be bought.\"", "ItemIconPath": "SpriteOutput/ItemIcon/2.png", "ItemFigureIconPath": "SpriteOutput/ItemFigures/2.png", "ItemCurrencyIconPath": "SpriteOutput/ItemCurrency/2.png", "ItemAvatarIconPath": "", "PileLimit": 999999999, "CustomDataList": [], "ReturnItemIDList": []}

# maze_buff.jsonl
{"1": {"ID": 100201, "BuffSeries": 1, "BuffRarity": 1, "Lv": 1, "LvMax": 1, "ModifierName": "ADV_StageAbility_Maze_DanHeng", "InBattleBindingType": "CharacterSkill", "InBattleBindingKey": "SkillMaze", "ParamList": [], "BuffDescParamByAvatarSkillID": 100207, "BuffIcon": "SpriteOutput/BuffIcon/Inlevel/Icon1002Maze.png", "BuffName": "Splitting Spearhead", "BuffDesc": "At the start of the next battle, Dan Heng's ATK increases by #1[i]% for #2[i] turn(s).", "BuffSimpleDesc": "N/A", "BuffDescBattle": "At the start of the next battle, Dan Heng's ATK increases by #1[i]% for #2[i] turn(s).", "BuffEffect": "MazeBuffEffect_100201", "MazeBuffType": "Character", "MazeBuffIconType": "Other", "MazeBuffPool": 3, "IsDisplay": true}}

Misc

The resulting extraction contains missions information

  • Code
python get_missions.py --lang=CHS --repo=PATH_TO_STARRAIL_DATA
  • Example
{
  "mission": {
    "name": "Eye of the Storm",
    "next_missions": [],
    "next_track_mission": 1000202,
    "chapter_id": 100001,
    "reward_id": 11000201
  },
  "submissions": [
    {
      "submission_ids": [
        100020104,
        100020105
      ],
      "target": "Leave and see what's going on outside",
      "desc": "You move your gaze away from the unfamiliar ceiling and look at the variety of Curios around you. A woman's voice echoes in your head but you're in no position to confirm whether you can clearly remember it.\\n\"When you have a chance to make a choice, make one that you know you won't regret...\"\\nYou decide to first listen to March 7th and Dan Heng, who had just left. At least they don't look like bad people.\\nAlright, now that there are companions, it's time to leave this place."
    },
    {
      "submission_ids": [
        100020106,
        100020107
      ],
      "target": "Listen to March 7th and protect yourself",
      "desc": "You keep thinking about what March 7th said: \"The Legion are rampaging through the space station like a pack of wolves...\" It seems like the road ahead is going to be a hard one.\\nYou look at March 7th beside you and she nods at you with confidence.\\nYou then look at the baseball bat in your hand, which is glowing as if also full of confidence.\\nYou can do it too, give it a try!"
    },
    {
      "submission_ids": [
        100020131,
        100020109
      ],
      "target": "Go to the elevator in the central area",
      "desc": "It would seem that the only way to the space station's master control zone is through the elevator — it doesn't seem to be too far."
    }
  ]
}