Нажмите, чтобы прочитать
В этом уроке я покажу, как сделать рабочую модель патриарха (одну на каждую православную фракцию), и как изменить католических епископов так чтобы вы могли иметь их только по одному в каждом населенном пункте. Некоторые из этих скриптов можно найти в SS 6.2.
Итак, сначала добавим уровень патриарха (Patriarch) в трейт priestlevel в export_descr_character_traits.txt (далее EDCT):
Мы также должны сказать событием, что патриарх уже имеется:
Таким образом, мы используем скрипт в campaign_script для экспорта события, которое читается файлом EDCT, в свою очередь назначающим патриарха. Так как в обоих файлах должны быть выполнены одинаковые условия, мы всегда будем получать только одного патриарха.
Существует один недостаток - при наведении курсора в игре на священника, вы увидите "Кардинал", и то же самое, когда вы открываете его окна - везде будет кардинал, а не патриарх, даже если изменить соответствующие строки expanded.txt.
Таким образом, чтобы изменить это, поменяем в трейте Патриарха Effect Level на 3.
Откроем descr_models_strat и для всех православных фракций изменим это
Теперь, в expanded.txt мы должны обновить культуры и фракции добавив описание патриарха.
Первая культура:
На самом деле, епископ назначался для всех основных епархий (основных в том смысле, что имеют большое население, или по истории так было и т.д.), так что нам не совсем подходит тот способ, который используется в MTW.
Используя уже созданный скрипт патриарха, мы можем создать скрипт, который будет назначать епископа в каждом поселении. То есть, если у нас есть 5 поселений и 8 священников, мы всегда будем иметь 5 епископов, не больше не меньше.
О, а давайте сделаем епископу возможность потерять свой титул если город перестает принадлежать фракции.
Таким образом, вот скрипт:
Также мы создаем блок триггеров в EDCT проверяющих счетчики.
EDCT триггеры:
Также удалите все ненужные ванильные триггеры в EDCT, которые заставляют вас получать епископа каждый раз, когда вы завербуете священника в городском Соборе.
Патриарх.
Сейчас, модель патриарха практически не используется в игре. Проблема с назначением патриарха проста - для каждой фракции он может быть только один, но экспортировать тот факт, что патриарх уже назначен, нет возможности. Нет, если использовать только один файл. У нас есть 3 православных фракции - Киевская Русь, Русь и Византия.Итак, сначала добавим уровень патриарха (Patriarch) в трейт priestlevel в export_descr_character_traits.txt (далее EDCT):
;------------------------------------------Trait PriestLevelCharacters priestLevel BishopDescription Bishop_descEffectsDescription Bishop_effects_descGainMessage Bishop_gain_descLoseMessage Bishop_lose_descThreshold 1 Effect Piety 1 Effect Level 1 Level CardinalDescription Cardinal_descEffectsDescription Cardinal_effects_descThreshold 2 Effect Piety 1 Effect Level 2 Effect HeresyImmunity 1 Level PatriarchDescription Patriarch_descEffectsDescription Patriarch_effects_descGainMessage Patriarch_gain_descEpithet Patriarch_epithet_descThreshold 3 Effect HeresyImmunity 1Effect Piety 2Effect Level 2Effect MovementPoints 10Теперь нам нужно каким-то образом суметь сообщить игре, есть у нас уже патриарх или еще нет. И мы хотим чтобы AI тоже имел возможность получить патриарха. Для этого мы редактируем файл campaign_script. Монитор в скрипте будет выглядеть практически так же, как триггер для трейта Патриарха, проверяем на Piety (благочестие):
declare_counter patriarch_countmonitor_event PreFactionTurnStart TrueConditionset_event_counter PatriarchByzantium 0set_event_counter PatriarchRussia 0set_event_counter PatriarchKievanRus 0set_counter patriarch_count 0end_monitormonitor_event CharacterTurnEnd AgentType = priestand CharFactionType kievan_rusand Attribute Piety > 4if I_CompareCounter patriarch_count = 1set_event_counter PatriarchKievanRus 1end_ifinc_counter patriarch_count 1end_monitormonitor_event CharacterTurnEnd AgentType = priestand CharFactionType russiaand Attribute Piety > 4if I_CompareCounter patriarch_count = 1set_event_counter PatriarchRussia 1end_ifinc_counter patriarch_count 1end_monitormonitor_event CharacterTurnEnd AgentType = priestand CharFactionType byzantiumand Attribute Piety > 4if I_CompareCounter patriarch_count = 1set_event_counter PatriarchByzantium 1end_ifinc_counter patriarch_count 1end_monitorСчетчик patriarch_count используется для случая, если многие священники имеют благочестие > 4 и среди них нет патриарха, мы делаем так, чтобы событие PatrirachByzantium = 0 (после которого присваивается уровень патриарха) произошло только один раз.
Мы также должны сказать событием, что патриарх уже имеется:
monitor_event CharacterTurnStart AgentType = priestand CharFactionType kievan_rusand Trait PriestLevel = 3set_event_counter PatriarchKievanRus 1end_monitormonitor_event CharacterTurnStart AgentType = priestand CharFactionType russiaand Trait PriestLevel = 3set_event_counter PatriarchRussia 1end_monitormonitor_event CharacterTurnStart AgentType = priestand CharFactionType byzantiumand Trait PriestLevel = 3set_event_counter PatriarchByzantium 1end_monitorИтак, у нас есть событие, экспортируемое из файла campaign_script, говорящее нам, имеем мы патриарха или нет, так что теперь давайте создадим триггеры в EDCT для присваивания соответствующего уровня трейта:
;------------------------------------------Trigger priest_patriarch_kievan_rusWhenToTest CharacterTurnEndCondition AgentType = priestand CharFactionType kievan_rusand Attribute Piety > 4and I_EventCounter PatriarchKievanRus = 0Affects PriestLevel 3 Chance 100;------------------------------------------Trigger priest_patriarch_russiaWhenToTest CharacterTurnEndCondition AgentType = priestand CharFactionType russiaand Attribute Piety > 4and I_EventCounter PatriarchRussia = 0Affects PriestLevel 3 Chance 100;------------------------------------------Trigger priest_patriarch_byzantiumWhenToTest CharacterTurnEndCondition AgentType = priestand CharFactionType byzantiumand Attribute Piety > 4and I_EventCounter PatriarchByzantium = 0Affects PriestLevel 3 Chance 100Мы можем также добавить дополнительные условия, такие как EndedInSettlement, SettlementName или IsRegionOneOf, но так как это просто учебник то объясняем лишь основы. Главное не забыть добавить те же условия и в файл campaign_script.
Таким образом, мы используем скрипт в campaign_script для экспорта события, которое читается файлом EDCT, в свою очередь назначающим патриарха. Так как в обоих файлах должны быть выполнены одинаковые условия, мы всегда будем получать только одного патриарха.
Существует один недостаток - при наведении курсора в игре на священника, вы увидите "Кардинал", и то же самое, когда вы открываете его окна - везде будет кардинал, а не патриарх, даже если изменить соответствующие строки expanded.txt.
Таким образом, чтобы изменить это, поменяем в трейте Патриарха Effect Level на 3.
Откроем descr_models_strat и для всех православных фракций изменим это
strat_model orthodox_priest ; default modelstrat_model orthodox_bishop ; medium level prieststrat_model orthodox_patriarch ; advanced priestна это
strat_model orthodox_priest ; default modelstrat_model orthodox_bishop ; medium level prieststrat_model orthodox_bishop ; placeholder strat_model orthodox_patriarch ; advanced priestТем самым мы добавляем уровень.
Теперь, в expanded.txt мы должны обновить культуры и фракции добавив описание патриарха.
Первая культура:
{EMT_GREEK_PRIEST_1}Bishop{EMT_GREEK_PRIEST_2}PLAYER WILL NOT SEE THIS WITH THIS CULTURE{EMT_GREEK_PRIEST_3}Patriarch{EMT_GREEK_PRIEST}Priest{EMT_EASTERN_EUROPEAN_PRIEST_1}Bishop{EMT_EASTERN_EUROPEAN_PRIEST_2}Cardinal{EMT_EASTERN_EUROPEAN_PRIEST_3}Patriarch{EMT_EASTERN_EUROPEAN_PRIEST}PriestОбновляем и для других культур тоже. Каждая фракция имеющая патриарха также потребует новую запись в разделе фракции.
{EMT_BYZANTIUM_PRIEST_1}Byzantine Bishop{EMT_BYZANTIUM_PRIEST_2}WILL NOT SEE THIS{EMT_BYZANTIUM_PRIEST_2}Byzantine Patriarch{EMT_BYZANTIUM_PRIEST}Byzantine PriestСделайте то же самое для всех православных фракций. Теперь проблемы нет и мы получили Патриарха со своей собственной моделью, со всеми правильными описаниями.
Епископы.
Епископом всегда становится каждый священник завербованный в городском соборе или другом подобном здании. Глупо да?На самом деле, епископ назначался для всех основных епархий (основных в том смысле, что имеют большое население, или по истории так было и т.д.), так что нам не совсем подходит тот способ, который используется в MTW.
Используя уже созданный скрипт патриарха, мы можем создать скрипт, который будет назначать епископа в каждом поселении. То есть, если у нас есть 5 поселений и 8 священников, мы всегда будем иметь 5 епископов, не больше не меньше.
О, а давайте сделаем епископу возможность потерять свой титул если город перестает принадлежать фракции.
Таким образом, вот скрипт:
declare_counter bishop_countmonitor_event PreFactionTurnStart TrueConditionset_counter bishop_count 0end_monitormonitor_event CharacterTurnEnd AgentType = priestand not CharacterReligion paganand not CharacterReligion islamand Trait PriestLevel = 0if I_CompareCounter bishop_count = 0set_event_counter AppointBishop 0end_ifif I_CompareCounter bishop_count 0set_event_counter StripBishop 1inc_counter bishop_count -1end_ifend_monitorТаким образом, мы используем последовательность (PFTS>CTS>STS>STE>CTE) для того, чтобы подсчитать сколько фактически епископов у нас есть, и вычитаем количество имеющихся населенных пунктов.
Также мы создаем блок триггеров в EDCT проверяющих счетчики.
EDCT триггеры:
;------------------------------------------Trigger Priest_to_BishopWhenToTest CharacterTurnEndCondition AgentType = priestand I_EventCounter AppointBishop = 1and Trait PriestLevel = 0Affects PriestLevel 1 Chance 100;------------------------------------------Trigger Priest_stripped_BishopWhenToTest CharacterTurnEndCondition AgentType = priestand I_EventCounter StripBishop = 1and Trait PriestLevel = 1Affects PriestLevel -1 Chance 100Просто и удобно. Мы можем добавить массу других условий, но помните, эти условия должны соответствовать таким же в файле campaign_script.
Также удалите все ненужные ванильные триггеры в EDCT, которые заставляют вас получать епископа каждый раз, когда вы завербуете священника в городском Соборе.
Сообщение отредактировал Master_TW_DAR: 10 Октябрь 2014 - 08:38