Ідеї — це статичний спосіб застосування модифікаторів до країни, зокрема національні духи, закони, конструктори, духи офіцерського корпусу та приховані ідеї. Самі ідеї визначаються в /Hearts of Iron IV/common/ideas/*.txt
, тоді як категорії ідей визначаються в /Hearts of Iron IV/common/idea_tags/*.txt
.
Зміст
1. Створення національного духу
Духи створюються в /Hearts of Iron IV/common/ideas/*.txt
. Приклад файлу з порожніми духами, ще без модифікаторів, але які все ще можна застосувати, якщо додати через add_ideas = idea_name
, виглядає так:
ideas = {
country = {
my_idea_1 = {
}
my_idea_2 = {
}
}
}
У цьому випадку ideas = { ... }
охоплює кожну ідею у файлі, що необхідно включити через обмеження рушія. Тим часом, country = {}
— це категорія ідей, саме тому гра розпізнає my_idea_1
та my_idea_2
як духи, а не як закони чи конструктори, які також є ідеями.
1.1. Локалізація
Локалізація для ідей визначається в будь-якому файлі /Hearts of Iron IV/localisation/english/*_l_english.yml
, закодованому в UTF-8-BOM, якщо припускати англійську мову. Якщо ідея не має назви, гра використовує список назв країни в /Hearts of Iron IV/common/names
для створення випадкової назви. Однак це не стосується національних духів, де використовується ID ідеї. Ідея може мати як назву, так і опис, який з'являється при наведенні на неї. Їхні записи локалізації визначаються так, на прикладі ZZZ_example_idea
:
l_english:
ZZZ_example_idea: "Назва ідеї"
ZZZ_example_idea_desc: "Опис ідеї"
name = new_idea_name
призначає назві ідеї використання іншого ключа локалізації. Це може бути корисно, якщо ви плануєте модифікувати ідею, замінюючи її кілька разів, забезпечуючи, що вам не потрібно створювати дублікат запису локалізації для кожного екземпляра ідеї. Це буде визначено у файлі локалізації аналогічно:
l_english:
new_idea_name: "Нова назва ідеї"
new_idea_name_desc: "Новий опис ідеї"
1.2. Зображення
Загальний огляд спрайтів
Для завантаження GFX гра використовує систему спрайтів. Спрайти — це визначення в коді, які прив'язують назву до файлу зображення, а також опціонально додають додаткову інформацію, таку як анімація, кількість кадрів, спосіб завантаження зображення тощо. Це означає, що розміщення зображення в папці gfx недостатньо для його роботи, спрайт також повинен використовувати цей файл зображення.
Спрайти визначаються в будь-якому файлі /Hearts of Iron IV/interface/*.gfx
(це окремо від gfx/interface/
), який відкривається текстовим редактором. Щоб створити новий файл .gfx
, можна створити текстовий файл і перейменувати його, змінивши розширення (у Windows Провідник повинен показувати розширення, що він не робить за замовчуванням). Зокрема, спрайти визначаються всередині блоку spriteTypes = { ... }
, щоб відокремити їх від шрифтів та стрілок на карті, які також визначаються в цій папці, тоді як найпростіший спрайт з найменшою кількістю обов'язкових властивостей — це spriteType = { ... }
. Найпростіше визначення спрайта виглядає так:
spriteTypes = {
spriteType = {
name = GFX_first_sprite # У деяких випадках початок з GFX_ є обов'язковим для роботи.
texturefile = gfx/interface/folder/filename.dds # Папка та назва файлу не мають значення, доки вони правильні
} # Для розділення папок можна використовувати лише пряму косу риску '/' (може бути подвоєна як '//').
spriteType = { # Зображення не обов'язково має бути .dds, оскільки .tga та .png є прийнятними.
name = GFX_second_sprite
texturefile = gfx/interface/folder2/filename2.dds
noOfFrames = 2 # Розділяє зображення на 2 половини, між якими можна динамічно перемикатися в GUI
}
}
У цьому випадку створюється спрайт з назвою GFX_first_sprite
, до якого прив'язується зображення /Hearts of Iron IV/gfx/interface/folder/filename.dds
, і аналогічно другий спрайт. Другий спрайт буде розділений на 2 кадри: це визначається тим, що ліва половина зображення є першим кадром, а права половина — другим (більше кадрів далі розділятимуть зображення горизонтально). Це не робить спрайт анімованим, лише вмикає опцію перемикання між двома половинами за потреби. GFX_second_sprite:1
служить посиланням на перший кадр, і GUI можна налаштувати для зміни показаного кадру залежно від контексту, наприклад, з радіостанціями. Щоб додати анімацію, використовується frameAnimatedSpriteType
.
Ніколи не є обов'язковим копіювати файл базової гри для зміни спрайта. Якщо є дублікати визначень спрайта з однаковою назвою в різних файлах, гра надасть пріоритет тому, який буде оцінено пізніше, на основі назви файлу, а старіший спрайт буде повністю проігноровано. Це можна забезпечити, починаючи назву файлу заміни символом, що знаходиться пізно в таблиці символів ASCII. Зазвичай для цієї мети використовується мала літера 'z'. Наприклад, щоб змінити кількість кадрів у GFX_idea_traits_strip
на 10, можна визначити спрайт з такою назвою з 10 кадрами у файлі мода modname/interface/zz_replace.gfx
замість копіювання файлу базової гри. Оскільки більшість файлів .gfx
визначають невід'ємні частини користувацького інтерфейсу, їх копіювання може призвести до того, що завантажені файли мода втратять спрайти після великого оновлення гри, що відображатиметься в грі як стандартне зображення, яким за замовчуванням є собака помилок. Щоб полегшити тягар необхідності перевіряти файли інтерфейсу, найкраще ніколи не копіювати файли .gfx
, якщо тільки додаткові зміни не будуть активно шкідливими для мода, як, наприклад, з interface/subuniticons.gfx
.
За замовчуванням ідея використовує спрайт, який має таку ж назву, як ідея, але з префіксом GFX_idea_
на початку. Наприклад, ідея з назвою my_idea_1
використовуватиме спрайт з назвою GFX_idea_my_idea_1
.
Це можна змінити за допомогою атрибута picture = my_sprite
всередині ідеї. Гра все ще вставляє префікс GFX_idea_
до аргументу, щоб визначити спрайт, який слід використовувати, наприклад, picture = XYZ
призводить до використання GFX_idea_XYZ
як спрайта. Якщо гра не може знайти спрайт з очікуваною назвою, замість нього буде використано стандартну іконку Unknown.png
. Вставлення префікса означає, що здебільшого picture = GFX_XYZ
(що призводить до використання GFX_idea_GFX_XYZ
як спрайта) або picture = idea_XYZ
(що призводить до використання GFX_idea_idea_XYZ
як спрайта) призведе до того, що гра очікуватиме неіснуючий спрайт, і що спрайти, які не відповідають шаблону іменування GFX_idea_XYZ
, не можуть використовуватися як зображення ідей.
Якщо texturefile
у спрайті вказано неправильно, ідея буде невидимою у вікні політики країни, але все одно застосовуватиме модифікатори. Переконайтеся, що ідея зберігається з тим самим шляхом до папки, тією ж назвою файлу (включаючи розширення) і що використовується правильний роздільник папок.
Також можна зробити так, щоб зображення залежало від graphical_culture_2d
країни, визначеного у файлі /Hearts of Iron IV/common/countries/*.txt
. Це робиться шляхом додавання назви після назви зображення, розділеної підкресленням. Наприклад, спрайт з назвою GFX_idea_my_picture_middle_eastern_2d
у своєму визначенні відображатиметься замість GFX_idea_my_picture
для країн, які мають 2D графічну культуру middle_eastern_2d
.
1.3. Реалізація
Дух можна додати лише вручну, використовуючи ефект. add_ideas = idea_name
у блоці ефектів (наприклад, нагорода за завершення фокуса), тоді як remove_ideas = idea_name
видалить його.
Щоб замінити дві ідеї і щоб гра відобразила модифікатори, використовується swap_ideas
. Немає способу безпосередньо модифікувати ідею, однак у випадку, якщо два замінені духи мають однакову назву в локалізації, це відобразиться в грі як модифікація ідеї. swap_ideas
використовується так:
swap_ideas = {
remove_idea = old_idea
add_idea = new_idea
}
У більшості випадків достатньо створити кілька ідей і перемикатися між ними, наприклад, якщо є пряма послідовність кількох етапів (скриптовані ефекти можна використовувати для створення однієї серії умовних операторів та повторного їх використання кожного разу, коли це потрібно). Якщо створення кількох ідей є надто нездійсненним, наприклад, якщо є кілька послідовностей, які потрібно було б модифікувати, динамічні модифікатори дозволяють змінні значення модифікаторів, але вони приймають лише модифікатори (а не непов'язані атрибути, такі як бонуси до досліджень або обладнання) і з ними важче працювати через відсутність гарячого перезавантаження.
Щоб дух тривав певний період часу, використовується ефект add_timed_idea
наступним чином:
add_timed_idea = {
idea = my_timed_idea
days = 365
}
modify_timed_idea
можна використовувати для продовження або прискорення таймера за потреби.
Щоб країна починала з ідеєю, файл у /Hearts of Iron IV/history/countries/
для цієї країни служить блоком ефектів, який визначає початкову історичну інформацію. Використання add_ideas
, зазвичай у розширеній формі для одночасного призначення кількох ідей, змусить її починати з цією ідеєю. Щоб ідея відображалася при виборі країни, закладка редагується таким чином, щоб включити ідею до її блоку ideas = { ... }
для запису країни.
1.4. Модифікатори
Модифікатори застосовуються безперервно, доки дух застосований до країни. Разом з модифікаторами дух також може додавати бонус до категорії технологій або модифікувати архетип обладнання. Дух може застосовувати модифікатори лише до країни, яка має цей дух, немає способу перейти до іншої країни. Кожен з цих атрибутів є повністю окремим всередині ідеї, і тому кожен з них повинен знаходитися безпосередньо всередині ідеї. Наприклад, визначення research_bonus
всередині modifier = { ... }
є помилковим, оскільки research_bonus
є атрибутом ідеї, а не модифікатором.
modifier = { ... }
зберігає звичайні модифікатори, що застосовуються до країни з духом. Блок модифікаторів може містити кілька модифікаторів, також дозволені негативні значення. Змінні в цьому розділі не працюють: замість них використовуйте динамічні модифікатори. Типовий приклад блоку модифікаторів:
modifier = {
political_power_cost = 0.1
stability_factor = -0.2
}
targeted_modifier = { ... }
призначений для використання модифікаторів, спрямованих на іншу країну. Ціль вказується як tag = ABC
, де ABC представляє тег цілі. Вони все ще застосовуються до країни з духом, але їхній ефект спрямований на іншу країну. Наприклад, наступний блок надасть країні з ідеєю 10% бонус до атаки проти Афганістану:
targeted_modifier = {
tag = AFG
attack_bonus_against = 0.1
}
research_bonus = { ... }
надає країні прискорення до дослідження певної категорії технологій. Несортований список категорій технологій можна знайти в /Hearts of Iron IV/common/technology_tags/
або, якщо бажаєте знати, які саме технології призначені кожній категорії, окремі технології можна перевірити в /Hearts of Iron IV/common/technologies/
. Наступний приклад надасть +10% бонус до дослідження есмінців та -20% бонус до артилерії:
research_bonus = {
dd_tech = 0.1
artillery = -0.2
}
equipment_bonus = { ... }
застосовує бонуси до архетипу обладнання або типу архетипів обладнання. За замовчуванням бонус не надається негайно, а вимагає спочатку дослідження нової технології, як це робиться в ідеях конструкторів. Це можна запобігти, додавши instant = yes
всередині архетипу обладнання в бонусі обладнання. Архетипи обладнання визначаються в /Hearts of Iron IV/common/units/equipment/*.txt
, де ви також можете знайти, що до них можна застосувати. Назва блоку у файлі /Hearts of Iron IV/common/units/equipment/*.txt
буде архетипом, тоді як type = { ... }
або type = archetype_type
надає типи, які має архетип обладнання. Наступний приклад змінить вартість виробництва обладнання типу артилерії (включаючи артилерію, ракетну артилерію та танкову артилерію) на -20%, застосовуючись негайно, а також збільшить м'яку атаку будь-якого піхотного обладнання, дослідженого після додавання духу, на 10%:
equipment_bonus = {
artillery = {
instant = yes
build_cost_ic = -0.2
}
infantry_equipment = {
soft_attack = 0.1
}
}
rule
модифікує набір правил, які визначають, що країні дозволено робити. Зазвичай це включає дипломатичні опції (такі як опції мирної конференції або виклик до війни). Вони відображаються в підказці лише якщо правило відрізняється від значення без ідеї, наприклад, can_create_factions = no
зазвичай не відображатиметься в підказці, оскільки країни за замовчуванням вже не можуть створювати фракції.
rule = {
can_join_factions = no
can_send_volunteers = yes
}
1.5. Ефекти
Дух можна налаштувати так, щоб він застосовував ефекти при додаванні або видаленні. Це робиться, відповідно, за допомогою блоків ефектів on_add
та on_remove
, що виглядають як у наступному прикладі:
on_add = {
add_stability = 0.1
}
on_remove = {
add_political_power = -50
}
Ефекти виконуватимуться лише якщо ідея додана після початку гри: якщо це зроблено через файл історії або блок effect = { ... }
закладки, ефекти не виконуватимуться. У цьому випадку необхідно відтворити ефекти, що надаються при додаванні ідеї, в тому ж блоці ефектів, який додає ідею.
1.6. Скасування
Дух можна налаштувати так, щоб він автоматично скасовувався, як тільки буде виконано набір тригерів. Це робиться за допомогою блоку cancel
. Скасування також спрацює для блоку ефектів on_remove
в ідеї, якщо він присутній. Це виглядатиме так:
cancel = {
has_political_power > 50
}
1.7. Додаткові аргументи
Ще один блок тригерів, який може увійти в ідею, це allowed_civil_war = { ... }
. При початку громадянської війни це оцінюється для кожної сторони, і дух з'явиться лише для сторін, де це істинно. Наприклад, has_government = democratic
забезпечить, що лише демократична сторона в громадянській війні отримає дух. За замовчуванням завжди хибно, що призводить до зникнення духів при початку громадянської війни. Встановлення його завжди істинним може бути кращим за замовчуванням, змушуючи його з'являтися для обох сторін.
do_effect = { ... }
— це блок тригерів, який призначає необхідні умови для того, щоб ідея застосовувала свої модифікатори. Якщо хибно, модифікатори (включаючи бонуси до досліджень та обладнання) не застосовуватимуться, але ідея не буде видалена.
1.8. Повний приклад файлу ідеї
ideas = {
country = { # Необхідно, щоб гра розглядала їх як духи, а не інший тип ідеї.
my_spirit = {
picture = my_picture # Використання GFX_idea_my_picture
modifier = {
training_time_factor = -0.1
}
targeted_modifier = {
tag = QAT
defense_bonus_against = 0.2
}
research_bonus = {
infantry = 0.1
}
equipment_bonus = {
infantry_equipment = {
instant = yes
defense = 0.2
}
}
rule = {
can_join_factions = no
}
}
my_spirit_2 = { # Використання GFX_idea_my_spirit_2
allowed_civil_war = {
has_government = democratic # З'являтися в громадянській війні лише для демократичної сторони.
}
cancel = {
democratic > 0.6
}
on_add = {
add_popularity = {
ideology = democratic
popularity = 0.2
}
}
on_remove = {
if = {
limit = {
democratic > 0.6
}
start_civil_war = {
ideology = democratic
size = 0.6
}
}
}
do_effect = {
NOT = {
has_government = democratic
}
}
modifier = {
democratic_drift = 0.005
}
}
}
}
2. Інші категорії ідей
Ідеї, що не є духами, можуть використовувати все, що може бути всередині духів, однак є більше аргументів, які має сенс додавати до них, і які нічого не роблять у духах або не мають причин для додавання.
2.1. Приховані ідеї
Приховані ідеї абсолютно такі ж, як і звичайні духи, у всіх аспектах щодо створення, за винятком того, що вони повинні бути визначені всередині категорії ідей hidden_ideas
замість використання country
. Це забезпечить, що ідея буде прихована і не відображатиметься в контейнері духів. Однак все ще може мати сенс створювати для них локалізацію: якщо прихована ідея скасовується автоматично, з'явиться спливаюче вікно, а при наведенні на певні елементи (такі як лічильник стабільності або швидкість дослідження) відображатиметься кожна ідея, яка її модифікує.
2.2. Аргументи категорії ідей
Ці аргументи використовуються всередині категорії ідей у файлі /Hearts of Iron IV/common/ideas/*.txt
.
designer = yes
позначає всю категорію як ідеї конструкторів. Це в основному використовується для ШІ.law = yes
позначає всю категорію як закони. Це в основному використовується для ШІ.use_list_view = yes
позначає всю категорію для використання спискового вигляду для вибору ідеї, подібно до того, як базова гра обробляє закони.
Це виглядатиме у файлі ідей так:
ideas = {
my_law_category = {
law = yes
use_list_view = yes
my_law_1 = {
}
my_law_2 = {
}
}
}
2.3. Додаткові аргументи
Це передбачає, що ідея належить до типу, який можна вибрати в грі, наприклад, закон або конструктор.
allowed
— це блок тригерів, який перевіряється лише на початку гри або при завантаженні збереження, в основному використовується для обмеження ідеї для країни (якtag = BHR
абоoriginal_tag = POL
) та/або DLC (якhas_dlc = "One Step Back"
). Якщо умоваallowed
для ідеї не виконана, вона ніколи не з'явиться у виборі, якщо тільки вона не стане істинною при перезавантаженні збереження; однак ручне призначення черезadd_ideas
обходить перевірку. Якщо пропущено, вважається завжди дозволеним. Це перевіряється лише один раз!allowed_to_remove
— це блок тригерів, який деталізує, коли саме ви можете видалити ідею, змінюючи її на іншу в категорії. Це перевіряється безперервно, на відміну відallowed
.visible
— це блок тригерів, який безперервно перевіряє кожен кадр, чи виконаноallowed
, що необхідно для того, щоб ідея була видимою на екрані вибору рішень. Краще розміщувати перевірки країни або DLC вallowed
.available
— це блок тригерів, який безперервно перевіряє кожен кадр, чи виконаноvisible
, що необхідно для можливості фактично взяти ідею. Якщо хибно, ідея залишатиметься видимою, але буде сірою та неможливою для вибору. Це застосовується поверх вартості політичної влади.cost = 123
— це ціна в політичній владі, необхідна для додавання ідеї. Якщо не встановлено, вона становить 150 політичної влади[a].removal_cost = 123
— це ціна в політичній владі, необхідна для видалення ідеї. Якщо встановлено -1, ідею не можна видалити вручну. За замовчуванням 0, якщо не встановлено.level = 2
використовується в ідеях для створення зростаючої ціни, подібно до законів про призов. Якщо у вас є закон рівня 1, зміна на рівень 3 вимагатиме вартості ідеї рівня 2 на додаток до рівня 3, і навпаки.traits
— це блок рис, які призначені цій ідеї, визначені в/Hearts of Iron IV/common/country_leader/*.txt
, також надаючи статичний модифікатор і відображаючись поруч з ідеєю.ledger
вирішує, до якого розвідувального журналу буде призначена ідея. Це в основному залишок, що зараз застосовується до системи персонажів, але все ще може використовуватися в духах офіцерського корпусу. Можливі значення:army
,air
,navy
,military
(з'являється в кожному з попередніх журналів),civilian
,all
таhidden
.
2.4. Приклад
ideas = {
law_category = {
law = yes
use_list_view = yes
my_law = {
allowed_to_remove = {
num_of_civilian_factories > 10
}
removal_cost = 100
cost = 100
level = 3
modifier = {
production_speed_industrial_complex_factor = 0.2
}
}
}
designer_category = {
designer = yes
my_designer = { # Вартість не визначена, за замовчуванням 150
allowed = {
tag = QAT
}
visible = {
has_tech = infantry_weapons1
}
available = {
has_equipment = {
infantry_equipment > 1000
}
}
traits = { infantry_equipment_manufacturer }
}
}
}
3. Категорії
Категорії ідей визначаються в будь-якому файлі /Hearts of Iron IV/common/idea_tags/*.txt
. Усі категорії будуть міститися у верхньому елементі idea_categories
і можуть містити такі аргументи:
slot
— це належний слот категорії ідей. Це те, що відображається в GUI у меню політики країни, і це те, що ідеї повинні мати як свою категорію у своєму визначенні.character_slot
— це слот персонажа. Ідеї також можуть бути визначені для використання цього слота, і він відображатиметься в GUI як звичайний слот ідеї, однак.cost
— це стандартна ціна в політичній владі для додавання ідеї в один зі слотів цієї категорії. Це застосовується, якщо ідея не має власної.removal_cost
— це стандартна ціна в політичній владі для видалення ідеї з одного зі слотів цієї категорії.ledger
— це розвідувальний журнал, визначений для ідей у цій категорії, якщо не перевизначено всередині слота, ідеї або персонажа. Можливі значення:army
,air
,navy
,military
(з'являється в кожному з попередніх журналів),civilian
,all
таhidden
. Крім того, можна використовуватиinvalid
, змушуючи визначати журнал на один рівень нижче.hidden
— це булеве значення, що робить цю категорію невидимою в GUI. Опціонально, за замовчуваннямno
.politics_tab
— це булеве значення, що робить цю категорію видимою у вкладці політики. Опціонально, за замовчуваннямyes
.
Це виглядатиме так:
idea_categories = {
my_category = {
slot = my_slot
character_slot = my_character_slot
cost = 30
removal_cost = 10
ledger = hidden
}
}
Категорія потім використовуватиметься ідеєю через слот (що дозволяє зіставити ідею з категорією). Файл також включає slot_ledgers
, який розподіляє слоти ідей по розвідувальним журналам індивідуально, що матиме пріоритет над журналом категорії ідей. Приклад його використання:
slot_ledgers = {
XXX_idea_slot = civilian
ZZZ_idea_slot = invalid
}
Invalid
вимагатиме специфікації в кожній ідеї індивідуально.
3.1. GFX та GUI
Див. також: Модинг інтерфейсу
Кожна категорія ідей представляє рядок у вікні політики країни, тоді як кожен слот представляє слот під цим рядком. Контейнерне вікно country_politics_idea_category_entry
у файлі /Hearts of Iron IV/interface/countrypoliticsview.gui
визначає інформацію користувацького інтерфейсу про кожен рядок. Найважливішим тут є gridbox
, оскільки він визначає наступне:
- Розмір кожного слота ідеї в категорії, за замовчуванням 80 завширшки та 64 заввишки. Це використовується для відстаней між слотами.
- Максимальна кількість слотів, за замовчуванням 7 по горизонталі та 1 по вертикалі. Якщо не налаштовано, неможливо мати більше 7 слотів ідей у категорії.
- Формат
gridbox
, що визначає, в якому напрямку додаються слоти ідей.
Іконка категорії ідей, що відображається зліва від рядка категорії, визначається спрайтом GFX_idea_categories
. Спрайт розділений на кілька кадрів по горизонталі, і кожній категорії призначається його частина залежно від її порядку, визначеного в /Hearts of Iron IV/common/idea_tags/*.txt
. Спрайт визначається в /Hearts of Iron IV/interface/countrypoliticsview.gfx
, і його визначення в базовій грі складається з наступного:
spriteType = {
name = "GFX_idea_categories"
texturefile = "gfx/interface/idea_categories.dds"
noOfFrames = 6
}
При додаванні нової категорії переконайтеся, що оновили спрайт та кількість кадрів відповідно.
Для слотів ідей можна визначити іконку, яка використовуватиметься для них, якщо до цього слота не призначено жодної ідеї. Це визначення в будь-якому файлі /Hearts of Iron IV/interface/*.gfx
, на прикладі XXX_idea_slot
, робиться наступним чином:
spriteType = {
name = GFX_idea_slot_XXX_idea_slot
textureFile = gfx/interface/filename.dds
}
Іншими словами, спрайт повинен мати таку ж назву, як і слот ідеї, але з префіксом GFX_idea_slot_
на початку.
4. Зміна вартості слота
Модифікатор
можна використовувати для зміни ціни в політичній владі для додавання ідей або персонажів у цей слот. Однак існує обмеження для цього модифікатора. Щоб він працював, для слота ідей повинні бути попередньо визначені будь-які ідеї або персонажі.
Файли в папці /Hearts of Iron IV/common/ideas/*.txt
завантажуються в порядку ідентифікаторів символів Unicode, які розміщують великі літери перед підкресленнями, а ті — перед малими літерами. Наприклад, це означає, що файл з назвою TAG.txt
завантажується перед _economy.txt
або _manpower.txt
(місця розташування законів у базовій грі), які завантажуватимуться перед country.txt
. Через вищезгадану особливість це означає, що ідея з модифікатором, що впливає на ціну закону, наприклад, economy_cost_factor = -0.10
, видасть помилку, якщо назва файлу починається з великої літери, якщо тільки закони не зберігаються у файлах, відмінних від базової гри.
Існує два основних способи це виправити. Перший — просто змінити назву файлу ідей країни, змінивши її, наприклад, з GER.txt
на germany.txt
. Якщо вам потрібно зберегти ту саму назву файлу для перезапису файлу, замість цього можна створити новий файл. Альтернативно, припускаючи, що у вас є replace_path
до папки ідей, ви можете перейменувати файли, що зберігають закони, щоб вони починалися з символу з меншим ID, наприклад, на 00_economy.txt
, який завантажуватиметься до TAG.txt
.
Крім того, це також означає, що в слотах персонажів повинні бути визначені ідеї, щоб модифікатор працював, наприклад, political_advisor_cost_factor = 0.1
. Це тому, що персонажі завантажуються пізніше, ніж ідеї або риси лідерів країн, тому вони ще не завантажені під час оцінки модифікатора, що спричиняє помилку. Це можна обійти, створивши ідеї для слотів персонажів у файлах /Hearts of Iron IV/common/ideas/*.txt
. Вони ніколи не з'являться для країн, оскільки це слоти персонажів, а не слоти ідей, але ідея, завантажена заздалегідь, виправить помилку.
5. Примітки
[a] Встановлення порожнього файлу для перезапису файлу загалом ідентичне його вивантаженню на практиці, оскільки гра зазвичай не використовує ні поділ на кілька файлів, ні назву файлів для їх інтерпретації. Це стосується лише текстових файлів, а не зображень, таких як екрани завантаження.
[b] Ці винятки, які можна розумно змінити в моді, такі:
/Hearts of Iron IV/gfx/flags/
та її підпапки, де назва повинна відповідати суворому форматуванню, щоб автоматично завантажуватися для країни./Hearts of Iron IV/history/countries/
, де перші 3 літери призначають її країні.- Файли
.txt
безпосередньо всередині/Hearts of Iron IV/common/
(найважливішіachievements.txt
,combat_tactics.txt
таgraphicalculturetype.txt
) /Hearts of Iron IV/common/countries/colors.txt
та/Hearts of Iron IV/common/countries/cosmetic.txt
повинні залишатися з тією ж назвою. Решта безпосередньо пов'язані у файлах/Hearts of Iron IV/common/country_tags/*.txt
.- Різноманітні елементи всередині
gfx
, такі як/Hearts of Iron IV/gfx/maparrows/maparrow.txt
або/Hearts of Iron IV/gfx/HOI4_icon.bmp
. Це не включає/Hearts of Iron IV/gfx/loadingscreens
(кожен файл у ньому завантажується незалежно від назви файлу) або більшість файлів шрифтів/зображень (оскільки вони завантажуються за посиланням в іншому файлі). - Файли всередині папок
/Hearts of Iron IV/map/
та/Hearts of Iron IV/map/terrain/
, за винятком/Hearts of Iron IV/map/strategicregions
та тих, що визначені в/Hearts of Iron IV/default.map
. /Hearts of Iron IV/tutorial/tutorial.txt
[c] Єдиним винятком, який розглядається як звичайна помилка, є MAP_ERROR: Palette in rivers.bmp is probably not correct
, спричинена тим, що палітра у файлі має ненульову кількість кольорів, зазвичай продукт збереження поверх неї в GIMP. На відміну від інших записів у error.log
, позначених MAP_ERROR, це дозволяє відкривати гру без режиму налагодження та не виводить попередження при спробі перейти в одиночну гру.
[d] У динамічних модифікаторах, і лише в них, порядок модифікаторів у підказці не є жорстко закодованим. Натомість гра розміщує їх у тому ж порядку, в якому вони були написані в коді динамічного модифікатора. Однак порядок модифікаторів всередині динамічних модифікаторів не може призвести до жодної різниці в їх інтерпретації.
[e] У рідкісних випадках немає зображення, встановленого як заповнювач, що призводить до того, що використання неіснуючого спрайта також не призводить до появи нічого. Прикладом цього є баланси сил, де вказівка неіснуючого спрайта для представлення сторони призведе до того, що сторона не матиме іконки. Це особливо рідко, оскільки існує стандартне резервне зображення GFX_default
, що показує собаку помилок у базовій грі.