I've decided to make this short tutorial, because I have never found any information on how to do it so I had to figure it out myself and it seems there might still be someone interested.
So, here goes:
You need to find, extract and edit "episodicscripting.lua" (The latest one for NTW is in patch4.pack I believe)
Inside (you can edit it with notepad, btw.) there's function that defines some options for all campaigns in game. It starts with:
local m_starting_configuration =
and it's followed by campaign name, like f.ex:
["tutorial"] =
and then all kinds of components, like
["Features"]
["Building"]
["Unit"]
["Intro_movie"]
Now, there's one section we're interested in, that looks like this:
["Battlefield"] = { },
there is scripting command "add_custom_battlefield" that this function calls for
Command: add_custom_battlefield
Description: Instead of a generated map, use a custom map for this location
Usage: add_custom_battlefield(x, y, radius, path_to_folder, fort/settlement)
What you need to do is add parameters this command expects inside brackets. You need to remember that every set of parameters must be in {} brackets and must be separated by a comma if there will be more than one entry.
usage example (it adds two custom battlefields):
["Battlefield"]= {{-93.30455, -21.82133, 20, "BattleTerrain\\presets\\NTW3_Austria_6\\", true}, {-25.31408,-17.83595, 20, "BattleTerrain\\presets\\ntw3_hist_aspern1809\\", true}},
The X and Y coordinates for certain places, like towns and other slots can be found in regions.esf file
path in regions.esf:
Root/Region_Data/Regions/REGION-NAME-HERE/settlement_and_slots/slot_descriptions
4th line from the top contains x,y coordinates you can use
for "radius" I used 20, because smaller values did not always work, since city model can be quite large and your army might not be able to reach those exact coordinates.
"path" should be self explanatory
"fort/settlement" tells the game if this map should be used for fort/settlement battle so it's true/false.
I actually never used it like that, but I suspect that you might have two entries with the same coordinates and one with "true" will be used when attacking a city and the other when fighting open field battle.
Now, this should do it, BUT...
in most cases it will crash the game.
I've discovered that what causes the crashes is "weather.xml" file inside custom battlefield folder.
Probably it's the .environment file that's declared iside that's creating problems, but I haven't played with it- I simply removed weather.xml from the folder and it does the trick.
If you want to use NTW original preset files, then you could extract the preset folder, rename it, delete the file from there and use the battlefield under new name.
It should work now.
The problem is that those battlefields will always look the same, so you might end up fighting summer map in winter. There might be something to be done about that probably,as you can edit some values in textures.xml and definition.xml inside preset.
Fun thing is, you can make changes to episodicscripting.lua during your campaign game, so you can save the game, exit, add new battlefield (modify or delete one) and those changes will be included when you load the game.
Hope this helps. Have fun.