Как и что можно изменить
Автор: Avtocrator
Дата: 26 сен 2013, 20:47 · Просмотров: 11 224
Дата: 26 сен 2013, 20:47 · Просмотров: 11 224
Родословная фракции
Дуумвират и наследование
Спойлер (раскрыть)
Во фракции в Medieval 2 Total War можно назначать сразу нескольких наследников и более того нескольких лидеров. Правда прописать второго лидера можно только на старте, если же пытаться заскриптовать его появление, то либо ничего не выйдет, либо это приведет к вылету из игры.
Насколько я понял ИИ выбирает правителей и наследников по следующим условиям:
Первые два принципа позволяют создать дуумвират или триумвират, при том количество наследников не обязательно равно количеству правителей, однако адекватная работа по их назначению наблюдается только когда не больше 2 наследников. Если сделать 3-ех, то ИИ может выбрать нового наследника, а может и не выбрать, при том с выбором нового правителя такого не наблюдается, их всегда в триумвирате будет 3(при условии, что есть из кого выбирать).
В общем первые два пункта позволяют создать стабильный дуумвират(триумвират) с одним - двумя наследниками. Однако исходя из пункта 3, если один наследник умрет, а второго будет не из кого выбрать, то второй больше выбираться не будет(при том первого наследника могут назначить наследником второй раз, но это не влияет ни на что). То же и с правителями, если в живых останется только один правитель, то потом второй избираться не будет.
Из особенностей создания двух и более лидеров необходимо отметить, что отношения с Папской областью католических фракций придут к следующему: отлученную от церкви католическую фракцию вернут в церковное лоно уже после смерти одного из королей, а не обоих правителей.
И в заключении стоит сказать, что наследник фракции может не состоять в родстве с лидером(быть простым полководцем - не членом семьи), в таком случае, если он сам станет главой фракции(наследником на старте можно прописать и обычного полководца), то игра будет отображать уже его родословную, а не предыдущего лидера.
Насколько я понял ИИ выбирает правителей и наследников по следующим условиям:
1. Умер лидер - немедленно назначаются новый лидер и новый наследник.
2. Умер наследник - немедленно назначается новый наследник.
3. Если на начало хода нет наследника - назначается(если есть кого назначать) новый наследник.
2. Умер наследник - немедленно назначается новый наследник.
3. Если на начало хода нет наследника - назначается(если есть кого назначать) новый наследник.
Первые два принципа позволяют создать дуумвират или триумвират, при том количество наследников не обязательно равно количеству правителей, однако адекватная работа по их назначению наблюдается только когда не больше 2 наследников. Если сделать 3-ех, то ИИ может выбрать нового наследника, а может и не выбрать, при том с выбором нового правителя такого не наблюдается, их всегда в триумвирате будет 3(при условии, что есть из кого выбирать).
В общем первые два пункта позволяют создать стабильный дуумвират(триумвират) с одним - двумя наследниками. Однако исходя из пункта 3, если один наследник умрет, а второго будет не из кого выбрать, то второй больше выбираться не будет(при том первого наследника могут назначить наследником второй раз, но это не влияет ни на что). То же и с правителями, если в живых останется только один правитель, то потом второй избираться не будет.
Из особенностей создания двух и более лидеров необходимо отметить, что отношения с Папской областью католических фракций придут к следующему: отлученную от церкви католическую фракцию вернут в церковное лоно уже после смерти одного из королей, а не обоих правителей.
И в заключении стоит сказать, что наследник фракции может не состоять в родстве с лидером(быть простым полководцем - не членом семьи), в таком случае, если он сам станет главой фракции(наследником на старте можно прописать и обычного полководца), то игра будет отображать уже его родословную, а не предыдущего лидера.
Условный способ заскриптовать родословную
Спойлер (раскрыть)
Для большей историчности мода, можно ввести в действие исторических персонажей, которые будут появляться по ходу игры. Однако мне так и не удалось полностью заскриптовать родословную, потому представленный ниже способ можно только условно принимать как скриптование родословной.
Сам скрипт:
Также необходимо внести соответствующий эвент в historic_events.txt (data\text)
И в документе descr_strat.txt сделать лэйбл Вильгельму Завоевателю:
В чем собственно суть скрипта:
если на 3-ем ходу Вильгельм Завоеватель жив, то в начале 4-ого приходит сообщение о рождении Амброзия(в родословной это отражено не будет).
Затем, через 18 ходов(у меня 1 год = 1 ход), независимо от того жив ли Вильгельм Завоеватель к этому времени или умер, появляется в т.ч. появляется в родословной(взрослеет) Амброзий.
если же Вильгельм умер до 3-его хода, то скрипт не срабатывает.
Однако, проблемой данного скрипта остается то, что Амброзий может попасть в сыновья к любому из членов семьи.
Сам скрипт:
;ambrose<br /> declare_counter ambrose<br /><br /> monitor_event FactionTurnStart FactionIsLocal<br /> and I_TurnNumber = 3<br /> and I_CharacterExists wil1<br /> historic_event ambrose<br /> inc_counter ambrose 1<br /> terminate_monitor<br /> end_monitor<br /><br />;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br /> monitor_event FactionTurnStart FactionIsLocal<br /> and I_TurnNumber = 21<br /><br /> if I_CompareCounter ambrose == 1<br /> spawn_army<br /> faction england<br /> character Ambrose, named character, age 18, x 195, y 148, family ;command 8, dread 9, loyalty 7, piety 1<br /> traits Factionheir 1 , LoyaltyStarter 1 , NaturalMilitarySkill 1 , GoodCommander 1 , ReligionStarter 1<br /> unit NE Bodyguard exp 1 armour 0 weapon_lvl 0<br /> unit Spear Militia exp 0 armour 0 weapon_lvl 0<br /> unit Spear Militia exp 0 armour 0 weapon_lvl 0<br /> unit Town Militia exp 0 armour 0 weapon_lvl 0<br /> unit Peasants exp 0 armour 0 weapon_lvl 0<br /> end<br /> end_if<br /><br /> terminate_monitor<br /> end_monitor
Также необходимо внести соответствующий эвент в historic_events.txt (data\text)
{AMBROSE_BODY} (Описание события).<br />{AMBROSE_TITLE} Рождение Амброзия (заголовок события)<br />
И в документе descr_strat.txt сделать лэйбл Вильгельму Завоевателю:
Цитата
character William, named character, male, leader, age 50, x 195, y 147, label wil1
В чем собственно суть скрипта:
если на 3-ем ходу Вильгельм Завоеватель жив, то в начале 4-ого приходит сообщение о рождении Амброзия(в родословной это отражено не будет).
Затем, через 18 ходов(у меня 1 год = 1 ход), независимо от того жив ли Вильгельм Завоеватель к этому времени или умер, появляется в т.ч. появляется в родословной(взрослеет) Амброзий.
если же Вильгельм умер до 3-его хода, то скрипт не срабатывает.
Однако, проблемой данного скрипта остается то, что Амброзий может попасть в сыновья к любому из членов семьи.
Как убить персонажа
Спойлер (раскрыть)
Идеи для моддинга могут быть разными, в том числе и связанные с квестами. Потому решил на основании тутора камрада Gigantus написать и об этом.
Собственно само убийство осуществляется простой скриптовой командой kill_character имя/лейбл персонажа. Единственное ограничение для нее это то, что необходимо знать имя персонажа которого Вы собираетесь убить.
Кроме того, что персонажа можно убить, сделать это можно разными способами(хотя особого практического применения в моддинге я тут не вижу т.к. это скорее формальность). После добавления в команду убийства следующих строк:
Можно выбрать тип смерти, который впоследствии и будет отражен в родословной. Например запись kill_character DET_ASSASSINATED Mikhail дает следующий результат:
Единственная проблема при указании причины смерти заключается в том, что во всех случаях кроме смерти в бою(DET_BATTLE) сообщение о том что персонаж умер не приходит, потому кроме самой записи убийства в скрипт еще надо будет вставить ивент(historic_event) сообщающий о смерти героя.
Идеи для моддинга могут быть разными, в том числе и связанные с квестами. Потому решил на основании тутора камрада Gigantus написать и об этом.
Собственно само убийство осуществляется простой скриптовой командой kill_character имя/лейбл персонажа. Единственное ограничение для нее это то, что необходимо знать имя персонажа которого Вы собираетесь убить.
Кроме того, что персонажа можно убить, сделать это можно разными способами(хотя особого практического применения в моддинге я тут не вижу т.к. это скорее формальность). После добавления в команду убийства следующих строк:
DET_BATTLE
DET_STARVATION
DET_PLAGUE
DET_POISONED
DET_EXECUTED_PRISONER
DET_EXECUTED
DET_ASSASSINATED
DET_DISASTER
DET_NATURAL
DET_STARVATION
DET_PLAGUE
DET_POISONED
DET_EXECUTED_PRISONER
DET_EXECUTED
DET_ASSASSINATED
DET_DISASTER
DET_NATURAL
Можно выбрать тип смерти, который впоследствии и будет отражен в родословной. Например запись kill_character DET_ASSASSINATED Mikhail дает следующий результат:
Единственная проблема при указании причины смерти заключается в том, что во всех случаях кроме смерти в бою(DET_BATTLE) сообщение о том что персонаж умер не приходит, потому кроме самой записи убийства в скрипт еще надо будет вставить ивент(historic_event) сообщающий о смерти героя.
Варианты записи персонажа в descr_strat.txt
Спойлер (раскрыть)
Записать умершего персонажа:
character_record Wulfont, male, age 89, dead, 51
Записать умершего персонажа бывшим лидером фракции:
character_record Wulfont, male, age 89, dead, 51, past_leader
Записать несовершеннолетнего персонажа наследником фракции:
character_record Michiel, male, age 1, alive, current_heir
Записать лидера(в т.ч. несовершеннолетнего) как отсутствующего("выключенного") на карте:
character_record Henry, male, age 41, alive, current_leader
character_record Wulfont, male, age 89, dead, 51
Записать умершего персонажа бывшим лидером фракции:
character_record Wulfont, male, age 89, dead, 51, past_leader
Записать несовершеннолетнего персонажа наследником фракции:
character_record Michiel, male, age 1, alive, current_heir
Записать лидера(в т.ч. несовершеннолетнего) как отсутствующего("выключенного") на карте:
character_record Henry, male, age 41, alive, current_leader
Ввод в игру персонажей изначально отключенных на карте
(на примере Британской кампании кингдум)
Спойлер (раскрыть)
Выше показано, что существующего персонажа можно изначально записать как отсутствующего на карте, однако в любой момент его можно полноценно ввести в игру, в том числе и лидера, как это сделано для Норвегии в Британской кампании:
Файл descr_strat.txt сама запись лидера выглядит так:
где off_map означает отсутствие персонажа на карте, а current_leader, на то, что данный персонаж является лидером.
В ходе кампании можно также скриптом отключить на карте какого-либо персонажа посредством команды:
при том в descr_strat.txt необходимо добавить соответствующий Лейбл нужному персонажу.
Затем в нужный момент можно осуществить появление на карте отсутствующего персонажа.
Это делается почти так же, как и добавление скриптом полководца campaign_script.txt(условия его появления тут не прописаны):
spawn_army
faction norway
character Haakon Haakonsson, named character, x 98, y 148, battle_model Haakon_General
traits NorwayHero 1, LoyaltyStarter 1, GoodCommander 2, ManagementStarter 1
unit NE Bodyguard exp 2 armour 0 weapon_lvl 0
unit Huscarls exp 2 armour 0 weapon_lvl 0
unit Svenner exp 1 armour 0 weapon_lvl 0
unit Svenner exp 1 armour 0 weapon_lvl 0
unit Gotland Footmen exp 0 armour 0 weapon_lvl 0
unit Gotland Footmen exp 0 armour 0 weapon_lvl 0
unit Viking Raiders exp 0 armour 0 weapon_lvl 0
unit Viking Raiders exp 0 armour 0 weapon_lvl 0
unit Crossbowmen exp 0 armour 0 weapon_lvl 0
unit Crossbowmen exp 0 armour 0 weapon_lvl 0
end
В данной записи не надо указывать возраст персонажа, а также то что он является лидером. либо наследником.
Если же персонаж ранее присутствовал, но потом был выключен на карте, то необходимо указывать и его Лейбл:
Выше показано, что существующего персонажа можно изначально записать как отсутствующего на карте, однако в любой момент его можно полноценно ввести в игру, в том числе и лидера, как это сделано для Норвегии в Британской кампании:
Файл descr_strat.txt сама запись лидера выглядит так:
character_record Haakon Haakonsson, male, age 54, off_map, current_leader
где off_map означает отсутствие персонажа на карте, а current_leader, на то, что данный персонаж является лидером.
В ходе кампании можно также скриптом отключить на карте какого-либо персонажа посредством команды:
send_character_off_map Лейбл
при том в descr_strat.txt необходимо добавить соответствующий Лейбл нужному персонажу.
Затем в нужный момент можно осуществить появление на карте отсутствующего персонажа.
Это делается почти так же, как и добавление скриптом полководца campaign_script.txt(условия его появления тут не прописаны):
spawn_army
faction norway
character Haakon Haakonsson, named character, x 98, y 148, battle_model Haakon_General
traits NorwayHero 1, LoyaltyStarter 1, GoodCommander 2, ManagementStarter 1
unit NE Bodyguard exp 2 armour 0 weapon_lvl 0
unit Huscarls exp 2 armour 0 weapon_lvl 0
unit Svenner exp 1 armour 0 weapon_lvl 0
unit Svenner exp 1 armour 0 weapon_lvl 0
unit Gotland Footmen exp 0 armour 0 weapon_lvl 0
unit Gotland Footmen exp 0 armour 0 weapon_lvl 0
unit Viking Raiders exp 0 armour 0 weapon_lvl 0
unit Viking Raiders exp 0 armour 0 weapon_lvl 0
unit Crossbowmen exp 0 armour 0 weapon_lvl 0
unit Crossbowmen exp 0 armour 0 weapon_lvl 0
end
В данной записи не надо указывать возраст персонажа, а также то что он является лидером. либо наследником.
Если же персонаж ранее присутствовал, но потом был выключен на карте, то необходимо указывать и его Лейбл:
character Edward, named character, x 108, y 32, label edward1, battle_model Edward_General