Custom Identity/E.G.O Preview creator

This mode is designed for creating elegant preview imitation of Identities and E.G.O preview information using all the program's features. It may be useless if you're skilled in image editing.

Examples of created previews

Initial requirements (Quick overview)

  • Skills, passives, and keywords localization files.

  • Skills Display Info.

  • Cutted images of status effects and skill icons.

  • Portrait image (In case with Identities, it is recommended to use a good looking frame of the first or second image from the teaser video (With upscale if the quality is poor). If E.G.O, image just can be cutted from official image and insterted without interfering elements around (Skill icons and name in case with Identities), maybe with a little padding towards the inside).

Requirements creation

The information below will be based on N Corp. E.G.O::Contempt, Awe Ryōshū preview above.

Or official twitter post: https://x.com/LimbusCompany_B/status/1964984557335433685/photo/3.

1

Localization files

You can create all required files from program instead of writing them manually in text editor. To do this, first, you need to enable this option in the settings window:

This will allow you to:

  1. Manually create localization files by context menu for open file button:

  2. Create additional json objects by context menu for the disabled 'Next object' button:

  3. Create additional Upties in Skills (Probably useless for Identity/E.G.O Preview Creator since Skill files there do not require multiple upties):

  4. Select Affinities for Skills (It is used only to highlight the skill name in the drop-down list for selecting Skills in the Preview Creator UI):

  5. Input manual colors for keywords (This can be used instead of adding keyword colors to display them in this program without touching the "[⇲] Assets Directory\Color Dictionaries\Keyword Colors.cd.txt" file. Suitable for template keywords, which you will create based on this guide):

Initial info:

  • 6 Skills

    • First: 2 Coins, Envy affinity

    • Second: 2 Coins, Wrath affinity

    • Third: 3 Coins, Lust affinity

    • Alt third (№3-2): 1 Coin, Lust affinity

    • Fourth (Must belong to Yi Sang): 2 Coins, Pride affinity

    • Defense: 1 Coin (No desc -> Unnecessary), Sloth affinity

  • 4 Passives

  • 2 Status effects

Basic samples of JSON localization files:

"Manual File Type" is described at Program behavior and features (Json file types specifying info).

{
  "Manual File Type": "Skills",
  "dataList": [
    {
      "id": 1000, // Specify any IDs as you wish (1000, 2000, 3000, 3500 as example for three skills including alternative third (3-2))
      "levelList": [
        {
          "Affinity": "Skill Affinity name", // Sign affinity to color skill name at drop-down list for selection in the corresponding color (Not really necessarily)
          "level": 4, // There must be one and only Uptie Level (Number does not matter)
          "name": "Skill №1 name",
          "desc": "Skill №1 desc",
          "coinlist": [
            { // First
              "coindescs": [
                {
                  "desc": "Coin №1 desc"
                }
              ]
            },
            { // Second
              "coindescs": [
                {
                  "desc": "Coin №2 desc"
                }
              ]
            }
            
            // Some other coins after
          ]
        }
      ]
    }
    
    // Some other skills
  ]
}

After you created keyword file and specified folder with it as "Additional Keywords Directory" inside settings window (Or it is already), go to "⦁ Resources Reload" settings section and click "Custom Lang Keywords" option to load them without progam restart.

Actual files used on images above (Keyword IDs in the text are those already added to the game; use "MTL" custom localization property to view them through program due to Shorthands presence in the text as [KeywordID:`Name`]):

{
  "Manual File Type": "Skills",
  "dataList": [
    {
      "id": 1000,
      "levelList": [
        {
          "Affinity": "Envy",
          "level": 4,
          "name": "Презренная вещь",
          "desc": "[WhenUse] Сила в столкновении повышается против целей, на которых есть [GazeRyoshu:`Взор`] или [ContemptRyoshu:`Презрение`]\n[WhenUse] Сила монет повышается за каждые X единиц в сумме силы [Laceration:`Кровотечения`] и [Vibration:`Тремора`] на цели",
          "coinlist": [
            {
              "coindescs": [
                {
                  "desc": "[OnSucceedAttack] Повышает счётчик [Laceration:`Кровотечения`] и [Vibration:`Тремора`]"
                }
              ]
            },
            {
              "coindescs": [
                {
                  "desc": "[OnSucceedAttack] Наносит [GazeRyoshu:`Взор`]"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": 2000,
      "levelList": [
        {
          "Affinity": "Wrath",
          "level": 4,
          "name": "Испытайте сей трепет",
          "desc": "[WhenUse] Сила в столкновении повышается против целей, на которых есть [GazeRyoshu:`Взор`] или [ContemptRyoshu:`Презрение`]\n[WhenUse] Сила монет повышается за каждые X единиц в сумме силы [Laceration:`Кровотечения`] и [Vibration:`Тремора`] на цели",
          "coinlist": [
            {
              "coindescs": [
                {
                  "desc": "[OnSucceedAttack] Наносит [Laceration:`Кровотечение`] и [Vibration:`Тремор`]"
                }
              ]
            },
            {
              "coindescs": [
                {
                  "desc": "[SuperCoin]\n[OnSucceedAttack] Повышает счётчик [Laceration:`Кровотечения`] и [Vibration:`Тремора`]\n[OnSucceedAttack] Наносит [GazeRyoshu:`Взор`]\n[OnSucceedAttack] Если счётчик [Vibration:`Тремора`] цели равен X и более, [VibrationExplosion:`Провоцирует Тремор`] и понижает его счётчик"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": 3000,
      "levelList": [
        {
          "Affinity": "Lust",
          "level": 4,
          "name": "Трепет, Презрение",
          "desc": "Если на цели есть [GazeRyoshu:`Взор`], наносит ей больше [Laceration:`Кровотечения`] и [Vibration:`Тремора`] этим навыком\n[BeforeAttack] Если на всех противниках в сумме X и более [GazeRyoshu:`Взора`] или Y и более [ContemptRyoshu:`Презрения`], использует 「Ниспадающий каскадом взор, полный трепета подле презрения」 вместо этого\n[WhenUse] Сила монет и урон повышаются за каждые X единиц в сумме силы [Laceration:`Кровотечения`] и [Vibration:`Тремора`] на цели",
          "coinlist": [
            {
              "coindescs": [
                {
                  "desc": "[OnSucceedAttack] Наносит [Laceration:`Кровотечение`] и [Vibration:`Тремор`]"
                }
              ]
            },
            {
              "coindescs": [
                {
                  "desc": "[OnSucceedAttack] Повышает счётчик [Laceration:`Кровотечения`] и [Vibration:`Тремора`]"
                }
              ]
            },
            {
              "coindescs": [
                {
                  "desc": "[SuperCoin]\nНаносит больше урона за каждые X [GazeRyoshu:`Взора`] на цели\n[OnSucceedAttack] Наносит [GazeRyoshu:`Взор`]\n[UnBrokenCoinOnSucceedAttack] [Switch_Vibration:`Преобразует амплитуду`] в [VibrationBleeding:`Тремор — Кровоизлияние`]\n[OnSucceedAttack] [VibrationExplosion:`Провоцирует Тремор`] и понижает его счётчик"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": 3500,
      "levelList": [
        {
          "Affinity": "Lust",
          "level": 4,
          "name": "Ниспадающий каскадом взор, полный трепета подле презрения",
          "desc": "Внешние эффекты не могут вызвать повторное использование этого навыка\nДополнительными целями становятся противники с [GazeRyoshu:`Взором`] или [ContemptRyoshu:`Презрением`]\n• Наносит меньше урона дополнительным целям\n• Если цель только одна, наносит ей больше урона (В фокусированных столкновениях за одну цель считается Часть)\n[WhenUse] Сила монет и урон повышаются за каждые X единиц в сумме силы [Laceration:`Кровотечения`] и [Vibration:`Тремора`] на цели\n[WhenUse] Наносит больше урона за каждые X единиц в сумме [GazeRyoshu:`Взора`] на всех целях\n[EndSkill] [GazeRyoshu:`Взор`] и [ContemptRyoshu:`Презрение`] снимаются с целей, по которым попала атака",
          "coinlist": [
            {
              "coindescs": [
                {
                  "desc": "[SuperCoin]\nНаносит больше урона, если на цели есть [ContemptRyoshu:`Презрение`]\n[OnSucceedAttack] Наносит [Laceration:`Кровотечение`] и повышает его счётчик\n[OnSucceedAttack] Наносит [Vibration:`Тремор`] и повышает его счётчик\n[OnSucceedAttack] [Switch_Vibration:`Преобразует амплитуду`] в [VibrationBleeding:`Тремор — Кровоизлияние`]\n[OnSucceedAttack] [VibrationExplosion:`Провоцирует Тремор`] и понижает его счётчик"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": 4000,
      "levelList": [
        {
          "Affinity": "Pride",
          "level": 4,
          "name": "Я должен выстрелить / В любой момент",
          "desc": "[StartBattle] Выбирает целью в первую очередь 「ЭГО Корп. N::Прeзрение, Трепет」 Рёшу\n[StartBattle] Количество целей повышает за каждые X [BoseProjektil:`Разорванных воспоминаний`]\n[WhenUse] Сила монет повышается за каждые X [Breath:`Дыхания`]\n[WhenUse] Базовая сила повышается за каждые X единиц счётчика [Breath:`Дыхания`]\n[WhenUse] Получает [Breath:`Дыхание`] за каждое [BoseProjektil:`Разорванное воспоминание`]\n[EndSkill] Теряет (Количество [BoseProjektil:`Разорванных воспоминаний`] × X) СД\n[EndSkill] Если было X [BoseProjektil:`Разорванных воспоминаний`] в начале боевой фазы, теряет их и восстанавливает СД",
          "coinlist": [
            {
              "coindescs": [
                {
                  "desc": "[SuperCoin]\n• Эта монета наносит урон только основной цели"
                }
              ]
            },
            {
              "coindescs": [
                {
                  "desc": "[SuperCoin]\n• Эта монета наносит урон только дополнительным целям\n• Если попадание первой монетой не было критическим, а 「ЭГО Корп. N::Прeзрение, Трепет」 Рёшу выжила после него, то лишь 1 случайная дополнительная цель получает урон\nНаносит больше урона за каждое [BoseProjektil:`Разорванное воспоминание`] и за каждый 1% потерянных ОЗ главной цели\nНаносит больше урона при критическом попадании за каждое [BoseProjektil:`Разорванное воспоминание`] и за каждую единицу силы своего [Breath:`Дыхания`]\n[OnSucceedAttack] Наносит [Laceration:`Кровотечение`] и повышает его счётчик"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": -1000,
      "levelList": [
        {
          "Affinity": "Sloth",
          "level": 4,
          "name": "В хватку",
          "desc": "[StartBattle] Если нет [ContemptPersonality:`Презрения взора`], то получает его, если всех противниках в сумме X и более [GazeRyoshu:`Взора`] или Y и более [ContemptRyoshu:`Презрения`]\n[WhenUse] Итоговая сила повышается, если есть [ContemptPersonality:`Презрение взора`]\n[WhenUse] Если получает удар, наносит [Laceration:`Кровотечение`] атакующему"
        }
      ]
    }
  ]
}
2

Skills Display Info

Skills Display Info file is needed to know how to display skill header (Icon, frame, affinity). These files can be created in the Skills Display Info mager window:

Created json text example Display Info file with first N Corp. E.G.O::Contempt, Awe Ryōshū skill:

Display Info.json
{
  "Skills Info": [
    {
      "(Name)": "Contemptous Thing",
      "ID": 1000, "Icon ID": ":Current-Directory:/../Skill Icons/Skill 1.png",
      "Specific": {
        "Affinity": "Envy",
        "Damage Type": "Pierce",
        "Action": "Attack", 
        "Rank": 1
      },
      "Characteristics": { "Coins List": ["Regular", "Regular"] },
      "Attributes": { "Show Affinity Icon": true } // This option must be excluded for defense skills
    }
    
    // Some other constructors
  ]
}

Actual files used on images above:

Display Info.json
{
  "Skills Info": [
    {
      "(Name)": "Contemptous Thing",
      "ID": 1000, "Icon ID": ":Current-Directory:/Skill Icons/Skill 1.png",
      "Specific": {
        "Affinity": "Envy",
        "Damage Type": "Pierce",
        "Action": "Attack",
        "Rank": 1
      },
      "Characteristics": { "Coins List": ["Regular", "Regular"] },
      "Attributes": { "Show Affinity Icon": true }
    },



    {
      "(Name)": "Be Awed",
      "ID": 2000, "Icon ID": ":Current-Directory:/Skill Icons/Skill 2.png",
      "Specific": {
        "Affinity": "Wrath",
        "Damage Type": "Pierce",
        "Action": "Attack",
        "Rank": 2
      },
      "Characteristics": { "Coins List": ["Regular", "Unbreakable"] },
      "Attributes": { "Show Affinity Icon": true }
    },



    {
      "(Name)": "Awe, Contempt",
      "ID": 3000, "Icon ID": ":Current-Directory:/Skill Icons/Skill 3.png",
      "Specific": {
        "Affinity": "Lust",
        "Damage Type": "Pierce",
        "Action": "Attack",
        "Rank": 3
      },
      "Characteristics": { "Coins List": ["Regular", "Regular", "Unbreakable"] },
      "Attributes": { "Show Affinity Icon": true }
    },



    {
      "(Name)": "Cascading Gaze of Awe Underneath Contempt",
      "ID": 3500, "Icon ID": ":Current-Directory:/Skill Icons/Skill 3-2.png",
      "Specific": {
        "Affinity": "Lust",
        "Damage Type": "Pierce",
        "Action": "Attack",
        "Rank": 3
      },
      "Characteristics": { "Coins List": ["Unbreakable"] },
      "Attributes": { "Show Affinity Icon": true }
    },



    {
      "(Name)": "I Shall Fire / Anytime",
      "ID": 4000, "Icon ID": ":Current-Directory:/Skill Icons/Skill 4.png",
      "Specific": {
        "Affinity": "Pride",
        "Damage Type": "Pierce",
        "Action": "Attack",
        "Rank": 3
      },
      "Characteristics": { "Coins List": ["Unbreakable", "Unbreakable"] },
      "Attributes": { "Show Affinity Icon": true }
    },



    {
      "(Name)": "To Grasp",
      "ID": -1000, "Icon ID": ":Current-Directory:/Skill Icons/Defense.png",
      "Specific": {
        "Action": "Guard",
        "Affinity": "Sloth"
      },
      "Characteristics": { "Coins List": ["Regular"] }
      // No "Show Affinity Icon": true attribute
    }
  ]
}
3

Skill icons

They can be simply cut out from official images using the following scheme (This is will be a :Current-Directory:/Skill Icons/Skill 1.png file that was mentioned above):

Damage type and frame over the icon should cover all protruding elements at the end.

4

Status effects

Same procedure.

5

Optional custom keywords in text

In the "Localization files" step, a keyword file was created that could potentially act as a Bufs*.json file to display keywords in text via [KeywordID].

So, recalling what was said in Base setup about Additional Keywords Directory, you can specify in this property the folder with this keyword file. The only requirement is that the file name must start with "Bufs" (Bufs 「N Corp. E.G.OːːContempt, Awe」.json as example). Also copy cutted keyword icons to the [⇲] Assets Directory\[⇲] Limbus Images\Keywords.

Otherwise, you can disable these options at the bottom of settings window to remove underline and sprites from all keywords:

Creating image itself

In the title bar, there are special button to switch ui.

This will transform the interface into this mode.

It should be noted that this mode is separate from the others, which means that you can simultaneously edit the localization file in the background and switch the interface back and forth on this button without losing changes in them.

You can find various image settings here, but adding text is the only thing need detailed explaining:

At the bottom of the list there is a section called "Text info sources", select all previously created files in it.

After files are selected, you will have access to a menu at the bottom called "Selected item settings" corresponding to the text item added to the column (The files described above in the steps about creating requirements were used).

For skills, to add displaying you need to select both "Skills ID from localization file" and "Skill constructor from Display Info".

To save the output image, click on the scans canvas icon in the titlebar or Ctrl + P.

Remarks

  • Column items have context menu on right click (Move up/down, remove options).

  • To reset slider value or selected file, press Left Shift + Right click on the slider or file selection button.

  • You can hide/show "[Column №1/2 Add item..]" buttons via Ctrl + F.

  • Left-clicking on a section header collapses/expands it.

  • For more precise adjustment through the sliders you can clamp the right or left part of slider line and Thumb will start to shift to the side at 1px speed.

  • The appearance of all descriptions depends on the custom localization settings you have selected and should be identical to how you see it when editing localization file.

  • All selected files that are in the same (Or sub-folder) together with the saved (Save it first somewhere before attaching images or files) project file are marked as relative through :Current-Directory: in path (Exactly the same as in Skills Display Info) to indicate the full path to the project json file, maybe that allows to share it without without having to re-select all files.

Last updated