Erannorth Reborn Modding Guide – How to Add new Events (Or Edit Existing Ones)

Welcome, visitors. In this guide, We try to focus on Erannorth Reborn Modding Guide – How to Add new Events (Or Edit Existing Ones). While writing this guide, we pick up many pieces of information from several sites for you. We hope that this guide will help you.

How to Add new Events (Or edit existing ones)

You can expand the current Events system, with your own events, by providing the .json file of the event. Any suitable .json files in the ../Content/Tales directory, or ../Mods/[Your Mod]/Tales directory will be added into the events database.

You can also provide custom artworks, 1 or 2 layers, by copying your artwork png files in ../Content/CustomArtworks/Tales or ../Mods/[Your Mod]/CustomArtworks/Tales.

Before I explain the file structure let’s see an example:

{“ID”: “Merchant Awake”,
“Requirements”: “”,
“Unique”: false,
“AutoIncludeOnwards”: true,
“AutoIncludeInEventNode”: false,
“BackgroundGraphic”: “”,
“MainGraphic”: “Merchant”,
“Title”: “You come across a wandering Romani caravan”,
“Narrative”: “Their leader looks at you warily as you approach. His voice is shaking as he speaks, but still offers you hospitality according the Romani tribe customs.\n\n<i> ‘Greetings friend. My water is your water…’ </i>”,
“Choice_1”: “Ask to see their wares.”,
“Choice_1_Requirements”: “”,
“Choice_1_Outcome”: “His smile brightens at this question, and his voice becomes more confident. ‘Come. Come friend. This way.'”,
“Choice_1_Reward”: “”,
“Choice_1_ExecuteFunction”: “Merchant”,
“Choice_2”: “Ask if you can buy any rations [-25 Farthings].”,
“Choice_2_Requirements”: “”,
“Choice_2_Outcome”: “He nods, and his voice becomes more confident. ‘Yes, of course. We have food for all tastes! Come friend. This way.'”,
“Choice_2_Reward”: “”,
“Choice_2_ExecuteFunction”: “Rations”,
“Choice_3”: “Ask if you can camp here for the night [-1 Ration].”,
“Choice_3_Requirements”: “”,
“Choice_3_Outcome”: “He nods, and his voice becomes more friendly. ‘Yes, friend. All the wanderers are welcome here. You can set up your tent there.’\n\n<i>8 hours later…</i>\n\nYou wake up feeling refreshed.”,
“Choice_3_Reward”: “”,
“Choice_3_ExecuteFunction”: “Camp”}

This is the merchant when he is awake.

What each field does

Don’t be scared, it’s much simpler than it looks. Let’s see what each field does:

ID: ID needs to match with the filename, and it has to be unique. It’s how internally I request these files. (This value isn’t displayed in the user)

Requirements: This field is taken into account only if Unique is true. I’ll be explaining what you can put in this field a bit later.

Unique: false or true, Specifies whether this event can only appear once in a run, or more than once.

AutoIncludeOnwards: false or true, Specifies whether to include a “Leave” button automatically to save time from creating one. You can still create one manually though. (For example if you are translating the event into a different language.

If the Leave button is auto-included it will take the first available slot 1 to 4.

AutoIncludeInEventNode: false or true, if this is true this event can appear in the ‘Event’ (Questionmark node) You probably want this value to be true, otherwise you’ll have no way to test your event!

BackgroundGraphic: A Background graphic name. Just the filename without the png extension. You don’t have to provide one, if your main graphic doesn’t have transparency.

MainGraphic: Your main graphic. Again just the filename without the png extension. You should always provide at least a main graphic, but it can be the same for all your events.

Both Main & Background graphics are 700x700px but only the middle (2/3) vertical part is displayed.

Title: The title of the event, as displayed to the user

Narrative: The story or what this event is about. You can add newlines using the\n special character, bold, italic & underline using html syntax. ie. <b>this is bold</b>

Choice_x (1-4): The choice as it will be displayed to the user.

Choice_x_Requirements (1-4) If any of these requirement isn’t passed the choice will appear disabled.

Choice_x_Outcome (1-4) The text that will be shown as a result of the player’s choice (Replaces the Narrative text).

Choice_x_Reward What we’ll reward the player for choosing this option

Choice_x_ExecuteFunction We can execute a specified function, (& in future builds chain scenes together.)

Giving rewards to the player


Each choice reward field can accept:

  1. a) the name of a perk as value.
  • Perks can be awarded only once, so make sure they are unique and not part of a class or race perk list.
  • Perk description is appended in the story outcome text.
  • The Perk XP unlock cost is ignored and has no effect, but it still need to be set when declaring the perk.
  1. b) Craft:Cardname, to craft and give player a copy of Cardname
  • i.e Craft:Reanimate, will give player a copy of Reanimate in hand
  • Card can be an equipment card, but that won’t equip that equipment or add it to the player’s inventory
  1. c) Cast:Cardname, to use Cardname on the Player
  • i.e Cast:Omega, will summon the Omega unique companion
  1. d) NextNode:[Node] can be used as a choice reward to change the next Stage node into [Node] which can also be a Tale ID. ie. NextNode:Merchant, will summon a merchant in the next node, and NextNode:Adventurer Corpse I, a dead adventurer to loot.e) Triggering Encounters:
  • Encounter:[Random] & [RandomElite] can be used as choice reward to trigger a random Normal or Elite Encounter
  • Encounter:[Enemy – Lv x], can be used as choice reward to trigger encounter with a specified enemy (Enemy needs to exist in DB). i.e Order Recruit – T2, can be found from Level 2 to 12 (Non-Boss Enemies have a DB entry from Level [Tier] till Level [Tier + 10]).
  • For example you can use “Choice_1_Reward”:”Encounter:Order Recruit – Lv 2, Encounter:Order Recruit – Lv 3″ to summon 2 Order Recruits to fight the player, if they take this choice. But “Encounter:Order Recruit – Lv 1” wouldn’t have any effect as this enemy doesn’t exist.
  • You can see the Enemy Tiers in the compendium and calculate their level range
  • When triggering encounters from Events, the event box will hide, and choice outcome will display in the combat log.
  1. f) A comma separated list of all the above
  • i.e Morheliss Blessing, Cast:Omega, Craft:Fireball, Craft:Fireball
  • Choice will grant: the Morheliss Blessing perk, Cast Action ‘Omega’ and craft 2 Fireball Copies, (not that the particular combo makes any sense, but you get the point)


Chance-based Rewards

  • All reward keywords can be turned into chance for a ‘reward’ by prepending ‘Chance>x>’ before the [Reward]
  • i.e “Choice_1_Reward”:”Craft:Firebolt, Chance>25>Encounter:Random”
  • Will give player a ‘Firebolt’ in hand, but also has a 25% chance to trigger a random encounter
  • i.e “Choice_1_Reward”:”Craft:Firebolt, Chance>50>Craft:Firebolt, Chance>25>Cast:Firebolt”
  • Will give player a ‘Firebolt’, adds a 50% chance to get an additional ‘Firebolt’, and a 25% chance to have a Firebolt blow on Player’s face (with stats as if casted by the Player)


Restricting choices based on player’s stats & attributes

Each choice requirement field can accept:

a) Race:[Race], will check if the Player is of chosen race
b) Class:[Class], will check if the Player is of chosen class
c) Gender:[Gender], will check if the Player is of chose gender
d) [Attribute]:x, will check if the Player’s [Attribute] is higher/equal to x. ie. Strength:15
e) Level:x, check is passed if the player level is higher/equal than x
f) Stage:x, check is passed if the current stage is higher/equal than x
g) A comma separated list of all the above

  • i.e Race:Vampire, Strength:20, Agility:20
    [*[ Choice will become non interactable if the player fails in any of the checks.
  • Unique Tales can also have a ‘Requirements’ field, and the player needs to pass their requirements before the tale appears

Using the function field

You can use the “Choice_x_ExecuteFunction” field to either execute a function or chain another tale id. Current functions are: Camp, Rations, Chest, Backpack, Pouch, Grimoire, Journal, Merchant, Town, Cave, Bandit Camp, Dungeon, Path & Onwards.

Tales can also be chained by using the Tale ID as the function to execute (this will work if there isn’t already a function of the same name)

i.e “Choice_1_ExecuteFunction”:”Adventurer Corpse I”

Let’s create a simple event:

{“ID”: “Morheliss Shrine”,
“Requirements”: “”,
“Unique”: true,
“AutoIncludeOnwards”: true,
“AutoIncludeInEventNode”: true,
“BackgroundGraphic”: “”,
“MainGraphic”: “Morheliss Shrine”,
“Title”: “You come across a shrine dedicated to Morheliss”,
“Narrative”: “Bones and skulls decorate this old shrine dedicated to Morheliss, the Goddess of Death & Undeath. “,
“Choice_1”: “Make a blood offering to the Goddess”,
“Choice_1_Requirements”: “Class:Blood Mage”,
“Choice_1_Outcome”: “You don’t have anything else at hand to offer, other than your own blood.\n\n<i>’May the Goddess’ hand guide my actions'</i>, you whisper as you make a cut in your hand, and let the blood flow freely.”,
“Choice_1_Reward”: “Morheliss Blessing”,
“Choice_1_ExecuteFunction”: “”}

This is an example of a unique event, the choice to do a blood offering is only available for a Blood Mage character & once the make this choice they’ll be awarded the perk Morheliss Blessing.

And that’s it!

Additions in Build 0211

  • Requirements fields can now check for a particular environment, location and/or area
  • [New] “Environment:[Environment Type]”
  • [New] “Location:[Location Name]”
  • [New] “Area:[Area Name]”
    • ie. “Environment:Dungeon”, in event or (event choice) will only show up if the player is in a Dungeon.
    • ie. “Location:Lucina, Area:McMagnus Cove”, in event or (event choice) will only show up if the player is adventuring in ‘Lucina’ and in particular at ‘McMagnus Cove’.
  • All Requirements can now act as their reverse by prepending ‘Not:’
    • i.e Not:Class:Shadow, will pass the check only if the player isn’t a Shadow.
  • Requirement field in a ‘Tale’ object can now be used for both Unique & non Unique instances.
    • If the Requirements of a unique event aren’t met it will fall back into a random non-unique event.
    • If the Requirements of a non-unique event aren’t met it will fall back into the adventurer corpse looting scenario.
  • Rewards field additions:
    • [New] ‘RemoveChoice:All’, Once the choice picked will remove all other choices from the player except onwards. Useful when you want the player to only pick one choice.
    • i.e Pick the Lock or Bash the Lock? Save the merchant guards from bandits or join the bandits vs the guards? etc.
    • [New] ‘Invoke:[Discipline]’, will create a random card copy from the chosen discipline, which can be of any tier or type so handle carefully
    • Equipment summoned this way has to be used this turn, otherwise it’ll get discarded at EOT.
    • i.e Invoke:Loot, will create random loot card copy.
    • But I mainly create this to be used in Events to gather herbs, fish etc.
    • i.e assuming you have a Herbs card type (Vanilla DB now contains 19 Herbs) you could then do: Invoke:Herbs, to get a random card from that category.
  • Modder-Exposed Functions (changes & additions)
    • [Changed] ‘Backpack’ function generates 2 lootable items (Previously was 2 to 4).
    • [New] ‘BrokenChest’ function: will generate 1 to 2 lootable items.
    • ‘Chest’ function is unchanged and will still generate 2 to 4 lootable items. But neither of the three (Backpack, Chest or BrokenChest) mentions anywhere what container player looted, so you can use any of them for any lootable container.
    • [New] ‘Feed’ function: Vampire characters can feed to restore 15 AP & 10 HP in the process.


Additions in Build 0211.1

  • Requirements fields can now check if the player has enough Farthings
    • [New] “Farthings:[Amount]”, i.e Farthing:50, will return true if the player has 50+ Farthings
  • Reward fields can now give directly as reward: AP, HP, XP, Farthings & Rations (without relying on special function or creating new perks)
    • [New] ‘RemoveChoice:This’, Will remove the current choice, not allowing to be picked twice. Executing most functions already include this behavior, so this is useful when you don’t want to execute a function.
    • [New] Farthings:[Amount], i.e Farthings:-30, will take 30 Farthings from Player
    • [New] Rations:[Amount], i.e Rations:2, will give 2 rations to the Player
    • [New] HP:[Amount], AP:[Amount] & XP:[Amount], will directly increase or decrease Player’s AP, HP & XP
  • Modder-Exposed Functions (changes & additions)
    • ‘Store:[Discipline]’, will open a merchant inventory with cards from that discipline
    • ie. “Store:Herbs”, will open a Herbalist’s inventory.

Custom PC Avatars

Editing Action Cards

Creating New Actions from scratch

Modloader.conf Comes in Play

Action Effects

Editing and Adding new Enemies

Archetype files for Classes & Races

Adding custom Classes & Races

The Mods Folder and Distributing your Mod

Creating New Game Modes & Adjusting Difficulty Settings

Adding Custom Perks to Core or Custom Races & Classes

Chaining Events to create Short multi-outcome Stories

Creating Custom Stages & Adding them to Game Modes

Modding the Sandbox Mode

This is the ending of Erannorth Reborn Modding Guide – How to Add new Events (Or Edit Existing Ones) guide. I hope it will help you. If there is wrong or you have suggestions, please let’s know and comment us. Have fun.

Similar Posts:

Written by Raven

Leave a Reply

Your email address will not be published.