Создание Мира - Расширенный рекрутинг в ходе событий.
Кредиты:
Это пособие представляет собой обобщение идей и кода, обсуждаемых в двух темах под ними, все кредиты идут участникам:
Могут ли наемники быть ограниченными, чтобы только ИИ мог нанять их?
Как добавить наемников
Введение:
Запуск и остановка рекрутинга в ходе событий не является чем-то новым - это было сделано после того, как игра была опубликована, так что же здесь нового? Проблема использования условий event_counter заключается в том, что отключение приводило к сбросу пула, что сделало условие непригодным для частого включения\отключения - оставив только команду сценария «замораживания», которая в лучшем случае была «неуклюжей».Вопрос был в том, когда это происходит (по завершении хода мятежников), когда вы снова включаете условие, чтобы сохранить предыдущий накопленный пул - в отличие от принципа «Повторное включение после отключения» ,в другом моем пособии:
Создание Мира - постройка и поддержание уникальных зданий
Кодирование:
Вербовка наемников ограничивается фракциями
imperial_campaign_script
Два монитора [фракции] требуют репликации для каждой фракции, имеющих права.В качестве альтернативы можно использовать специальные счетчики фракций, что потребует клонирования линии наемников с этими счетчиками.
Код:
monitor_event PreFactionTurnStart FactionType [faction]
set_event_counter merc_turn 1
end_monitor
monitor_event PreFactionTurnStart not FactionType [faction]
set_event_counter merc_turn 0
end_monitor
monitor_event FactionTurnEnd FactionType slave
set_event_counter merc_turn 1
end_monitor
descr_mercenaries
Код:
pool [pool name]
regions [region names]
unit [unit name] exp 0 cost 220 replenish 0.15 - 0.35 max 3 initial 5 events { merc_turn }
Сезонный набор
imperial_campaign_script
Часть скрипта подразумевает 12 оборотов в год, начиная с кампании, начинающейся зимой. Время рекрутинга будет с октября по март.
Код:
monitor_event PreFactionTurnStart FactionIsLocal
inc_event_counter season_time 1
if I_EventCounter season_time > 9 ; from October
and I_EventCounter season_time < 4 ; to March
set_event_counter recruit_season 1
end_if
if I_EventCounter season_time > 3 ; from April
and I_EventCounter season_time < 10 ; to September
set_event_counter recruit_season 0
end_if
end_monitor
monitor_event FactionTurnEnd FactionType slave
set_event_counter recruit_season 1
if I_EventCounter season_time > 12
set_event_counter season_time 0 ; resetting season counter
end_if
end_monitor
export_descr_buildings
Код:
capability
{
recruit_pool "[unit name]" 1 0.2 2 0 requires factions { [faction name], } and event_counter recruit_season 1
}
Вывод:
Исходя из этого принципа и примеров, Я уверен, что это можно расширить, чтобы имитировать другие включения\отключения принципов вербовки - Я работаю над скриптом, который позволит ограничить рекрутинг на основе относительного количества единиц, размещенных в сравнении с поселениями, где эти скрипты, безусловно, будут отображаться.