Четвертая часть.
   Во второй части документации мы изучили как создавать новые отряды (parties), представляюoие собой уникальные объекты/локации на карте. Не стоит их путать с шаблонами отрядов (party templates), о которых мы будем говорить здесь, в четвертой части.

Шаблоны отрядов, если в общем, - это набор установок о том какие отряды будут появляться на карте. Еще раз отмечу наиболее наглядное различие между отрядами и шаблонами отрядов -- отряды являются уникальными объектами на карте, в то время как шаблоны не имеют "физического тела" в игровом мире. Они представляют собой лишь список установок о "производстве" отрядов определенного типа. Кроме того, некоторые операции, в которых используются идентификаторы отрядов в качестве аргумента не будут работать с идентификаторами шаблонов отрядов.

Отряды, созданные шаблонами, не могут быть уникальными. В игре может существовать множество отрядов, принадлежащих к одному и тому же шаблону (созданных по этому шаблону); каждый будет иметь различное колличество войск в зависимости от уровня игрока и минимума/максимума войскового ограничения указанного в шаблоне.

4.1. Описание файла Module_Party_Templates.py.

Файл начинается с обычного python-овского списка party_templates = [, сопровожденного несколькими шаблонам, которые вмонтированы в игру и не рекомендуются к редактированию. Вы отметите, что записи в файле module_party_templates.py очень похожи на те, что мы видели в module_parties.py, но не являются взаимозаменямыми.

Пример шаблона отрядов:

  ("farmers","farmers",icon_peasant|pf_auto_start_dialog,0,fac_innocents,merchant_personality,[(trp_farmer,11,22),(trp_peasant_woman,16,44)]),

Это пример шаблона, с которым мы можем столкнуться в игре. Отряды, сгенерированные по этому шаблону, будут именоваться "farmers", они автоматически вступят в диалог, когда вы встретите их, они трусливо ведут себя в игре, и каждый из таких отрядов включает в себя два стэка войск, состоящих из фермеров и крестьянок.

Описание полей записи шаблона группы:

1) Идентификатор шаблона отряда. Используется для ссылок на шаблон из других файлов.
2) Имя шаблона отряда. Имя, которое будут носить отряды, сгенерированные этим шаблоном в игре.
3) Метки отряда. Вы можете заметить, что все шаблоны в файле module_party_templates.py имеет метку pf_auto_start_dialogue. Эта метка заставит отряд автоматически начать диалог, всякий раз когда игрок повстречает такой отряд на карте.
4) Меню. Не используется, всегда ставьте значение 0 в этом поле.
5) Фракция.
6) Характеристика. Это поле включает в себя метки, которые определяют поведение группы на карте.
7) Список стэков. Стэк - войско одного типа; в отряде может быть несколько разных стэков. Поле каждого стэка содержит следущие элементы:
  7.1) Идентификатор войска.
  7.2) Минимальное колличество солдат в стэке.
  7.3) Максимальное колличество солдат в стэке.
  7.4) Метки/флаги (не обязательно к заполнению). (прим: там может быть например уже освещённая ранее метка (trp_swadian_crossbowman,5,14,pmf_is_prisoner).)

Максимальное колличество стэков в отряде - 6.

Разберем подробней шаблон отрядов "farmers":

1) Иденитфикатор шаблона групп = "farmers"
2) Имя шаблона групп = "farmers"
3) Метки шаблона групп = icon_peasant|pf_auto_start_dialog
4) Меню = 0
5) Фракция = fac_innocents
6) Характеристика = merchant_personality
7) Список стэков:
  7.1) Идентификатор войска = trp_farmer, trp_peasant_woman
  7.2) Минимальное колличество солдат в стэке = 11, 16
  7.3) Максимальное колличество солдат в стэке = 22, 44
  7.4) Метки/флаги = незаполнено

(прим: мы видим, что данный отряд может состоять из двух стеков - видов войск - (trp_farmer,11,22) и (trp_peasant_woman,16,44), соответственно 11-22 крестьянина и 16-44 крестьянок.)

Если вы изучали эту документацию с первой части, вы наверное стали настоящим специалистом в чтении записией, и поэтому, должно быть уже заметили, что одно из полей этой записи отлично от всех других, с которыми до сих пор мы имели дело: поле номер 6, характеристика. Давайте рассмотрим это поле и его функции в следующем разделе.

4.2 Характиристика.

(прим: personality - "личность" в переводе с англ., то есть это набор личностных характеристик, определяющих поведение)
Как было упомяното выше, в описании записи шаблона поле характеристик определяет поведение отряда на карте. Здесь вы можете задать определенное колличество очков храбрости и агрессии, или использовать одну из констант, каждая из которых содержит свое распределение очков храбрости и агрессии. Они (константы) определенны в файле header_parties.py, давайте откроем его, прокрутим вниз до самого дна и посмотрим какие значения там есть. Вы также найдете список возможных установок храбрости и агрессии.

Константа merchant_personality используется во многих шаблонах на протяжение всего файла module_party_templates.py. Отряды с этой характеристикой будут дружественны, они не будут атаковать врага или преследовать более слабые отряды. Это потому, что merchant_personality ставит метку агрессии отряда на ноль - aggresiveness_0, т.е. фактически убирает всю агрессивность. Отряды с aggresiveness_0 никогда не будут атаковать другие отряды. В отличие от них, у нормальных боевых отрядов выставлена характеристика soldier_personality, с меткой aggresiveness_8. Это позволяет им атаковать другие отряды, если их фракции находятся в плохих отношениях, а также если отряд противника не превосходит их в силе.

Значение Храбрости определяет будет ли отряд убегать от других более крупных отрядов. Высокая храбрость означает, что отряд не будет торопиться убегать, даже если не обладает преимуществом в силе. Группы с merchant_personality будут обладать храбростью 8, тогда как soldier_personality дает своему носителю храбрость 11.

Значения, которые могут принимать храбрость и агрессивность, варьируются от 0 до 15. Исходя из этого вы можете точно задать желаемое поведение отрядам, генерируемым вашим шаблоном. Однако, имеющим мало опыта мододелам рекомендуется для начала использовать уже заданные в header_parties.py метки-пресеты: они охватывают весьма широкий спектр характеристик, и могут покрыть любые нужды для вашего первого мода.

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

4.3 Создание новых шаблонов.

Скопируйте запись "farmers" и вставьте ее на дно файла, перед закрывающей квадратной скобкой:

  ("red_riders","The Red Riders",icon_peasant|pf_auto_start_dialog,0,fac_innocents,merchant_personality,[(trp_farmer,11,22),(trp_peasant_woman,16,44)]),

В этом примере мы поменяли идентификатор "farmers" на "red_riders", и сделали то же самое с именем. Теперь мы можем приступить к редактированию более специфичных деталей этого шаблона.

В качестве первого шага, давайте изменим фракционную принадлежность шаблона на fac_neutral, и merchant_personality сменим на soldier_personality:

  ("red_riders","The Red Riders",icon_peasant|pf_auto_start_dialog,0,fac_neutral,soldier_personality,[(trp_farmer,11,22),(trp_peasant_woman,16,44)]),

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

Теперь поиграемся с составом войск:

  ("red_riders","The Red Riders",icon_peasant|pf_auto_start_dialog,0,fac_neutral,soldier_personality,[(trp_geoffrey,1,1),(trp_red_rider,16,44)]),

В этом примере есть несколько примечательных изменений -- самое важное, что с этого момента отряд данного шаблона будет под предводительством trp_geoffrey, героя которого мы создали в третьей части документации. Т.к. в одном стэке может быть только один Джоффри, мы изменили минимум и максимум солдат на 1.

Мы придали ему в качестве подчиненных контингент trp_red_rider, обычных войск, которых мы тоже создали в третьей части. Их (red_rider) никогда не будет меньше чем 16, но когда игрок будет расти в уровне, то и размер отряда вырастет в пропорции. Фактически, этот новый шаблон может породить отряд, насчитывающий до 44 солдат войска в стеке "red_rider", но не более.

Сохранитесь, и кликните дважды на файле build_module.bat. Если все прошло хорошо, вы сможете использовать новый шаблон в вашем моде, но нужно еще "произвести" группы этого шаблона -- они не смогут появиться просто по своему желанию. И если мы запустим сейчас игру, мы не найдем ни одной группы нового шаблона на карте.

Мы научимся как "производить" группы в следующей части этой документации.