дополнение к AOR системе
Автор: Avtocrator
Дата: 05 янв 2015, 22:21 · Просмотров: 3 314
Дата: 05 янв 2015, 22:21 · Просмотров: 3 314
Персональная вербовка наемников
дополнение к AOR системе
дополнение к AOR системе
перевод
На одном из немецких сайтов нашел довольно старый (2011 года) тутор камрада Deatheye о персональном найме войск (наемников) генералами. Суть его заключается в том, что игрок сможет конкретным генералом (и никаким другим) нанимать в определенном регионе определенный юнит.
Для работы понадобятся следующие файлы:
campaign_script - data/world/maps/campaign/imperial_campaign
descr_mercenaries - data/world/maps/campaign/imperial_campaign
export_descr_character_traits - data
Прежде всего нужно отметить что данный способ найма будет доступен лишь для игрока, ИИ не сможет им пользоваться.
Для того, чтоб данный способ работал только с конкретным генералом, нам необходимо каким-то образом этого генерала идентифицировать (чтоб он имел какую-то отличительную от остальных черту). Это можно сделать с помощью трейта или анча. В примере будет рассмотрен способ идентификации через трейт Наследник - Factionheir (названия трейтов можно посмотреть в файле export_descr_character_traits). Наследник будет иметь возможность нанимать крестоносцев в Шотландии и Ирландии.
Что касается самого способа найма, то он будет реализован через скрипт. В файл campaign_script необходимо добавить следующие строки:
monitor_event CharacterSelected Trait Factionheir = 1
and CharacterIsLocal
and IsRegionOneOf Dublin_Province Edinburgh_Province Inverness_Province
set_event_counter erbeschottland 1
end_monitor
and CharacterIsLocal
and IsRegionOneOf Dublin_Province Edinburgh_Province Inverness_Province
set_event_counter erbeschottland 1
end_monitor
Смысл данного скрипта следующий: если игроком выбран персонаж, имеющий трейт Наследник, и данный персонаж находится в окрестностях поселений Дублин, Эдинбург, Инвернесс - то скриптом выставляется счетчик erbeschottland 1. Значение 1 этого счетчика будет "разрешать" наем нужных нам юнитов.
Для того, чтоб запретить наем юнитов другими генералами, необходим второй скрипт, который обнулит счетчик:
monitor_event CharacterSelected Trait Factionheir = 0
set_event_counter erbeschottland 0
end_monitor
set_event_counter erbeschottland 0
end_monitor
Т.е. если игрок выбрал персонажа, и этот персонаж не имеет трейт Наследник, то счетчик будет обнулен.
Однако сам по себе счетчик не может ни запретить, ни разрешить наем юнита. Для того, чтоб ограничить наем перейдем к файлу descr_mercenaries. В нем могут быть указаны следующие ограничения по найму юнитов:
start_year - год начала найма
end_year - год конца найма
religions - религия генерала, набирающего наемников.
crusading - наемники для Крестового похода или Джихада
events - событие, которое устанавливается по счетчику (это мы и будем использовать)
Найдем в этом файле строку с рыцарями-крестоносцами:
unit Crusader Knights exp 0 cost 1380 replenish 0.15 - 0.35 max 3 initial 1 end_year 1300 religions { catholic } crusading
и перенесем ее в нужный нам регион найма:
pool Scotland_Ireland
regions Dublin_Province Edinburgh_Province Inverness_Province
unit Crusader Knights exp 0 cost 1380 replenish 0.15 - 0.35 max 3 initial 1 end_year 1300 religions { catholic } crusading
regions Dublin_Province Edinburgh_Province Inverness_Province
unit Crusader Knights exp 0 cost 1380 replenish 0.15 - 0.35 max 3 initial 1 end_year 1300 religions { catholic } crusading
Теперь мы меняем условия найма, чтоб только наследник нашей фракции мог нанять этих рыцарей в этом регионе:
pool Scotland_Ireland
regions Dublin_Province Edinburgh_Province Inverness_Province
unit Crusader Knights exp 0 cost 1380 replenish 0.15 - 0.35 max 3 initial 1 events { erbeschottland }
regions Dublin_Province Edinburgh_Province Inverness_Province
unit Crusader Knights exp 0 cost 1380 replenish 0.15 - 0.35 max 3 initial 1 events { erbeschottland }
Все, теперь из всех наших генералов данный юнит сможет нанимать один только наследник.
Что касается ИИ, то как указано выше для него эта функция работать не будет и нанимать данный юнит в указанных регионах он вообще не сможет. Чтоб генералы ИИ (любые, не только наследники) могли нанимать данный юнит, можно сделать такой скрипт:
monitor_event FactionTurnStart FactionIsLocal
set_event_counter erbeschottland 0
end_monitor
monitor_event FactionTurnEnd FactionIsLocal
set_event_counter erbeschottland 1
end_monitor
set_event_counter erbeschottland 0
end_monitor
monitor_event FactionTurnEnd FactionIsLocal
set_event_counter erbeschottland 1
end_monitor