Making History: The Calm & The Storm

Making History: The Calm & The Storm

Not enough ratings
Making History how to mod.
By braxt
A full comprehensive guide of Making History modding.
   
Award
Favorite
Favorited
Unfavorite
Starting a new nation
To create a custom nation is very simple.

First launch Making History, when the window pops up asking if you want to play "Making history: The calm and the storm" Or "Launch Making History Editor" Click the Editor.

In the upper left, under the "File" tab theres an Icon that looks like a piece of paper, when you mouse over it, it says "New". Click it.
Select your favorite scenario, or any scenario really. Then click "ok"

The editor will load the scenario, you can move the camera around with arrow keys and dragging the camera.
Under the "Open" "Save" and "New" Icons there is a bunch of tabs such as
"Global Data" "Nations" "Land Regions" Etc...
Click on the "Nations" Tab. At the bottom of the "Nations" Window there is Add, Edit, and Remove.
Click the Add button.
Name the Country what ever you want and click Ok
There will now be a new window open on the right, where you used to view the map.
You can change your government, Capital, and nation type on this window.
First, ignore the capital part, we'll use that later.
Choose your government type to whatever you want.
Click on "Nation Type" and select "Playable"
And click on the check box labeled "Surrendered"
click the "Apply" button in the lower right corner of the page.

The first part of your nation is completed, but now we have to assign it some regions.
On the top of your nation's window there is two tabs "Edit Object" and "Map"
Click map.
Look around the map for whichever region(s) you want your nation to own.
Once you have found the region you want double click it.
A window will pop up showing the owner, and controller of the region, as well as the culture, population, terrain, and infrustructure levels.
For owner, click "Change" and find your new nation's name in the list then select it.
Do the same for "Controller"
Keep an eye on the Culture too, we will have to add that to your nation later.
Once you're done, click "Apply"
The color of the region will change to either white or some dark color (We will get to changing nation's colors later)
If the region you transferred to your nation has any armies in it then they need to be assigned to your nation. Just double click the army and select your nation as its owner.

(Note: If the region you transferred is a capital region of another country the capital needs to be re-assigned, or surrendered if you assigned all its regions to you. You can do either of these by clicking on said nation's name in the nations tab)

Now that you own a region, you need to select a capital and "Un-Surrender" your country.
So click back to the "Nations" Tab and find your country in the list, and double click on it.
(If the region you chose has no cities, then you won't be able to have a capital, duh)
So click the change button next to "Capital" and select the city of your choosing.
Then uncheck the "Surrendered" box.

Then scroll down to the bottom and find "Cultures"
Click add and add the culture(s) of your choosing, make sure you have the culture of the regions you assigned!

Once you're done, click "apply" once more, and then save. Your new country is ready for playing!
Changing the nation's flag/icons
Your new country is ready for playing! But, you may have noticed that your
capital's flag is white, and the icon for your units are white squares.

This is because you don't have any flags or icons assigned for your units.
To fix this, go to: C:\Program Files\Steam\steamapps\common\Making History The Calm and The Storm\Modern Europe\system\UI\art\2D\countries

This is the folder that holds the files of all the countries flags and icons.
Create a folder named exactly how you named your country.
For now, select another random country to mimic its flag/icons from.
Copy all of, lets say the United States files, into your countrie's folder.
When you reboot the editor your country will now have all the icons and the flag of the United States.

If you want different or custom flags/icons just go back into your folder and edit the files in there. The icon on your troops is "decal.tga" and the flag at your capital is "3Dflag.tga" (Make sure that one is upside down).
Changing the nation's color
If you want to change your nation's color go to
C:\Program Files\Steam\steamapps\common\Making History The Calm and The Storm\Modern Europe\system\scenarios\(Your Scenario)
And find the .xml file "Game state"
The code here is acctually pretty simple. The
<property name="colCountryColor" value="#BlahBlahBlah"/> is where your color code goes.

First, we're gonna want this code <property name="colCountryColor" value="#BlahBlahBlah"/>
If you're using notepad, hold down Ctrl and press F, type in your countries name in the search bar, and it'll take you to it.
When you've found your country code it'll look like this:

</object>
<object type="Player" name="objPlayers">
<property name="strName" value="TestCountry"/>
<property name="sidName" value="SID.Game.Country.Name.TestCountry"/>
<property name="sidShortDescription"
<property name="sidShortDescription" value="SID.Game.Country.Description.ThePoliticsOfAppeasement343434.TestCountry"/>
<property name="bNonPlayable" value="true"/>
<property name="strFlagName" value="TestCountry"/>
</object>

Place this in bewtween right above the "</object>" at the end of the code like this:

</object>
<object type="Player" name="objPlayers">
<property name="strName" value="TestCountry"/>
<property name="sidName" value="SID.Game.Country.Name.TestCountry"/>
<property name="sidShortDescription"
<property name="sidShortDescription" value="SID.Game.Country.Description.ThePoliticsOfAppeasement343434.TestCountry"/>
<property name="bNonPlayable" value="true"/>
<property name="strFlagName" value="TestCountry"/>
<property name="colCountryColor" value="#BlahBlahBlah"/>
</object>

Now that its in place, make sure to replace the BlahBlahBlah part of "value="#BlahBlahBlah"/>
You can use a custom code, but they usually end up in crashing. I suggest copying a code from a country you like the color of, we'll use Albania as an example which is this: <property name="colCountryColor" value="#CB2100FF"/>
And if you want to use a custom code, make sure it starts with a #, and ends with FF. It also has to have 6 characters besides the FF and #. Example of a custom color code: <property name="colCountryColor" value="#1060FFFF"/> This makes a light-ish Blue color.


How to edit relations
When your nation is created, you might notice that every nation's relation towards you will be Terrible.

To fix this follow these steps.

1. Go to your scenario folder. E.g. C:\Program Files\Steam\steamapps\common\Making History The Calm and The Storm\Modern Europe\system\scenarios

2. Open the scenario that has your nation in it

3. Find the player folder of your nation. I'll use west Africa as an example, if I was looking for it's player folder, it would be named "

Now, the code of your nation may look a bit different compared to this, but this is what it'll look like if you haven't done much work on it.

<?xml version="1.0" encoding="UTF-8"?>
<objects name="Object Load" version="0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<object type="MEPlayerData" name="">
<property name="strName" value="West Africa"/>
<property name="strOwner" value="West Africa"/>
<property name="strFoggees" value="West Africa"/>
<property name="strHLPDefLists" value="Default"/>
<property name="strDipRelProcListName" value="Neutral"/>
<property name="strAITreatyEvalListName" value="Neutral_Isolationist"/>
<property name="eInternationalPosition" value="PLAYER_INTERNATIONAL_POSITION__NEUTRAL"/>
<property name="nInternationalInvolvement" value="1"/>
<property name="nAggressiveNature" value="4"/>
<property name="nMilitaryPosture" value="7"/>
<property name="nMilitaryDoctrine" value="5"/>
<property name="nDomesticPolicy" value="7"/>
<property name="nSciencePolicy" value="6"/>
<property name="nPoliticalStability" value="21"/>
<object type="ResearchProjectInitRef" name="objInitResearchRefs">
<property name="strProjectName" value="FieldArtillery"/>
<property name="eResearchState" value="RESEARCH_COMPLETED"/>
</object>
</object>
</objects>



What we're looking at here is the end bit, right here. The "</object> </object> </object>"
This is where you're going to need to add your new code, which is this. (This is the default code for relations)

</object>
<object type="DipRelInitialValueList" name="objDipRelInitialValueList">
<property name="nDefault" value="500"/>
<object type="DipRelInitialValue" name="objDipRelInitialValues">
<property name="strTargetCountry" value="Communist China"/>
<property name="nValue" value="0"/>
</object>
</object>
</object>
</objects>

So, what you need to do is replace those three "</object> </object> </object>"s with this. Heres what it would look like if you did it:

<object type="MEPlayerData" name="">
<property name="strName" value="West Africa"/>
<property name="strOwner" value="West Africa"/>
<property name="strFoggees" value="West Africa"/>
<property name="strHLPDefLists" value="Default"/>
<property name="strDipRelProcListName" value="Neutral"/>
<property name="strAITreatyEvalListName" value="Neutral_Isolationist"/>
<property name="eInternationalPosition" value="PLAYER_INTERNATIONAL_POSITION__NEUTRAL"/>
<property name="nInternationalInvolvement" value="1"/>
<property name="nAggressiveNature" value="4"/>
<property name="nMilitaryPosture" value="7"/>
<property name="nMilitaryDoctrine" value="5"/>
<property name="nDomesticPolicy" value="7"/>
<property name="nSciencePolicy" value="6"/>
<property name="nPoliticalStability" value="21"/>
<object type="ResearchProjectInitRef" name="objInitResearchRefs">
<property name="strProjectName" value="FieldArtillery"/>
<property name="eResearchState" value="RESEARCH_COMPLETED"/>
</object>
<object type="DipRelInitialValueList" name="objDipRelInitialValueList">
<property name="nDefault" value="500"/>
<object type="DipRelInitialValue" name="objDipRelInitialValues">
<property name="strTargetCountry" value="Communist China"/>
<property name="nValue" value="0"/>
</object>
</object>
</object>
</objects>

Now if you load up the game, people won't hate your nation any more.

Theres another thing you can do with this, and that is set certain relations for each nation.
If I wanted to add another relation on here, like I wanted the United States to really love me then I would have to put code in their player file to like me, and code in my player file to like them.

Heres an example of Canada and U.S. relations, the U.S. has this code:

</object>
<object type="DipRelInitialValue" name="objDipRelInitialValues">
<property name="strTargetCountry" value="Canada"/>
<property name="nValue" value="740"/>

And Canada has this code:

</object>
<object type="DipRelInitialValue" name="objDipRelInitialValues">
<property name="strTargetCountry" value="United States"/>
<property name="nValue" value="740"/>


Something to remember while modding the relations is always have 4 <object>'s end it. Or else it will crash, here's an example.

</object>
<object type="DipRelInitialValue" name="objDipRelInitialValues">
<property name="strTargetCountry" value="Communist China"/>
<property name="nValue" value="0"/>
</object>
</object>
</object>
</objects>
Modding AI: International Positions
You can mod how the AI acts to a decent extent. If you want to mod a certain nation to act a little different, open up their player folder, like "playerGermany

<property name="strOwner" value="Germany"/>
<property name="strFoggees" value="Germany"/>
<property name="strHLPDefLists" value="Default"/>
<property name="strHLPDefLists" value="Playable"/>
<property name="strPLPDefLists" value="Playable"/>
<property name="strHLPInitialValueListBundleName" value="Germany"/>
<property name="strDipRelProcListName" value="Expansionist"/>
<property name="strAITreatyEvalListName" value="Expansionist_Interventionist"/>
<property name="eInternationalPosition" value="PLAYER_INTERNATIONAL_POSITION__EXPANSIONIST"/>
<property name="nInternationalInvolvement" value="27"/>
<property name="nAggressiveNature" value="24"/>
<property name="nMilitaryPosture" value="25"/>
<property name="nMilitaryDoctrine" value="15"/>
<property name="nDomesticPolicy" value="21"/>
<property name="nSciencePolicy" value="30"/>

This is all the code that encompasses how they act, that I know how to mod correctly so far. (Theres a lot of other things that change how they act)

First lets take a look at this part of the code:

<property name="strDipRelProcListName" value="Expansionist"/>
<property name="strAITreatyEvalListName" value="Expansionist_Interventionist"/>
<property name="eInternationalPosition"

These are called International positions, atleast that's what I call them. There's a few of these and I'll list what each acts like. So lets start with the german one, "Expansionist".
The Expansionist positision is just that, Expansionist, they constantly declare war on people to gain more land, and are very, very agressive.



Next is the Neutral Isolationists

<property name="strDipRelProcListName" value="Neutral"/>
<property name="strAITreatyEvalListName" value="Neutral_Isolationist"/>
<property name="eInternationalPosition" value="PLAYER_INTERNATIONAL_POSITION__NEUTRAL"/>

This is the most common stance, it's usually seen among the small nations, like Greece, Nepal, Panama, etc.
This stance is as common as it is boring, all the countries with this stance sit around the entire game doing nothing. If you want an interesting AI nation, don't give them this.


Next is Status Quo Isolationists

<property name="strDipRelProcListName" value="StatusQuo"/>
<property name="strAITreatyEvalListName" value="StatusQuo_Isolationist"/>
<property name="eInternationalPosition" value="PLAYER_INTERNATIONAL_POSITION__STATUSQUO"/>

The Status Quo Isolationists are less neutral, but also very quiet nations. What I mean by that is they don't get involved too much. A nation of this stance will be less neutral than Neutral Isolationists, but they still hardly ever declare war, or join world affairs. Examples of this nation would be Czechoslovakia, Australia, and New Zealand.

Thats all for International positions, maybe. You might be able to mix them up like
"StatusQuo_Expansionist" but I haven't tried that.








Modding AI: Some values
I'll now explain this part of the code:

<property name="nInternationalInvolvement" value="27"/>
<property name="nAggressiveNature" value="24"/>
<property name="nMilitaryPosture" value="25"/>
<property name="nMilitaryDoctrine" value="15"/>
<property name="nDomesticPolicy" value="21"/>
<property name="nSciencePolicy" value="30"/>

First off, International involvement.

If you have a high level of international involvement on an AI nation, they'll get involved in wars a lot, mainly in defending other nations. Example would be the United Kingdom allying Poland when Germany declares war on them.

Agressive Nature is just that, how agressive a nation is. If its a high level like 50 they will declare war on almost everyone bordering them within a few turns. If its a low level like 1, they will sit there not doing anything the entire game.

Military Posture is how militaristically powerful a nation will try to stay.

Military Doctine I believe is how useful of an ally they'll be towards you, if its something high like 30, they would send a lot of units to help in your wars, if it's something low like 1, they won't be much help.

Domestic policy is how much attention the AI gives to its borders, if an AI had 1 Domestic policy, and I stationed a 100 man army outside their border, they wouldn't think too much about it. If it was 30, they would send a larger army to defend their border.

Science Policy is how much attention they give to new tech, if its low like 1, they would never research past what they have at the start of the game, and if its 30, they will constantly be researching new things.
Things that need to be added on the Tutorial.
  • How to import unit models from different games, (lost knowledge)*How to have a country declare war on another country at a specific date.(Still haven't figured this out)
  • How to change the chance for a coal, foundry, or oil resource to expand.
  • How to change population growth.
  • How to change IPU cost for anything and everything.
  • How to change MPU cost for anything and everything.
  • How to modify the region effects, e.g. Giving a Tundra region +50% defense, instead of whatever the vanilla value is. Or giving the plains regions a 20x food production boost. Etc.
  • How to make a nation like nazi Germany, a highly scripted nation that attacks very specific nations at specific times.

This list will likely grow over time. I know how to do most of this crap, but I haven't written it yet. If someone comments, and asks for me to write I'll go and finally do it.
How to change a nation's unit models.
If you want to change a nation's unit models, here's how.
The file we will be modifying is inside: C:\Program Files (x86)\Steam\steamapps\common\Making History The Calm and The Storm\Modern Europe\system\DisplayLibraries\SpriteMaps

There are two files actually, one for land, and one for air.
MKDTableCountryAliasesLand.xml
MKDTableCountryAliasesAir.xml

We'll start with land units. So open up MKDTableCountryAliasesLand.xml

Find the nation who's units you want to have for your new nation. For this example we'll use the USSR.
If you scroll down a bit, you can find the USSR code, which is

<!-- USSR -->
<object type="MKDNode" name="objNodes">
<property name="strKey" value="USSR"/>
<property name="strSubNodeKeyName" value="CountryAliasLand"/>

<object type="MKDNode" name="objNodes">
<property name="strKey" value="Advanced Tanks"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Advanced Tanks"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Early Tanks"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Early Tanks"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Field Artillery"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Field Artillery"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Heavy Artillery"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Heavy Artillery"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Heavy Tanks"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Heavy Tanks"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="ICBM"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR ICBM"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Idle Infantry"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Idle Infantry"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Infantry"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Infantry"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Light Artillery"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Light Artillery"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Light Tanks"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Light Tanks"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Marching Infantry"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Marching Infantry"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Mechanized"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Mechanized"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Medium Tanks"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Medium Tanks"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Motorized"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Motorized"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Mounted Infantry"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Mounted Infantry"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Rocket Artillery"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Rocket Artillery"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Self-Propelled Artillery"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR Self-Propelled Artillery"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="V1 Rocket"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR V1 Rocket"/>
</object>
</object>
<object type="MKDNode" name="objNodes">
<property name="strKey" value="V2 Rocket"/>
<object type="SpriteRefName" name="objDefault">
<property name="strSpriteName" value="USSR V2 Rocket"/>
</object>
</object>
</object>

Here we can see literally every single land unit used by the USSR.

You need to copy the ENTIRE code of a nation, and paste it at the bottom.
( IF YOU PUT THE CODE AT THE BOTTOM OF THE FILE, IT NEEDS TO END WITH:
</object>
</object>
</object>
</object>
</objects>
BUT IT DOES NOT NEED TO END WITH THAT IF ITS IN THE MIDDLE, OR ANY WHERE ELSE.)

And make sure the nation's code that is BEFORE your new code, ends with

</object>
</object>
</object>

If all that is in check, you just need to rename some values in the code that you just copy-pasted.
The only part you need to edit is the start of it, right here:
<!-- USSR -->
<object type="MKDNode" name="objNodes">
<property name="strKey" value="USSR"/>
<property name="strSubNodeKeyName" value="CountryAliasLand"/>

We'll use Madagascar as an example of how to edit it,

<!-- Madagascar -->
<object type="MKDNode" name="objNodes">
<property name="strKey" value="Madagascar"/>
<property name="strSubNodeKeyName" value="CountryAliasLand"/>

Save your file, load up a game with your custom nation in it, and it should have different unit models now.

If you play online your friends wont see the new unit models. Only you will if you use this method. There is another method where you actually put those two CountryAlias files inside your scenario folder, and edit them from there, but I'm too lazy to get that to work. Just use this method and give your alias files to them through downloads or something.
The End
Congratulations, you now have a fully functioning nation. I'll likely add a section where I explain how you get different looking troops into your nation later on.
41 Comments
braxt  [author] 11 Jan @ 7:15pm 
It is unfinished, and may never reach the glory it could've because Semyon died. :steamsad:
OnO 11 Jan @ 5:46pm 
This was truly the greatest mod guide, and the greatest game in existence. I remember this back in 2010. Good Times, thanks Braxt for the modding guide of all time.
braxt  [author] 11 Jan @ 1:41pm 
very strange, long, and difficult process. We had one Russian modder in the community who once knew how to do this, so if you wanna download his mods and try to reverse engineer it, be my guest. But that guy was a turbo autist at modding. He also left to go become an orthodox Monk, so we can never contact him again. Join the MH discord for his mod downloads.
Tom Barnaby 2 Jan @ 7:27am 
hey. how to create events? like built-in austrian crisis (pop-up window)
OnO 18 Oct, 2023 @ 6:26am 
I still love to make nations on a game from the stone age. Thank you for your wisdom, Grand Vizier.
契丹疯子鱼#C.Q 31 Dec, 2022 @ 10:19pm 
How to have a country declare war on another country at a specific date.How to make a nation like nazi Germany, a highly scripted nation that attacks very specific nations at specific times.

I am tried to figure out this but still get nothing:steamsad:
OnO 21 Jan, 2022 @ 7:00pm 
gib holland pl0x
braxt  [author] 16 Feb, 2019 @ 6:35pm 
That means you incorrectly edited something. Check the code that you changed, make sure everything is fine. Always make a backup of whatever you're editing before you edit it.
Kahtini 16 Feb, 2019 @ 3:59pm 
When I Attempt To Load It, It Gives Me Error Code 4. What Does It Mean?
braxt  [author] 12 Feb, 2019 @ 7:36pm 
To change the bio/description of a nation:
1. Go into your custom scenario folder
2. Inside your scenario folder, is another folder named "Game" go in it.
3. Open stringTable.xml

stringTable.xml holds all the descriptions for the nations. If you look in it, you can see a few descriptions like Italy's and China's, etc.

Your nation will have no description yet, lets take Chile as an example:

<string id="SID.Game.Country.Description.EconomyFixer.Chile" value=""/>

Just add your description in between those parenthesis

<string id="SID.Game.Country.Description.EconomyFixer.Chile" value="Chile is good"/>

Now if you save that, and go into game and select Chile as your nation, you description will be there. Obviously yours can say something else and be a different nation.