Hearts of Iron IV: Пишем свою гражданскую войну | Моддинг

Руководство о том, как написать своё событие гражданской войны в любой стране и поместить данное событие, например, в национальный фокус.

 

Внимание

Данное руководство предполагает, что Вы уже хоть немного ознакомлены с моддингом для HoI4. В противном случае, могу порекомендовать это руководство: перейти к руководству. В нём всё достаточно просто расписано, что позволяет быстро войти в курс дела.

Что я использую?

Для написания кода (если это можно так назвать) я использую “легкий” редактор кода от Microsoft – Visual Studio Code (Не путать с IDE Visual Studio).

Вы также можете использовать Notepad++. Данный текстовый редактор отлично подходит для наших целей.

Простая гражданская война
Разбор простейшего варианта

Рассмотрим простейший способ начать гражданскую войну на примере национального фокуса.

Итак, у нас есть следующий код:

start_civil_war = {
	ideology = democratic
	size = 0.5
}

Сразу договоримся, что для удобства я буду называть start_civil_war функцией, а всё что внутри её фигурных скобок (тела) – аргументы. P.S. дальше будут и другие функции.

Разберём код по порядку:

  • ideology – данный аргумент указывает на идеологию, которая начнет гражданскую войну.
  • size – данный аргумент указывает на то, как будет поделена уже существующая армия между сторонами конфликта. В данном примере армия будет поделена 50/50.

Если поместить код выше в код национального фокуса, то уже всё будет вполне себе работать. В данном примере, демократы поднимут гражданскую войну и заберут себе половину всей армии страны. При этом территория, которую они заберут, будет случайной, как и новая временная столица (если основная не досталась повстанцам изначально).

Вот пример рабочего национального фокуса:

focus = {
	id = EXA_example_focus
	icon = GFX_goal_unknown
	x = 0
	y = 0
	cost = 10

	completion_reward = {
		start_civil_war = {
			ideology = democratic
			size = 0.5
		}
	}
}

Как Вы видите, функция гражданской войны помещена в другую функцию, которая срабатывает по завершению фокуса.

Но понятное дело, что этого слишком мало. Хотелось бы большего. Ну тогда идём дальше.

Добавим больше условий

Теперь рассмотрим следующий код:

start_civil_war = {
	ideology = democratic
	size = 0.5
	capital = 226
	states = {
		137 192 196 197 200 203 221 226 259 227 228 
	}
}
  • capital – указывает на ID области, в которой будет расположена столица повстанцев.
  • states – указывает на ID области/областей, которые будут изначально контролировать повстанцы.

В данном примере области, которым принадлежат ID, расположены в игре на территории СССР, а если точнее в Украине.

Чтобы узнать ID нужной мне области я использовал страницу[hoi4.paradoxwikis.com] на официальной Wiki HoI4 со списком всех областей в игре. Но есть и другие способы.

Итог: теперь восстание будет поднято в конкретных областях, а столица восставших будет установлена в конкретной области. Остается только добавить данный код к коду фокуса.

Небольшое дополнение

Также можно ещё добавить внутрь start_civil_war строчку ruling_party = <название идеологии> что изменить идеологию основной части страны (не повстанцев) на указанную Вами. Данная строка куда важнее и полезнее, чем может показаться на первый взгляд.

Небольшое заключение

На этом по базовой части – всё. Далее я выйду за пределы функции start_civil_war и покажу какие ещё крутые штуки можно сделать с гражданской войной.

Выбор стороны в гражданке

И так, как в игре происходит выбор стороны в гражданской войне? Почему это нужно отдельно обсудить? Да потому, что разработчики из Paradox не предусмотрели отдельной функции или аргумента, который бы указывал, что игрок играет (или не играет) за повстанцев.

Сейчас попробую объяснить как это работает. Возьмём, к примеру, фокус Германии на свержение Гитлера. Как всем (тем кто конечно играл с нужным DLC и “прожимал” этот фокус) известно, восстание поднимают нейтралы, но технически (в коде) это выглядит не так. Технически восстание поднимают фашисты (при своём же режиме), а идеология страны просто меняется на идеологию нейтралов.

Рассмотрим фрагмент кода (с моими комментариями) из события, которое использует этот фокус, чтобы убедиться в моих словах:

set_capital = 55 # Перенос столицы основной части страны во Франкфурт
start_civil_war = {
	ruling_party = neutrality # Нейтралы становятся правящей партией
	ideology = fascism # Фашисты поднимают восстание
	size = 0.5
	capital = 64 # Берлин - столица повстанцев
	states = { 64 61 52 53 54 60 65 66 67 68 62 63 5 }
}

Путь к файлу с данным кодом: Hearts of Iron IV\events\WTT_Germany.txt

Вся проблема в том, что игрок всегда играет за ту сторону, против которой подняли восстание. А отсутствие функции закрепления игрока за необходимой стороной конфликта приходится обходить таким вот образом, т.е. вместо восстания нейтралов поднимать восстание фашистов. Это нужно учитывать в будущем.

Создаём дополнительные дивизии

Если Вы хотите при начале гражданской войны добавить на карту одной из сторон (или обеим сторонам) новые дивизии, то вам сначала понадобится в папке своего мода создать файл по следующему пути: modname\history\units

Файл, как я понимаю, можно назвать произвольно, но я бы советовал давать осмысленные названия, как например у такого файла для Германии: GER_German_Civil_War_neutrality.txt

В данном файле прописываются шаблоны дивизий, а потом их расположение на карте.

Вот код из этого же файла для Германии:

division_template = {
	name = "Landsturmregiment"
	is_locked = yes

	division_names_group = GER_Inf_01

	regiments = {
		infantry = { x = 0 y = 0 }
		infantry = { x = 0 y = 1 }
		infantry = { x = 0 y = 2 }
	}
}

units = {
	division = {
		name = "1. Landsturmregiment"
		location = 9655
		division_template = "Landsturmregiment"
	}
	division = {
		name = "2. Landsturmregiment"
		location = 3690
		division_template = "Landsturmregiment"
	}
}

Путь к файлу с данным кодом:
Hearts of Iron IV\history\units\GER_German_Civil_War_neutrality.txt

P.S. Я сократил часть кода с размещением дивизий, т.к. он однотипный и слишком длинный из-за целых 24-х дивизий. В варианте выше только 2 дивизии.

Чтобы не растягивать руководство, я пропущу подробности создания дивизий. Но оставлю ссылку на видео, где об этом подробно рассказывается, но Вам нужно хоть немного понимать английский.

Кратко скажу, что нам необходимо знать ID провинции, в которой мы хотим разместить дивизию (да, провинции, а не области). Можете снова-таки воспользоваться страницей[hoi4.paradoxwikis.com] на официальной Wiki игры.

Далее подключаем данный файл в коде национального фокуса (но это может быть и событие) через строчку:
load_oob = "GER_German_Civil_War_neutrality"
И всё. По завершению фокуса он выполнит код в данном файле.

Вот как это выглядит в полном примере внутри функции completion_reward:

completion_reward = {
        set_capital = 55
	start_civil_war = {
		ruling_party = neutrality
		ideology = fascism
		size = 0.5
		capital = 64
		states = { 64 61 52 53 54 60 65 66 67 68 62 63 5 }
	}
	load_oob = "GER_German_Civil_War_neutrality" # А вот и файл с нужным сценарием
}
От Ev1ls0n

Похожие сообщения:

Be the first to comment

Leave a Reply

Your email address will not be published.


*