Erannorth Chronicles
Недостатньо оцінок
Editing Areas and Expanding the World Map with new Areas, Events & Challenges - Hands on Modding
Автор: [ER] Raven
Hi folks, In this short guide I'll show you how to add new repeatable areas, events and challenges in major or minor locations. Let's get started!
   
Нагородити
До улюбленого
В улюблених
Прибрати
Foreword
The sandbox mode and how locations are handled has seen many improvements in the second iteration of Erannorh's modding engine that Chronicles is using. So even if you modded locations in Erannorth Reborn, you'll probably want to read this guide and take advantage of the new features.

I will barely be scratching the surface of these systems. But hopefully will get you started understanding more the vanilla location files, and eventually expand them and create your own.

Let's get started!
World Locations Primer.
Locations
  • All Map location contents and properties are moddable through their location.json files but their spot in the map, ID & Location name can't be altered.
  • For instance, you can't really change Lanmerih's position (or name) in the map, but you can create your own areas in Lanmerih and/or edit any existing ones.
  • Each location can have up to 20 Areas.
  • Vanilla Location .json files are located in ../Expansions/Erannorth Chronicles/Locations/ and in the case of your mods must be placed in ../Mods/[Your Mod]/Locations

Major & Minor Locations
On a modder's perspective both are the same. To bring them to life you create or edit their location.json files. From world building perspective Major locations signify iconic/important landmarks or Towns. While Minor Locations, smaller settlements like thorps, potential player homes, or settings for your own adventures.

Let's hover over a few of them and see what they mean to us (as modders).

Major Location

Minor Location - Point of Interest

Minor Location - Currently Empty/Unused

Basic Location Properties
  • LocationName & ID: The location name and the ID.
  • IsStartingLocation:true or false. Only one should be set as true. Alternative starting locations are usually defined in player's Subspecies perks. But can be given as backgrounds too etc. So there isn't really a need to edit this property, unless you want to use an different initial player fallback location than Lanmerih.
  • HasTown: true or false. Create a settlement in this location.
  • TownName: [Town name]. Sets the settlement name. It doesn't really have to match the location's name.
  • AvailableActionTier: [Tier]. What actions tiers and expertise ranks can be found in this Town. ie. 3 means up to Tier 3 or Expertise 6 (2xTier).
  • Each location in Chronicles can have up to 20 different areas. Each area can have each own Stage either procedurally generated or with custom nodes. x below can be for every field a number between 1 to 20. i.e x => 1 to declare the first area etc.
  • Area_x_GraphicSet: You can use vanilla stage graphics sets [Arid Hills,Cherry Blossoms,Coastal,Cultist Lair,Devil's Keep,Eerie Clearing,Forgotten Ruins,Frozen Mesa,Gambling Parlor,Ghost Ship,High Garden,Icy Mountains,Infernal Gate,Jungle River,Lush Forest,Marsh,Mistwood Overlook,Moonstone Mines,Old Ruins,Old Temple,Scorched Fields,Shipwreck,Smuggler's Den,Submerged Temple,Treacherous Dunes,Valley Overlook,Witch Hut,Witch Lair]
  • Area_x_Name: The name of the area.
  • Area_x_isProcedural: true or false. Set the area to procedural or custom. Procedural stages never include a town node & may or may not include a boss as defined by Area_x_CompleteRequirements below.
  • Area_x_Length: If the are is procedural how many nodes it have?
  • Area_x_UnlockRequirements: a comma delimited Requirements string for the Area to show up. i.e Level:5, Class:Vampire. Area will be only available to level 5 vampire characters.
  • Area_x_CompleteRequirements: This field can be set to "Boss", "Challenge", "Endgame", "Event::Event Name" or left empty "". We'll cover this later in more detail.
  • Area_x_isRepeatable: true or false. Define if the area is repeatable or an one off adventure.
  • Area_x_MinEnemyTier: Min Enemy Tier
  • Area_x_MaxEnemyTier: Max Enemy Tier
  • The Base Enemy Max Level will be set temporarily to a value in between Min & Max Tiers. i.e 3 to 6, may set enemy Max level to 4 and the Boss to D4. Normal Enemies will then be level 1-4 while exploring this area. Next time you visit the same area can be different ie 1-3 and the Boss D3. etc.
  • Area_x_Nodes: A list of your custom nodes if the stage is not procedural. We'll cover this later in more detail.
  • "Area_x_Rewards":A list of card names, to award for completing this area. if left empty or has less rewards than needed they are randomly generated.
  • "Area_x_CoverArtwork":"ArtworkName", you can set a Cover Artwork for this area.
  • "Area_x_Description":"Short Description using <br> to indicate new lines". You can set a Flavor Description for this area.

Imports & Exports

  • Exports & Imports, are string lists containing a locations exports & imports (should match the tags you have set in your commodities)
  • i.e Let's say we have 2 Commodities: Spice & Sugar
  • if in a location they are Imports ( "Imports":["Spice", "Sugar"], ) it means that they are not native, have to be imported thus are more expensive to obtain than normal.
  • if in a location they are Exports ( "Exports":["Spice", "Sugar"], ) it means that they are in abudance, thus are cheaper to obtain than normal.

Custom Graphic Sets

Aside from providing your own graphic sets, you can also modify the look of the vanilla stages.
  • Modders can change the various Vanilla stage graphics with their own by placing their artworks (rec. 1920x1080) in Mods/ModName/CustomArtworks/Tales
  • These files must correspond to a vanilla graphic set prepended with Set[Vanilla Stage].png ie. "SetJungle River.png"
  • Vanilla Stages have the following names: Arid Hills, Cherry Blossoms, Coastal, Cultist Lair, Devil's Keep, Eerie Clearing, Forgotten Ruins, Frozen Mesa, Gambling Parlor, Ghost Ship, High Garden, Icy Mountains, Infernal Gate, Jungle River, Lush Forest, Marsh, Mistwood Overlook, Moonstone Mines, Old Ruins, Old Temple, Scorched Fields, Shipwreck, Smuggler's Den, Submerged Temple, Treacherous Dunes, Valley Overlook, Witch Hut, Witch Lair.
  • You can alternatively override all game stages (or those you didn't provide a special graphic for) with a single graphic by providing a "SetUniversal.png"
Anatomy of a Repeatable Area (and how to Override it).
This is a repeatable area inside Nereis.json.

"Area_1_GraphicSet": "High Garden",
"Area_1_CoverArtwork": "High Garden",
"Area_1_Name": "Nereis Outskirts",
"Area_1_isProcedural": true,
"Area_1_Length": 12,
"Area_1_UnlockRequirements": "",
"Area_1_CompleteRequirements": "",
"Area_1_isRepeatable": true,
"Area_1_MinEnemyTier": 5,
"Area_1_MaxEnemyTier": 7,
"Area_1_Nodes": [],
"Area_1_Rewards": [],


Now let's say that I don't like the enviroment and want to turn it into a coastal area. Scouring through the location files I dig up this area in Herman's Rest.json:

"Area_2_GraphicSet": "Coastal",
"Area_2_Name": "Herman's Cove",
"Area_2_CoverArtwork": "Cove",
"Area_2_isProcedural": true,
"Area_2_Length": 12,
"Area_2_UnlockRequirements": "",
"Area_2_CompleteRequirements": "",
"Area_2_isRepeatable": true,
"Area_2_MinEnemyTier": 5,
"Area_2_MaxEnemyTier": 7,
"Area_2_Nodes": [],
"Area_2_Rewards": [],

Perfect! So I need to change the Graphic Set to "Coastal" and my cover artwork to "Cove", as I don't want to provide my own artworks, and use the build in game graphics.

"Area_1_GraphicSet": "Coastal",
"Area_1_CoverArtwork": "Cove",
"Area_1_Name": "Nereis Outskirts",
"Area_1_isProcedural": true,
"Area_1_Length": 12,
"Area_1_UnlockRequirements": "",
"Area_1_CompleteRequirements": "",
"Area_1_isRepeatable": true,
"Area_1_MinEnemyTier": 5,
"Area_1_MaxEnemyTier": 7,
"Area_1_Nodes": [],
"Area_1_Rewards": [],


How can I make the game recognize this change? Do I provide the whole Nereis.json file?

Absolutely not! my modded Nereis.json should include just:

"ID": "Nereis",
"Area_1_GraphicSet": "Coastal",
"Area_1_CoverArtwork": "Cove",

I place it in Mods/My Custom Locations Mod/Locations and I am done.
Anatomy of a Challenge (and how to Override it).
Challenges are similar, but instead of being procedural we specify manually the nodes like so:

"Area_4_GraphicSet": "Smuggler's Den",
"Area_4_Name": "Galdorak's Lair",
"Area_4_Description": "According to the old Hermit an evil Galdorak witch plots his demise. He sounds a bit half crazy, but is willing to offer you a valuable family heirloom if you kill her to protect him.",
"Area_4_CoverArtwork": "Cave",
"Area_4_isProcedural": false,
"Area_4_Length": 5,
"Area_4_UnlockRequirements": "",
"Area_4_CompleteRequirements": "Challenge",
"Area_4_isRepeatable": false,
"Area_4_MinEnemyTier": 1,
"Area_4_MaxEnemyTier": 1,
"Area_4_Nodes": [
"DungeonEntry",
"Faction:Galdorak Horde",
"Faction:Galdorak Horde",
"Boss:Galdorak Wisewoman - Lv 3",
"Chest"

],
"Area_4_Rewards": [],
"Area_4_RewardsToPick": 2,

  • The "Chest" in the end marks it as a Treasure Hunt, but it's really just a Challenge.
  • Galdorak Wisewoman - Lv 3 isn't really a boss that's why I am specifying her level.

Creating Challenge Chains

To create a Challenge chain, all I need to do is set my UnlockRequirement as Challenge:[Name of Previous Challenge]

"Area_5_GraphicSet": "Lush Jungle",
"Area_5_Name": "Ascetic Life",
"Area_5_Description": "The old Hermit hires you to accompany him in the woods. Your field trip proves more dangerous than you expected. ",
"Area_5_CoverArtwork": "Chaos Hound",
"Area_5_isProcedural": false,
"Area_5_Length": 5,
"Area_5_UnlockRequirements": "Challenge:Galdorak's Lair",
"Area_5_CompleteRequirements": "Challenge",
"Area_5_isRepeatable": false,
"Area_5_MinEnemyTier": 3,
"Area_5_MaxEnemyTier": 3,
"Area_5_Nodes": [
"DungeonEntry",
"Faction:Wildlife",
"Faction:Wildlife",
"Faction:Wildlife",
"Boss:Chaos Hound"
],
"Area_5_Rewards": [],
"Area_5_RewardsToPick": 2,

Editing a Challenge

Now let's say that in Ascetic Life challenge I want to fight the Underworld. And as a boss face off both Horatio Bonwell and the Chaos Hound! You can have either one boss or two bosses together, by using Boss:Boss1+Boss2. ie.

My custom Nereis.json could have the following:

"ID": "Nereis",
"Area_5_MinEnemyTier": 5,
"Area_5_MaxEnemyTier": 5,
"Area_5_Nodes": [
"DungeonEntry",
"Faction:Underworld",
"Faction:Underworld",
"Faction:Underworld",
"Boss:Horatio Bonwell+Chaos Hound"
],

The Area_5_MinEnemyTier & Area_5_MaxEnemyTier will affect the random enemy levels, as bosses stats are fixed. So it's up to you to decide what level the player should be around and adjust them accordingly.
Adding a brand new Challenge (or Repeatable) to an area.
To add a new Challenge or area, take a number that doesn't exist in the json file. ie. Raven has reserved up to 7, for Nereis, and perhaps he will expand it later. So I should be safe claiming index 12 for my mod.

I must define all fields this time:

"Area_12_GraphicSet": "Lush Jungle",
"Area_12_Name": "The Four-headed Beast",
"Area_12_Description": "As you relax in a tavern, the bard sings of the three headed beast that lives in Nereis Rainforest and guards a mythical treasure. The song is (at least half) based on facts, as anyone who went to find this treasure never returned to confirm its existence. Maybe it will be worthwhile to investigate?",
"Area_12_CoverArtwork": "Hydra",
"Area_12_isProcedural": false,
"Area_12_Length": 6,
"Area_12_UnlockRequirements": "",
"Area_12_CompleteRequirements": "Challenge",
"Area_12_isRepeatable": false,
"Area_12_MinEnemyTier": 9,
"Area_12_MaxEnemyTier": 9,
"Area_12_Nodes": [
"DungeonEntry",
"Faction:Wildlife",
"Faction:Galdorak Horde",
"Faction:Wildlife",
"Boss:Four Headed-Hydra",
"Chest"
],
"Area_12_Rewards": [],
"Area_12_RewardsToPick": 2

I just copy pasted the area 7 here, and changed the Boss to Four Headed-Hydra who doesn't exist, unless I define it as an Enemy too, and the name (Challenge names must be unique) to The Four-headed Beast. Not many points in originality if I was a modder, but you get a point.

So my Nereis.json mod this time should contain these lines:

"ID": "Nereis",
"Area_12_GraphicSet": "Lush Jungle",
"Area_12_Name": "The Four-headed Beast",
"Area_12_Description": "As you relax in a tavern, the bard sings of the three headed beast that lives in Nereis Rainforest and guards a mythical treasure. The song is (at least half) based on facts, as anyone who went to find this treasure never returned to confirm its existence. Maybe it will be worthwhile to investigate?",
"Area_12_CoverArtwork": "Hydra",
"Area_12_isProcedural": false,
"Area_12_Length": 6,
"Area_12_UnlockRequirements": "",
"Area_12_CompleteRequirements": "Challenge",
"Area_12_isRepeatable": false,
"Area_12_MinEnemyTier": 9,
"Area_12_MaxEnemyTier": 9,
"Area_12_Nodes": [
"DungeonEntry",
"Faction:Wildlife",
"Faction:Galdorak Horde",
"Faction:Wildlife",
"Boss:Four Headed-Hydra",
"Chest"
],
"Area_12_Rewards": [],
"Area_12_RewardsToPick": 2

And that's it.
Merging all three mods together.
Now of course if I we were to make this Nereis.json mod, we wouldn't do three mods but one:

"ID": "Nereis",
"Area_1_GraphicSet": "Coastal",
"Area_1_CoverArtwork": "Cove",
"Area_5_MinEnemyTier": 5,
"Area_5_MaxEnemyTier": 5,
"Area_5_Nodes": [
"DungeonEntry",
"Faction:Underworld",
"Faction:Underworld",
"Faction:Underworld",
"Boss:Horatio Bonwell+Chaos Hound"
],
"Area_12_GraphicSet": "Lush Jungle",
"Area_12_Name": "The Four-headed Beast",
"Area_12_Description": "As you relax in a tavern, the bard sings of the three headed beast that lives in Nereis Rainforest and guards a mythical treasure. The song is (at least half) based on facts, as anyone who went to find this treasure never returned to confirm its existence. Maybe it will be worthwhile to investigate?",
"Area_12_CoverArtwork": "Hydra",
"Area_12_isProcedural": false,
"Area_12_Length": 6,
"Area_12_UnlockRequirements": "",
"Area_12_CompleteRequirements": "Challenge",
"Area_12_isRepeatable": false,
"Area_12_MinEnemyTier": 9,
"Area_12_MaxEnemyTier": 9,
"Area_12_Nodes": [
"DungeonEntry",
"Faction:Wildlife",
"Faction:Galdorak Horde",
"Faction:Wildlife",
"Boss:Four Headed-Hydra",
"Chest"
],
"Area_12_Rewards": [],
"Area_12_RewardsToPick": 2

And we'd leave alone any fields we don't want to edit, (and don't mind if they stay in their original form).
Claiming a Placeholder Location.
The world is full of placeholders waiting to hold your own adventures. So go grab a location and tell your stories. Let's say you want to have a dungeon underneath Greengale Mine.


Hovering over it shows me it's not a Point of Interest. So Raven hasn't done anything there yet. Probably my mod would be safe if I just use indexes above 12.

All I have to do is create a Greengale Mine.json.

Put the obligatory fields:

"ID": "Greegale Mine",
"LocationName": "Greengale Mine",


And anything else I want in. Maybe my four headed beast could live in there instead of Nereis?

Greengale Mine.json

"ID": "Greegale Mine",
"LocationName": "Greengale Mine",

"Area_12_GraphicSet": "Lush Jungle",
"Area_12_Name": "The Four-headed Beast",
"Area_12_Description": "As you relax in a tavern, the bard sings of the three headed beast that lives in Nereis Rainforest and guards a mythical treasure. The song is (at least half) based on facts, as anyone who went to find this treasure never returned to confirm its existence. Maybe it will be worthwhile to investigate?",
"Area_12_CoverArtwork": "Hydra",
"Area_12_isProcedural": false,
"Area_12_Length": 6,
"Area_12_UnlockRequirements": "",
"Area_12_CompleteRequirements": "Challenge",
"Area_12_isRepeatable": false,
"Area_12_MinEnemyTier": 9,
"Area_12_MaxEnemyTier": 9,
"Area_12_Nodes": [
"DungeonEntry",
"Faction:Wildlife",
"Faction:Galdorak Horde",
"Faction:Wildlife",
"Boss:Four Headed-Hydra",
"Chest"
],
"Area_12_Rewards": [],
"Area_12_RewardsToPick": 2

And now Greengale Mine just became a new Point of Interest! Assuming Raven or another modder don't use index 12, all our Greengale content will play along nicely.
Anatomy of Events
Your non-procedural areas can surely include events as their nodes. But in Chronicles you can just trigger events directly instead of having first to enter an area.

ie. Let's have look in Forest Lodge.json

"Area_2_Name": "Forest Lodge",
"Area_2_Description": "This secluded Forest Lodge is now free from bandits and all yours.",
"Area_2_CoverArtwork": "Forest Lodge Hut",
"Area_2_UnlockRequirements": "Challenge:Fargal Redcloak's Gang",
"Area_2_CompleteRequirements": "Event::Forest Lodge",
"Area_2_isRepeatable": true

After we defeat Fergal Redcloak (Challenge:Fargal Redcloak's Gang), we can have the Forest Lodge as our base. Event::Forest Lodge in complete requirements mark this as an Event, and it will trigger as event dialog instead of having us enter an area.

Let's say you want to add an Event in your Greengale Mine.json.

Greengale Mine.json

"ID": "Greegale Mine",
"LocationName": "Greengale Mine",
"Area_12_GraphicSet": "Lush Jungle",
"Area_12_Name": "The Four-headed Beast",
"Area_12_Description": "As you relax in a tavern, the bard sings of the three headed beast that lives in Nereis Rainforest and guards a mythical treasure. The song is (at least half) based on facts, as anyone who went to find this treasure never returned to confirm its existence. Maybe it will be worthwhile to investigate?",
"Area_12_CoverArtwork": "Hydra",
"Area_12_isProcedural": false,
"Area_12_Length": 6,
"Area_12_UnlockRequirements": "",
"Area_12_CompleteRequirements": "Challenge",
"Area_12_isRepeatable": false,
"Area_12_MinEnemyTier": 9,
"Area_12_MaxEnemyTier": 9,
"Area_12_Nodes": [
"DungeonEntry",
"Faction:Wildlife",
"Faction:Galdorak Horde",
"Faction:Wildlife",
"Boss:Four Headed-Hydra",
"Chest"
],
"Area_12_Rewards": [],
"Area_12_RewardsToPick": 2
"Area_13_Name": "Logan's Plight",
"Area_13_Description": "One of the miners looks troubled. Perhaps you could talk with him.",
"Area_13_CoverArtwork": "Artworks/Dwarf Miner",
"Area_13_UnlockRequirements": "Challenge:The Four-headed Beast",
"Area_13_CompleteRequirements": "Event::Logan's Offer",
"Area_13_isRepeatable": false
"Area_14_Name": "Logan's Forge",
"Area_14_Description": "Logan is happy to see you.",
"Area_14_CoverArtwork": "Artworks/Dwarf Miner",
"Area_14_UnlockRequirements": "QuestStateHelpedLogan:true",
"Area_14_CompleteRequirements": "Event::Logan's Forge",
"Area_14_isRepeatable": true

After we defeat the Four headed beast in Greengale mines, we gain access to the Logan's Plight quest, which can trigger a mini story/event called Logan's Offer.

And then once completed, it could unlock Logan's Forge through a quest state that we gave the player as during Logan's Plight. etc.

For these to work you need to create these events of course.

But that's how you'd go integrating your events with an area.

To learn more about creating your own Events check out this guide:

https://steamcommunity.com/sharedfiles/filedetails/?id=2657761250
Where to go from here?
If you need more help, jump into our Discord[discord.gg] #modding channel! I'll be happy to help and welcome you, as you embark in your magical modding journey. And of course if you come into any issues, I am all ears ;)

See you there!