🛠️ Idle Reincarnator Modding Guide

Welcome to the official Modding Guide for Idle Reincarnator. This guide will walk you through the steps to create your own mod and add custom content to the game.


Getting started

To start creating a mod and have your mod folder, follow these steps:

  1. Launch the game and go to the Mods section.
  2. Click Create Mod.
  3. Navigate to your mod folder: %APPDATA%/Roaming/my_mods/[Your Mod Name]
  4. Start editing the files in this folder to add your content.

Adding content

What game content can you add?

You can add the following action types:

  • Jobs
  • Trainings
  • Skills
  • Explorations
  • Spells
  • Items
  • Temporal Skills
  • Technologies
  • Civilization Levels

Let's focus on how to to add a custom job first. To create a custom job, create a 'jobs' folder inside your mod folder, and inside the 'jobs' folder, create a 'data.json' file. The 'data.json' file should look like below if you are not adding a new category:

{
  "types": {
  }
}

If you are adding a category, it your data.json should look like this:

{
  "types": {
    "[job_category]": {
      "name": "[Your job category display name]",
      "tab_name": "[The name of the tab in the job buttons]",
      "description": "[description]",
      "lockable": false,
      "requirements": {}
    },
    "[job_category]": {
      "name": "[Your job category display name]",
      "tab_name": "[The name of the tab in the job buttons]",
      "description": "[description]",
      "lockable": false,
      "requirements": {}
    },
    ...
  }
}

The current job categories can be found here.

Afterwards, create folders based on the job_category you defined in your data.json. For example, if you defined a job_category called "test", create a folder called "test" inside the jobs folder.

Inside your job_category folder, create a file called 'content.json'. This file will contain the data for your jobs. Follow the structure below:

{
  "content": {
    "[job_id]": {
      "name": "[Job Name]",
      "description": "[Description]",
      "base_income": [Income],
      "is_passive_income": [Whether income is passive or not],
      "base_exp_req": [Base exp requirement],
      "hidden": [Whether job is hidden],
      "effects": {[Effects]},
      "lockable": [Whether job is lockable],
      "requirements": {[Requirements]}
    },
    "[job_id]": {
      "name": "[Job Name]",
      "description": "[Description]",
      "base_income": [Income],
      "is_passive_income": [Whether income is passive or not],
      "base_exp_req": [Base exp requirement],
      "hidden": [Whether job is hidden],
      "effects": {[Effects]},
      "lockable": [Whether job will be locked after unlock if requirements are not met],
      "requirements": {[Requirements]}
    },
    ...
  }
}
Example: Adding a "Cleaner" Job

Here's a working example of a modded job entry in the content.json:

{
  "content": {
    "cleaner": {
      "name": "Cleaner",
      "description": "Clean the streets of Eldoria.",
      "base_income": 1.9,
      "is_passive_income": false,
      "base_exp_req": 80,
      "hidden": true,
      "effects": {
        "jobs": {
          "content": {
            "common": {
              "content": {
                "cleaner": {
                  "exp_gain": {
                    "scaling_type": "linear",
                    "base": 1,
                    "scaling": 0
                  }
                }
              }
            }
          }
        },
        "skills": {
          "content": {
            "fundamentals": {
              "content": {
                "cleanliness": {
                  "exp_gain": {
                    "scaling_type": "linear",
                    "base": 1,
                    "scaling": 0.2
                  }
                }
              }
            },
            "scavenging": {
              "content": {
                "awareness": {
                  "exp-gain": {
                    "scaling_type": "linear",
                    "base": 1,
                    "scaling": 0.2
                  }
                }
              }
            }
          }
        }
      },
      "lockable": false,
      "requirements": {}
    }
  }
}
Important: Make sure to add an effect for the job to give experience to itself if not the job won't level up

For how jobs are made in the base game, you can see them here.

To add an image for your job, create a folder named "images" inside your job category folder and place a .png file in the images folder with the same name as your job ID. You can get image borders that you can use in your images here

Once you are done, your folder structure should look like this:

[Your Mod Folder]/
├── jobs/
│   ├── data.json
│   └── [job_category]/
│       ├── content.json    ← Add your custom job(s) here
│       └── images/
│           └── [job_id].png (image for your job)

Adding more content types

As to how to add other content like trainings, skills, etc. you can see how they are made in the base game here.


⚙️ Effects Reference

Effects modify gameplay in various ways and are grouped into categories. Each effect can have scaling properties to change how it evolves with content levels.

Overall Effects

Effect Description
level_up_cap Maximum level up per tick
before_max_level_exp_multiplier XP multiplier before reaching max level
exp_required_percentage_reduction Reduction in required XP percentage
renown_multiplier Multiplier for renown gain
daily_gold_gain Additional gold gained per day
lifespan_multiplier Multiplier for total lifespan
lifespan_day_increase Additional days added to lifespan
lifespan_year_increase Additional years added to lifespan
gamespeed_multiplier Multiplier for game speed
happiness_multiplier Multiplier for happiness gain
boss_danger_reduction_per_defeat Danger reduction per boss defeat
temporal_essence_rebirth_needed_reduction Reduction in temporal essence needed for rebirth
temporal_essence_rebirth_gain_multiplier Multiplier for temporal essence gain on rebirth
exploration_speed_multiplier General exploration speed multiplier
[Skill Category]_exploration_speed_multiplier [Skill Category] skill exploration speed
danger_multiplier Multiplier for danger levels
spell_slots Additional spell slots available

Example

"effects": {
  "overall": {
    "[effect_name]": {
      "scaling_type": "linear",
      "base": 1000,
      "scaling": 0
    }
  }
}

Action Type, Category, and Specific Effects

Effect Description Applies To
exp_gain Base experience gained All actions
exp_multiplier Multiplier for experience gained All actions
level_increase Immediate level increase All actions
expenses_multiplier Multiplier for action expenses All actions
income_multiplier Multiplier for job income Jobs only
passive_income_multiplier Multiplier for passive income Jobs only

Example

#Action-wide Effect
"[action_type]": {
  "[effect_name]": {
    "scaling_type": "linear" // or "logarithmic"/"exponential",
    "base": [A base value],
    "scaling": [scaling factor]
  }
}

#Category-wide Effect
"[action_type]": {
  "content": {
    "[category]": {
      "[effect_name]": {
        "scaling_type": "linear" // or "logarithmic"/"exponential",
        "base": [A base value],
        "scaling": [scaling factor]
      }
    }
  }
}

#Individual action Effect
"[action_type]": {
  "content": {
    "[category]": {
      "content": {
        "[action_name]": {
          "[effect_name]": {
            "scaling_type": "linear" // or "logarithmic"/"exponential",
            "base": [A base value],
            "scaling": [scaling factor]
          }
        }
      }
    }
  }
}

Requirements Structure

Requirements define the conditions for unlocking a content. These are grouped by numeric keys ("0", "1", etc.), where each group represents an OR condition. Within each group, conditions are evaluated by an AND condition. Below are the requirement types:

Overall Requirements

Requirement Description
gold Player must have at least this amount of gold
renown Player must have at least this amount of renown
age Player's current age must be at least this value
lifetime_age Player's highest lifetime age must be at least this value
not_age Player's current age must be less than this value
rebirths Player must have completed at least this many rebirths
regressions Player must have completed at least this many regressions
total_temporals Player must have at least this much total temporal essence
schools_graduated Player must have graduated from at least this many schools
civilization_capability Player must have at least this civilization capability level
heroic_tests_completed Player must have completed at least this many heroic tests

Category Requirements

Requirement Description
any_unlocked At least one action in the category must be unlocked
was_any_unlocked At least one action in the category was previously unlocked

Individual Action Requirements

Requirement Description
unlocked Action must be unlocked (true/false)
danger Action's danger level must be ≤ this value
mortality Action's reduced danger level must be ≤ this value
current_level Action's current level must be ≥ this value
not_current_level Action's current level must be < this value
max_level Action's max level reached must be ≥ this value
lifetime_max_level Action's lifetime max level reached must be ≥ this value
not_max_level Action's max level reached must be < this value
current_max_level Action's current max level reached must be ≥ this value

Requirements Example

"requirements": {
  "0": {
    "jobs": {
      "noble": {
        "baron": {
          "current_level": 50
        }
      }
    },
    "renown": 5000,
    "gold": 50000
  },
  "1": {
    "explorations": {
      "ancient_crypt": {
        "boss": {
          "max_level": 1
        }
      }
    }
  }
}

This means:

  • Group 0 requires:
    • Baron job at level 50
    • 5000 renown
    • 50000 gold
  • Group 1 requires:
    • Defeated boss in ancient_crypt with max_level 1

Only 1 requirement group must be fulfilled to unlock the item.

Note: Unlike the effects structure, the requirements structure is not nested in a 'content' field.

📚 Need More Examples?

Check out the game_assets in the modding repo for real content examples used by the base game.

Tip: See example_mod for a working example.

Before Publishing

Folder Structure

Check your mod folder follows this structure:

[Your Mod Folder]/
├── mod.json           # Mod metadata
├── preview.png        # Optional preview image shown in the UI
├── jobs/              # Or trainings/, spells/, etc.
│   ├── data.json
│   └── [action_type]/ # E.g., for jobs it's common, knight, etc.
│       ├── content.json # Contains the action information
│       └── images/
│           └── [action_id].png
├── trainings/
│   └── ...

You should add tags to your mod.json file. These tags will help users find your mod on the Steam Workshop.

This file describes your mod and should be placed at the root of your mod folder. The name, description, and tags will be used in the Steam Workshop. The workshop_id is used to identify your mod on the Steam Workshop.

{
  "name": "My Custom Mod",
  "description": "Adds a custom cleaner job.",
  "version": "1.0",
  "tags": ["job", "cleaner"],
  "workshop_id": [THIS IS THE ID OF YOUR MOD ON THE STEAM WORKSHOP. DO NOT TOUCH THIS UNLESS YOU KNOW WHAT YOU ARE DOING.]
}

Publishing Your Mod

When you're ready, upload your mod to the Steam Workshop via the in-game mod menu. Just open your mod in the popup and press the Upload button.

Once uploaded, your mod will show in Steam workshop but the visibility is set to private. If you are ready for your mod to be shown to the public, set the visibility to public in the Steam Workshop.

Happy modding!


💡 Tips

  • Use game_assets or example_mod as references.
  • Preview images are optional but help in the UI.
  • All folder and file names should be lowercase and consistent.
  • Test your mod thoroughly before publishing.
  • Consider starting with small modifications before attempting complex mods.