Arrays

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

Arrays in general are containers that store elements (data). In Hearts of Iron IV it is possible to store numerical data and scope data within arrays.

Arrays are used via effects and can be checked with triggers. There are special effects that allow you to iterate through an array to then apply other effects to or with the data within.

Effects[edit]

add_to_array[edit]

add_to_array = {
    array = <name>
    value = <value>
    index = <index>
}

An array is created once an element has been added to it.

The name of the array is what you use to refer to the array in other effects and triggers.

The value is the data you are adding to the array. It can be a number (i.e. 1 or var:my_num) or a scope (i.e. GER or var:my_scope). This is optional, if not included the current scope is added as the value.

The index refers the where the value should be inserted into the array. By default data is added to the end of the array, otherwise the data is shifted to accommodate the new value.

A short form can be used: add_to_array = { <name> = <value> }

remove_from_array[edit]

remove_from_array = {
    array = <name>
    value = <value>
    index = <index>
}

The name of the array is the array you want to remove the data from.

The value is the value you want to remove from the array (if present).

The index is the index of the value you want to remove from the array (if present).

If neither the value or index attributes are defined, the last element will be deleted.

A short form can be used: remove_from_array = { <name> = <value> }

clear_array[edit]

clear_array = <name>

Clears all data from the specified array.

resize_array[edit]

resize_array = {
    array = <name>
    value = <value>
    size = <int>
}

Resizes the specified array.

The value attribute sets any empty elements to the specified value if expanding the array. Defaults to 0 if not specified.

The size attribute specifies the new size of the array, removing elements if shrinking the array, or adding new elements with the specified value if expanding it.

A short form can be used: resize_array = { <name> = <size> }

while_loop_effect[edit]

while_loop_effect = {
    break = <string>
    limit = { <triggers> }
    
    <effects>
}

Runs the effect as long as a trigger is true.

The break attribute specifies a temp variable that can be set to non-0 to break the loop, ending iteration. By default this is break.

Effects can be used within the loop to perform operations with the data within an array.

for_each_loop[edit]

for_each_loop = {
    array = <name>
    value = <string>
    index = <string>
    break = <string>
    
    <effects>
}

Runs a loop for each element of the specified array.

The value attribute specifies a temp variable that stores the current value whilst iterating over the loop. By default this is v.

The index attribute specifies a temp variable that stores the current index whilst iterating over the loop. By default this is i.

The break attribute specifies a temp variable that can be set to non-0 to break the loop, ending iteration. By default this is break.

Effects can be used within the loop to perform operations with the data within an array.

for_each_scope_loop[edit]

for_each_scope_loop = {
    array = <name>
    break = <string>
    
    <effects>
}

Runs a loop for each element of the specified array and changes the current scope to the current element in each iteration.

The break attribute specifies a temp variable that can be set to non-0 to break the loop, ending iteration. By default this is break.

Effects can be used within the loop to perform operations with the data within an array.

random_scope_in_array[edit]

random_scope_in_array = {
    array = <name>
    break = <string>
    limit = { <triggers> }
    
    <effects>
}

Runs a loop for each element of the specified array and changes the current scope to a random scope (out of the scopes within the array) that meet the triggers specified.

The break attribute specifies a temp variable that can be set to non-0 to break the loop, ending iteration. By default this is break.

Effects can be used within the loop to perform operations with the data within an array.

add_to_temp_array[edit]

Same as add_to_array but for temporary arrays that expire once execution of the script is finished.

remove_from_temp_array[edit]

Same as remove_from_array but for temporary arrays that expire once execution of the script is finished.

clear_temp_array[edit]

Same as clear_array but for temporary arrays that expire once execution of the script is finished.

resize_temp_array[edit]

Same as resize_array but for temporary arrays that expire once execution of the script is finished.

Triggers[edit]

is_in_array[edit]

is_in_array = {
    array = <name>
    value = <value>
}

Checks if the specified value is in the specified array.

any_of[edit]

any_of = {
    array = <name>
    value = <string>
    index = <string>
    
    <triggers>
}

Runs a loop on the specified array and checks the triggers against the current element. If any return true, the whole check returns true, otherwise returns false.

all_of[edit]

all_of = {
    array = <name>
    value = <string>
    index = <string>
    
    <triggers>
}

Runs a loop on the specified array and checks the triggers against the current element. If any return false, the whole check returns false, otherwise returns true.

any_of_scopes[edit]

any_of_scopes = {
    array = <name>
    
    <triggers>
}

Runs a loop on the specified array and checks the triggers against the current element scope. If any return true, the whole check returns true, otherwise returns false.

all_of_scopes[edit]

all_of_scopes = {
    array = <name>
    
    <triggers>
}

Runs a loop on the specified array and checks the triggers against the current element scope. If any return false, the whole check returns false, otherwise returns true.

Examples[edit]