Custom Buff Effects
Video Guide
Timestamps:
- 0:14 Adding a custom buff .txt file
- 0:52 Adding a buf .json and pasting in information
- 1:13 "id"
- 1:21 "iconId"
- 1:35 "buffClass"
- 2:36 "attributeType"
- 2:45 "buffType"
- 2:54 "maxStack" | special mention "maxTurn"
- 3:02 "canBeDespelled" | special mentions "destroyableOnRetreat" & "destroyableOnZero"
- 3:19 "ability"
- 3:56 "categoryKeywordList"
- 4:37 Adding/Inflicting the buff with a skill
- 5:45 Adding locale for the buff (buflist)
- 7:46 Adding locale for the buff (keywordlist)
- 9:11 Adding the buff to skill locales
Text Guide
Now, you might want to add custom buff effects after having made your fancy skills to make your mod stand out and be more unique. Contrary to really popular belief, that isn't very hard to do.
Tutorial
- First off, you need to go to limbus_dataindumpedDataand find thebufffolder.
- You will find numeral json files; assuming you've been modding for a signifcant amount of time, you're used to this by this point. For our example, go to the first file: 0.json
- Copy the first entry you see (in this circumstance, Nail) and paste the text into the bufffolder of your mod'scustom_limbus_dataas a .json file.
- To properly format your file, you must put the entry inside a list. If this is confusing, your file should look like this:
{
  "list": [
    {
      "id": "NailPersonality",
      "iconId": "Nail",
      "buffClass": "NonvolatileBuff",
      "buffType": "Negative",
      "canBeDespelled": true,
      "list": [
        {
          "ability": "GiveBuffOnRoundStart",
          "value": 1,
          "buffData": {
            "buffKeyword": "Laceration",
            "target": "Self",
            "stack": 1,
            "turn": -1,
            "activeRound": 0
          }
        },
        {
          "ability": "LoseStackOnRoundEndByRatio",
          "value": 0.5
        }
      ],
      "categoryKeywordList": ["LACERATION"]
    }
  ]
}
For now, lets empty the, "list," section of the buff.
{
  "list": [
    {
      "id": "NailPersonality",
      "iconId": "Nail",
      "buffClass": "NonvolatileBuff",
      "buffType": "Negative",
      "canBeDespelled": true,
      "list": [],
      "categoryKeywordList": ["LACERATION"]
    }
  ]
}
- 
To create a new instance of a buff, make a .txt file with the desired id name of the buff in the custom_buffsfolder residing in your mod folder. Make sure you don't use a pre-existing id name, or you will overwrite said buff.
- 
Afterward, you can change the id of your buff to the name of your .txt file. If I named my file BeheadShanecliffs.txt, the idBeheadShanecliffsbecomes valid. You must re-open Limbus Company for the id to be recognized.
- 
iconId is, what you can guess, the icon of the buff. It typically uses the id of a different buff. 
- 
NOTE: you can add your own custom buff icons by putting the image in the custom_spritesfolder and naming itbuffIcon_{ID}.pngsimilar to how you'd do skill icons.
- 
buffclassdictates what the buff is like, there are 4 main types:NonvolatileBuffmeans it has only potency and it doesnt expire on turn end,VolatileBuffmeans only potency and it expires at turn end,CountableBuffmeans it has both potency and count, andsinBuffis similar toCountableBuff, but it is primarily used on the 7 main status archetypes.
- 
buffTypecan either beNegativeorPositiveorNeutralits purpose is to be included in things such as "remove one random negative buff from self"
- 
canBeDespelledis a boolean that decides if the buff can be forcefully removed or not, back on that "remove one random negative buff from self" ifcanBeDespelledis false then it cant be removed by scripts similar to that.
- 
categoryKeywordListis used to make it a 'unique' buff of an already used status effect; for example, Dark Flame (DarkFlamein code) hasCOMBUSTIONin theircatagoryKeywordListwhich is why it counts as unique Burn
- 
Lastly, list, the most important part of a buff. This dictates what the buff actually does. In the OG Nail script, it was this:
"list": [
       {
         "ability": "GiveBuffOnRoundStart",
         "value": 1,
         "buffData": {
           "buffKeyword": "Laceration",
           "target": "Self",
           "stack": 1,
           "turn": -1,
           "activeRound": 0
         }
       },
       {
         "ability": "LoseStackOnRoundEndByRatio",
         "value": 0.5
       }
     ]
Obviously, the ability script will add a buff on round start, and the value divides the buff by one (a number divided by one, is... just the original number),
and it gives Bleed (Laceration), which is how Nail gives Bleed count equal to stack on Round Start.
There are many scripts to modify, you can find them easily in the files of the buff folder similar to how you'd find skill scripts
EXTRAS
- "maxStack": can be added to set a limit for the potency, ex:- "maxStack": 20otherwise the default is 99
- "maxTurn": can be added to set a limit for the count, ex:- "maxTurn": 10otherwise the default is 99
- "attributeType": unknown what it truly does, the- sinBuffs have it with their respective affinity (- Sinkinghas- AZUREwhile- Lacerationhas- SCARLET)
- "destroyableOnZero": determines if the buff gets removed at zero potency (Boolean)
- "destroyableOnZeroTurn": determines if the buff gets removed at zero count (Boolean)
- "destroyableOnRetreat": determines if the buff gets removed when the unit retreats (Boolean)