Resources modding

From Hearts of Iron 4 Wiki
Jump to navigation Jump to search


The resources used by the game are found in /Hearts of Iron IV/common/resources/00_resources.txt.

The resource file follows this format:

resources = {
    <resource> = {
        icon_frame = <frame>
        cic = <float>
        convoys = <float>

Icon frame[edit]

Icon frame controls which frame from the resource image strip is used for the resource icon. A 'frame' is the 27 by 27 pixel square the icon occupies in the image.

The resource image strip is defined by the GFX_resources_strip spritetype, which points to /Hearts of Iron IV/gfx/interface/ by default. By default 1 will refer to the Oil icon, 2 to Aluminium, etc.

The icons are defined in /Hearts of Iron IV/interface/general_stuff.gfx. Their definition must be changed if you're adding or removing resources:

	spriteType = {
		name = "GFX_resources_strip"
		texturefile = "gfx/interface/"
		noOfFrames = X #X being the number of resources you have, 

	spriteType = {
		name = "GFX_missing_resources_strip"
		texturefile = "gfx/interface/"
		noOfFrames = X

The number of frames strictly corresponds to the amount of resources.


CIC defines the amount of resources needed to trade for 1 Civilian Factory. By default, this is 0.125, meaning 8 units of that resource are traded for 1 factory.


Convoys controls the maximum amount of this resource a single convoy carries. By default, this is 0.1, meaning a convoy can carry 10 of the resource.


Localisation is defined in /Hearts of Iron IV/localisation/*_l_<language>.yml with the following localization keys:

<resource>_desc:0 "Description of resource"


If implementing different resources, you will need to edit the interface so the game understands how to display the new resource. /Hearts of Iron IV/interface/countryproductionlineview.gui is the relevant file here.

Each resource is utilised two GUI elements: <resource>_icon and <resource>_value, which are found under the resources windowtype.

buttonType = {
    name = "<resource>_icon"
    position = { x=0 y=2 }
    spriteType = "GFX_resources_strip"
    frame = 1 # Which icon is used from the spriteType image referred to above.
instantTextboxType = {
    name = "<resource>_value"
    position = { x = 31 y = 5 }
    textureFile = ""
    font = "hoi_18mbs"
    borderSize = {x = 0 y = 0}
    text = "999"
    maxWidth = 50
    maxHeight = 20
    format = left

Additional notes[edit]

A fuel can also correspond to the fuel dynamic, however only one resource at a time can do that. This is decided by the FUEL_RESOURCE define.
Infrastructure's bonus on resource gain is decided by the INFRASTRUCTURE_RESOURCE_BONUS define and applies to all resources the same.