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.

For the resources to have their own icons you must make a .gfx file and place it in the /Hearts of Iron IV/gfx/interface/. After this is made in the .gfx file you must define a sprite and number of icons. For example:

	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


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.


Resources use 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