• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

Developer Diary | Modding!

Carlo here. As Content Designers and developers, we not only make content, but we’re always trying to find new tools to do our job better and faster. And since HoI4 is crazy moddable, these tools are available to modders too, these are some of the new things you’ll be able to do when making mods, starting with Joint Focus Trees.

How do you make a Joint Focus Tree?

Well, at its core, a JFT is a Shared Focus Branch, one where depending on conditions, has a set of member countries, and the completion of the focuses is shared between them, and different effects apply either to the country completing them, to the rest of the countries or to all of them equally.
C1-Shared Focuses.jpg

And of course, under the hood they’re a bit different from Shared Focuses in a few ways. First thing you’ll notice is the text_icon parameter, we’ll talk about later, but the SECOND thing you’ll notice is the joint_trigger section. It’s a trigger that determines which countries will be considered part of the JFT and get their corresponding effects. In this case it’s checking if you have the alliance leader flag or you are in a faction with this country.
C2- Basic Trigger.png

The other thing that’s different from normal focus trees is there’s 3 (THREE) different sections for Completion Rewards.
C3 - Completion Rewards.png

First one, regular old completion_reward does its effect in every valid country in the Joint Alliance, the same for everyone.

Then there’s completion_reward_joint_originator, that only applies the effect in the country that completed the focus.

And finally the completion_reward_joint_member, which applies the effect on every valid member of the alliance that is not the country that completed the focus.

That’s basically it. It’s a simple system, but we hope it’ll be flexible enough to have a bunch of use cases and variations, especially since it doesn’t need to be a faction! We used a faction as the most obvious use for it but you can make any amount of related or unrelated countries share the tree. Every country in the continent? Sure. Every communist country? Go ahead. Countries on both sides of a war? Can’t stop you!

I can’t wait to see what you do with it.

Focus Title Background

In the previous point I mentioned a text_icon parameter, that’s the way we are giving you the ability to change the background for the Focus titles. It’s one of the features that were added to enhance the Joint Focus Tree, but can be useful for any kind of focus tree content..
C4 - Focus Title example.png

It came about because we wanted a way to quickly differentiate normal focuses from joint focuses. At first we thought about just making them have the same framing on the focus icons but that proved… Not ideal.
C5 - Joint Titles WIPs.png

The biggest problem is that it immediately made every focus icon be too busy and hard to read.
C6 - Joint Pentagons.png

Plus, when the whole tree was pentagons everywhere, it looked way too repetitive.
C7 - Pentagon Tree.png

Eventually, we accepted that we couldn’t solve this problem with art or design, and we were gonna have to resort to an extreme measure… Talking to a programmer D=

We barely survived, but after an arduous process we agreed to make a system to change the title background changeable. It was the best option; relatively simple to implement, noticeable, and we didn’t need to make every icon from scratch. Of course there was still a bit of trial and error to get the look right.
C8 - Title trials.png

Setting them up is relatively easy. First, you will have to set up the 4 GFX entries you set up in the nationalfocusview.gfx, in our case, most of the animations and masks work just fine so it was mostly copy-pasting.
C9 - GFX.png

There’s a new file called 00_titlebar_styles where you can add style entries and specify the GFXs for each state, and set one as default so you don’t need to specify the style for every single focus.
C10 - Style File.png

And now you just use your new style with the focuses you want in the text_icon parameter. They’re set on a focus by focus basis so you can go wild and do dumb stuff with any kind of focus!
C11- focus style example.png

Dynamic Focus Icons

Another feature that we added thanks to the Joint Focus Tree. You now can have the focus icons change depending on conditions. This is something I’ve wanted for a long time but never found a big enough excuse to do it… Until now.

The reason we finally added it for the JFT is that we want to have the option of playing it as more than one ideology, while still giving you some thematic distinction. After all, a democratic alliance should have a very different look from one formed by monarchies and dictatorships.
C12 - Focus Icons Example.jpg

How they’re set up is very simple. Instead of specifying a GFX, you can open brackets and enter a trigger and a value. First one to be true becomes the icon for that focus! Just remember to add the “dynamic = yes” parameter so it’s updated more easily.
C13 - Dynamic Icon Script.png

Showing Event Option Tooltips

One of the things I hate the most when doing events is showing the effects of both sides of the events in tooltips. Usually, when we have an event option that sends another event to another country, we have to show you what will happen in your country, and in the other country, so you can better judge what’s the right choice. This has always meant adding effect_tooltips and duplicating the other side’s effects inside it, which is time consuming and annoying to maintain and keep track of.
C14 - SOV Tooltip.png

Well not anymore! (Kind of). We’ve added an effect called event_option_tooltip, that allows you to show the tooltip that option will display.
C15 - SOV script.png

C16 - Focus Tooltip.png

This is also very useful for those effects that go after the “If They Accept” tooltip.
C17 - Focus Script.png

It does have some limitations, like ignoring anything inside a FROM so you don’t accidentally crash the game with an infinite loop if you have a show_event_tooltip on both sides, but it’s already been a time saver and we hope to improve on it in the future. .

Modifying the Effectiveness of Forts

You know, not every fort is built the same, but until now they were in HoI. To make it easier to represent just how bad and outdated fortifications were in Norway and Denmark we needed something extra, so we added a couple of percentual modifiers that change the attack penalty inflicted on the attacking enemy by forts: land_bunker_effectiveness_factor and coastal_bunker_effectiveness_factor.
C18 - Obsolete Armed Forces.png

Before, if we wanted to represent having bad forts, our only option was reducing their production speed, which numerically could make some sense but feels a bit off thematically. You can be very fast in making really bad forts and vice versa.
C19 - Coastal bunker effectiveness.png

For example, if a fort normally inflicts a 15% penalty and you have a -50% value in land_bunker_effectiveness_factor, that penalty will be reduced to 7.5%. Forts are already plenty effective so we’re mainly using this to make them worse, but of course, there are exceptions here and there.
C20 - Birger Eriksen.png

And that’s it for me, but Mano de Zombi has a bunch of other stuff to show you!


Mano de Zombi here!
After returning from a sunny vacation to this Swedish deluge I really needed to go through some of the code support we've been getting lately in order to give meaning to my life and remind me of the things that I enjoy and that not even this weather can ruin for me.
So here you have a selection of functionality, tools and improvements that have been added during the past months by our amazing coders:

Scripted Loc can now be used in Dynamic Modifiers
Your dynamic modifiers can now dynamically change name (previously we needed to create duplicates and swap the modifiers and it was really painful and ugly T_T)

New Generator Parameters for create_wargoal effect
We can now use an array as the generator in the effect create_wargoal, allowing us to set the generator states based on the world conditions by the time the effect is executed:
  • You can use an already set array if you so desire:
    M01 wargoal simple.png
  • Or you can create your own array and add states based on whatever requirements you’d like to have:
    M02 wargoal custom.png
New Functionality for CTRL + ALT + Click
We’ve added more functionality for the (debug-only) hotkey CTRL+ALT+Click on certain UI elements.
For those of you who might not know about this hotkey, this is an extremely useful tool for scripting and debugging: when used on a certain object in the UI, it will automatically open the file and lead to the line in which said object is defined, so you can immediately see the script behind it, and do whatever you need to do with it.
Quick example: (with debug mode on) you can CTRL+ALT+Click on a focus and it will open the appropriate focus file and lead you to the line in which it is defined:
M03 simple click.png

M04 simple script.png

As a reminder, this could already be used in focus, events (clicking on any of the event options), decisions, ideas (National Spirits, Designers, Laws, Officer Corps Spirits), characters (advisors, country leaders, unit leaders), technologies and doctrines.
Please forgive me if I forgot something, I can barely hear my thoughts on this rain…

Now, our amazing coders have fixed an issue with unavailable advisors not working with this (now they do!), and new functionality has been added so that we can now CTRL+ALT+Click on:
  • Designer Modules in the Ship/Tank/Plane Designers
    M05 designer module.png
  • Battalions in the Division Designer
    M06 battalion.png
  • Production Lines and Equipment in the Production Tab
    M07 production.png
  • Intel Agency Upgrades
    M08 agency upgrades.png
  • Operations and Phases
    M09 operations.png
  • MIO's and Traits

Improvements for Division Commanders.
We have improved a bit the way of scripting Division Commanders (Field Officers). Now you can define them with a localized name and with portraits, both in OOB files and inside the create_unit effect:
M10 div commander.png


Parameter random_select_amount
This useful new parameter can be added to all the every_[scope] effects (every_character, every_state, every_other_country, etc.). The parameter takes an integer as value, and this value is the number of times the effect will run before breaking the “for” loop running behind the scenes.

Previously, we had a few different ways of applying effects to, let’s say, 3 random states, but all of them required an unreasonable amount of script and custom tooltips in order to make sure that the effects could not be applied to the same state twice, and they all generated very shitty tooltips.

Now, the use of random_select_amount allows us to apply effects to a number of random scopes (states, characters, countries…) in a very simple way with no possibility of choosing the same scope twice and generating a standard tooltip that indicates the actual states targeted by the effect:
M11 random select.png

M12 random result.png

Filter for including invisible unit leaders in effects & triggers
If you ever had the need to apply effects to all your land and navy officers, regardless of them being visible to the country or not (due to, for example, the country not having completed a focus yet), you will find the new parameter include_invisible pretty useful.
This parameter is now available as an optional parameter in the full set of scoped triggers and effects related to unit leaders (every/random/all/any_unit/navy/army_leader). By default is set to false, so you only need to use it if you want to scope to all the unit leaders belonging to a TAG, regardless of them being visible (unlocked) to the country or not.
M13 include invisible.png

This is the full list of effects and triggers that benefit from this parameter:
every_unit_leader
random_unit_leader
every_army_leader
random_army_leader
every_navy_leader
random_navy_leader
all_unit_leader
all_army_leader
all_navy_leader
any_unit_leader
any_army_leader
any_navy_leader


Use of Variables as tag in targeted modifiers
Now it is possible to input a variable as the tag parameter inside the targeted_modifier block, allowing us to store the appropriate country inside a variable and then apply the National Spirit targeting the appropriate country very easily!
M14 var targeted.png

And this is all for me, I’ll see you soon in a future DD!
 
  • 29Like
  • 15Love
  • 6
  • 2
  • 1
Reactions:
Hey just want to say thank you for all these modding additions!

Being able to use scripted loc in dynmods will be great! I'm gonna assume that it will also be included in advisor descs too, since dynmods were added, so for that in particular I'm grateful.

I'm already getting plenty of ideas for dynamic focus icons too - a great surprise addition. The possibilities here are huge! Unique foci depending not only on what faction a tag is in, but also who its leader happens to be...
 
  • 3Like
Reactions:
Y’all need to add a historical leader for both Democratic Mexico at start as well as fascist France, and I think it would be interesting for y’all to add Marcus Garvey to the game, for instance you take over the Caribbean or the USA as Ethiopia, you can have Garvey be the viceroy of those territories… or at least have him as leader of Fascist Jamaica
Wow - gentle there! Give them some time!
Developer cat.jpeg


Otherwise, great updates! I am not a modder, but I can see the good ideas already!
 
  • 5Haha
  • 1Like
Reactions:
Modifying the Effectiveness of Forts

You know, not every fort is built the same, but until now they were in HoI. To make it easier to represent just how bad and outdated fortifications were in Norway and Denmark we needed something extra, so we added a couple of percentual modifiers that change the attack penalty inflicted on the attacking enemy by forts: land_bunker_effectiveness_factor and coastal_bunker_effectiveness_factor.

Before, if we wanted to represent having bad forts, our only option was reducing their production speed, which numerically could make some sense but feels a bit off thematically. You can be very fast in making really bad forts and vice versa.

For example, if a fort normally inflicts a 15% penalty and you have a -50% value in land_bunker_effectiveness_factor, that penalty will be reduced to 7.5%. Forts are already plenty effective so we’re mainly using this to make them worse, but of course, there are exceptions here and there.
Without going into the historicity of these claims, I struggle a bit with the logic of implementing modifiers to make forts less effective. If you wanted to model outdatet forts, would it not be more logical to reduce the fortification level in a given province? Making new forts, or forts you take from the enemy, less effective does not seem to make too much sense logically unless it only affects existing fort levels?
 
  • 3
  • 2
  • 1Like
Reactions:
Without going into the historicity of these claims, I struggle a bit with the logic of implementing modifiers to make forts less effective. If you wanted to model outdatet forts, would it not be more logical to reduce the fortification level in a given province? Making new forts, or forts you take from the enemy, less effective does not seem to make too much sense logically unless it only affects existing fort levels?
Maybe not outdated, but a series of bunkers that points in the wrong direction is an issue. See Singapore.
 
  • 3
Reactions:
Very nice that Paradox pays attention to modder base. Just please mind that air needs to be nerfed, -35% defense from air superiority is illogical and unreal.
 
  • 1
Reactions:
Many nice features. This promises a further step up from the modders: be careful vanilla game to be able to keep up with the pace ;)

Dynamic NF trees are just great, and the new CTRL+ALT+Click tool is so neat!
 
  • 1Like
Reactions:
Maybe not outdated, but a series of bunkers that points in the wrong direction is an issue. See Singapore.
I guess because Singapore should have naval fortresses to protect from naval invasions, not regular forts.
 
  • 2
  • 1
Reactions:
Excited about JFTs. Modders are going to go nuts with this.
 
  • 1
Reactions:
Maybe not outdated, but a series of bunkers that points in the wrong direction is an issue. See Singapore.
I guess that is going to be a more general problem as all fortifications in HOI games are "multidirectional", but then again, wouldnt a better approach be to reduce fortification levels in stead of making the new fortifications that you build less effective? As Singapore, wouldnt it be a bit uninspiring if you try to fortify against a threat, but end up with these fortifications being less effective to simulate other fortifications pointing the wrong way?

I dont mean to sound all negative, and I appreciate the effort to include additional mechanics to model differnt situations. It is just that this might seem like way of adding new mechanics that might be less good than the existing mechanics, rather than working with and improving upon those.
 
  • 3
  • 1Like
  • 1
Reactions:
I guess that is going to be a more general problem as all fortifications in HOI games are "multidirectional", but then again, wouldnt a better approach be to reduce fortification levels in stead of making the new fortifications that you build less effective? As Singapore, wouldnt it be a bit uninspiring if you try to fortify against a threat, but end up with these fortifications being less effective to simulate other fortifications pointing the wrong way?

I dont mean to sound all negative, and I appreciate the effort to include additional mechanics to model differnt situations. It is just that this might seem like way of adding new mechanics that might be less good than the existing mechanics, rather than working with and improving upon those.
The problem with making the forts low level is the problem is simple to resolve by merely building more forts in that area. And since the current fortification levels will be low it would be very cheap to do so.

Historically the problem wasn't a lack of concrete it was old designs that needed to be torn down or massively updated. And there was no political will to do so. And doing so would have sent strong signals to the countries neighbours.

HOI4 is a war game, it's not designed to have deep political factions or problem solving. The solution of national modifiers and then NFs isn't great but at least it allows the player to understand some of the issues of the time. And the issues were more complex than a lack of CIC to do all the building work you want.
 
  • 4
Reactions:
The problem with making the forts low level is the problem is simple to resolve by merely building more forts in that area. And since the current fortification levels will be low it would be very cheap to do so.

Historically the problem wasn't a lack of concrete it was old designs that needed to be torn down or massively updated. And there was no political will to do so. And doing so would have sent strong signals to the countries neighbours.

HOI4 is a war game, it's not designed to have deep political factions or problem solving. The solution of national modifiers and then NFs isn't great but at least it allows the player to understand some of the issues of the time. And the issues were more complex than a lack of CIC to do all the building work you want.
I get your point, but then it would make more sense to make building fortifications more expensive in general or adding a modifier to make building forts more expensive. Making newly built or newly captured forts less effective seems like the least logical, and francly, least fun way of moddeling a lack of (modern) fortifications.
 
  • 1
  • 1
Reactions:
Maybe instead give Denmark and Norway a trait that disables building forts until they remove it with a specific Focus or Focuses?
 
CTRL+ALT click look extremely useful. Seems that I will be finally able to find out where the tank type (SPART, SPAAG, etc..) selection box is coded in order to add the same for aircraft :D
 
  • 1
Reactions:
Something that I haven't seen yet is how the joint focus trees are defined.

Do they have to be defined in every focus tree that can access it?
Or does the Joint focus tree have it's own file that can be called within a country's focus tree if the necessary parameters are met?
 
  • 1Like
Reactions:
The problem with making the forts low level is the problem is simple to resolve by merely building more forts in that area. And since the current fortification levels will be low it would be very cheap to do so.

Historically the problem wasn't a lack of concrete it was old designs that needed to be torn down or massively updated. And there was no political will to do so. And doing so would have sent strong signals to the countries neighbours.

HOI4 is a war game, it's not designed to have deep political factions or problem solving. The solution of national modifiers and then NFs isn't great but at least it allows the player to understand some of the issues of the time. And the issues were more complex than a lack of CIC to do all the building work you want.
It is interesting that you mentioned the availability of concrete, because when Germany started building the Atlantic Wall it ran into a shortage. Unfortunately, I currently cannot find a source for my claim, but I do recall that other building projects fell short because of the need for concrete.
 
  • 1
Reactions:
It is interesting that you mentioned the availability of concrete, because when Germany started building the Atlantic Wall it ran into a shortage. Unfortunately, I currently cannot find a source for my claim, but I do recall that other building projects fell short because of the need for concrete.
I had heard about shortages for the beachheads obstacles, not the wall itself.

 
  • 2
  • 1Like
Reactions: