Подкреплениями занимается скрипт cf_reinforce_party.
Если нужно делать прибавку юнитов вместе со стандартными подкреплениями, можно использовать его, прописав ряд исключений (если город такой-то / компаньон такой-то => то добавить еще вот тех). Ну, это если грубо делать (минимум усилий, минимум оптимизации). В нормальной модульке это, конечно, было бы правильнее по-иному реализовать, написав общий каркас для подобной фичи.
Если просто спавн время от времени как с КОшными рыцарями, нужен любой временной триггер (simple trigger проще всего) и в нем длинный список
(party_add_members, <party_id>, <troop_id>, <number>), где город (party) такой-то, солдат такой-то, в таком-то количестве.
Ну а для качества (чтобы это не выглядело как дешевая копирка: во всех городах одновременно и в одном и то же количестве), численность и вероятность генерируем с помощью
Например, сам триггер запускается раз в 24 часа, в нем генерируется число от 0 до 100, и если оно меньше 10, то в Марлеонс добавляется (опять генерируем рандомное число) от 1 до 2 тяжелых марлеонских кавалеристов.
PS. Вот cf_reinforce_party, переписанный мной с 0 в Перизно. Там как раз есть всякие исключения и разные способы добавления / не добавления войск в разных ситуациях.
Смотрите, изучайте.
("cf_reinforce_party",
[
(store_script_param_1, ":party_no"),
(store_faction_of_party, ":party_faction", ":party_no"),
##diplomacy start+ The party faction may be changed for culture, but we still need the original
(assign, ":real_party_faction", ":party_faction"),
##diplomacy end+
(party_get_slot, ":party_type",":party_no", slot_party_type),
(assign, ":party_template_a", 0),
(assign, ":party_template_b", 0),
(assign, ":party_template_c", 0),
(faction_get_slot, ":fief_champion", ":real_party_faction", slot_faction_fief_reinf_champion),
#first patrols etc., then the rest
(try_begin),
(this_or_next|eq, ":party_type", spt_patrol),
(this_or_next|eq, ":party_type", spt_war_party),
(this_or_next|eq, ":party_type", spt_kingdom_caravan),
(eq, ":party_type", spt_reinforcement_party),
(faction_get_slot, ":party_template_a", ":real_party_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":real_party_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":real_party_faction", slot_faction_reinforcements_c),
(store_random_in_range, ":rand", 0, 100),
(try_begin),
(lt, ":rand", 50),
(party_add_template, ":party_no", ":party_template_a"),
(else_try),
(lt, ":rand", 75),
(party_add_template, ":party_no", ":party_template_b"),
(else_try),
(party_add_template, ":party_no", ":party_template_c"),
(try_end),
(try_end),
#determining faction
(try_begin),
(neq, ":real_party_faction", "fac_player_supporters_faction"), #NPC factions
(is_between, ":real_party_faction", npc_kingdoms_begin, npc_kingdoms_end),
(try_begin),
(eq, ":party_type", spt_kingdom_hero_party), #in NPC factions a lord always uses his original troops
(party_stack_get_troop_id, ":leader", ":party_no", 0),
(troop_get_slot, ":lord_original_faction", ":leader", slot_troop_original_faction),
(faction_get_slot, ":party_template_a", ":lord_original_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":lord_original_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":lord_original_faction", slot_faction_reinforcements_c),
(else_try),
(this_or_next|eq, ":party_type", spt_town), #now centers
(eq, ":party_type", spt_castle),
(party_get_slot, ":town_lord", ":party_no", slot_town_lord),
(party_get_slot, ":original_center_faction", ":party_no", slot_center_original_faction),
(try_begin),
(gt, ":town_lord", 0), #there is a lord, but from another faction, 50/50 chance
(neg|troop_slot_eq, ":town_lord", slot_troop_original_faction, ":real_party_faction"),
(troop_get_slot, ":lord_original_faction", ":town_lord", slot_troop_original_faction),
(store_random_in_range, ":random_reinforcement", 0, 20),
(try_begin),
(ge, ":random_reinforcement", 10),
(faction_get_slot, ":party_template_a", ":real_party_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":real_party_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":real_party_faction", slot_faction_reinforcements_c),
(faction_get_slot, ":fief_champion", ":real_party_faction", slot_faction_fief_reinf_champion),
(else_try),
(faction_get_slot, ":party_template_a", ":lord_original_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":lord_original_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":lord_original_faction", slot_faction_reinforcements_c),
(faction_get_slot, ":fief_champion", ":lord_original_faction", slot_faction_fief_reinf_champion),
(try_end),
(else_try), #either there is no lord or the lord is from the same faction
(faction_get_slot, ":party_template_a", ":real_party_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":real_party_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":real_party_faction", slot_faction_reinforcements_c),
(faction_get_slot, ":fief_champion", ":real_party_faction", slot_faction_fief_reinf_champion),
(try_end),
(try_end),
(else_try), #now player's faction
(eq, ":real_party_faction", "fac_player_supporters_faction"),
(try_begin),
(eq, ":party_type", spt_kingdom_hero_party), #lords first
(party_stack_get_troop_id, ":leader", ":party_no", 0),
(try_begin),
(troop_slot_ge, ":leader", slot_lord_alt_faction_for_troops, 1), #first and foremost - individual order to use mercs or freelancer or the like
(troop_get_slot, ":alt_faction_for_troops", ":leader", slot_lord_alt_faction_for_troops),
(faction_get_slot, ":party_template_a", ":alt_faction_for_troops", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":alt_faction_for_troops", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":alt_faction_for_troops", slot_faction_reinforcements_c),
(else_try),
(troop_slot_eq, ":leader", slot_lord_troops_override, 1), #a lord is forced to use player faction culture troops
(gt, "$g_player_culture", 0), #...AND a player enforces a certain culture
(faction_get_slot, ":party_template_a", "$g_player_culture", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", "$g_player_culture", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", "$g_player_culture", slot_faction_reinforcements_c),
(else_try),
(troop_get_slot, ":lord_original_faction", ":leader", slot_troop_original_faction), #otherwise just original troops
(faction_get_slot, ":party_template_a", ":lord_original_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":lord_original_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":lord_original_faction", slot_faction_reinforcements_c),
(try_end),
(else_try),
(this_or_next|eq, ":party_type", spt_town), #now centers
(eq, ":party_type", spt_castle),
(party_get_slot, ":town_lord", ":party_no", slot_town_lord),
(party_get_slot, ":original_center_faction", ":party_no", slot_center_original_faction),
(try_begin),
(gt, "$g_player_culture", 0),
(try_begin),
(gt, ":town_lord", 0),
(troop_slot_ge, ":town_lord", slot_lord_alt_faction_for_troops, 1), #first and foremost - individual order to use mercs or freelancers or the like
(troop_get_slot, ":alt_faction_for_troops", ":town_lord", slot_lord_alt_faction_for_troops),
(faction_get_slot, ":party_template_a", ":alt_faction_for_troops", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":alt_faction_for_troops", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":alt_faction_for_troops", slot_faction_reinforcements_c),
(else_try),
(gt, ":town_lord", 0), #there is a lord and he has to use player faction culture troops
(troop_slot_eq, ":town_lord", slot_lord_troops_override, 1),
(faction_get_slot, ":party_template_a", "$g_player_culture", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", "$g_player_culture", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", "$g_player_culture", slot_faction_reinforcements_c),
(faction_get_slot, ":fief_champion", "$g_player_culture", slot_faction_fief_reinf_champion),
(else_try),
(gt, ":town_lord", 0),
(troop_get_slot, ":lord_original_faction", ":town_lord", slot_troop_original_faction),
(troop_slot_eq, ":town_lord", slot_lord_troops_override, 0), #lord uses his original troops
(faction_get_slot, ":party_template_a", ":lord_original_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":lord_original_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":lord_original_faction", slot_faction_reinforcements_c),
(faction_get_slot, ":fief_champion", ":lord_original_faction", slot_faction_fief_reinf_champion),
(else_try), #fief doesn't have a lord
(faction_get_slot, ":party_template_a", "$g_player_culture", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", "$g_player_culture", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", "$g_player_culture", slot_faction_reinforcements_c),
(faction_get_slot, ":fief_champion", "$g_player_culture", slot_faction_fief_reinf_champion),
(try_end),
(else_try), #player does not enforce any culture
(try_begin),
(gt, ":town_lord", 0),
(troop_get_slot, ":lord_original_faction", ":town_lord", slot_troop_original_faction),
(faction_get_slot, ":party_template_a", ":lord_original_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":lord_original_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":lord_original_faction", slot_faction_reinforcements_c),
(faction_get_slot, ":fief_champion", ":lord_original_faction", slot_faction_fief_reinf_champion),
(else_try), #fief doesn't have a lord
(faction_get_slot, ":party_template_a", ":original_center_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":original_center_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":original_center_faction", slot_faction_reinforcements_c),
(faction_get_slot, ":fief_champion", ":original_center_faction", slot_faction_fief_reinf_champion),
(try_end),
(try_end),
(try_end),
(else_try), #rebels etc.?
(try_begin),
(eq, ":party_type", spt_kingdom_hero_party),
(party_stack_get_troop_id, ":leader", ":party_no", 0),
(troop_get_slot, ":leader_faction", ":leader", slot_troop_original_faction),
(faction_get_slot, ":party_template_a", ":leader_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":leader_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":leader_faction", slot_faction_reinforcements_c),
(else_try),
(this_or_next|eq, ":party_type", spt_town),
(eq, ":party_type", spt_castle),
(party_get_slot, ":original_center_faction", ":party_no", slot_center_original_faction),
(faction_get_slot, ":party_template_a", ":original_center_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":original_center_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":original_center_faction", slot_faction_reinforcements_c),
(else_try),
(faction_get_slot, ":party_template_a", ":real_party_faction", slot_faction_reinforcements_a),
(faction_get_slot, ":party_template_b", ":real_party_faction", slot_faction_reinforcements_b),
(faction_get_slot, ":party_template_c", ":real_party_faction", slot_faction_reinforcements_c),
(try_end),
(try_end),
#Now let's see if we actually gonna use these templates and how we are gonna use them
#let's start with centers
(try_begin),
(this_or_next|eq, ":party_type", spt_town),
(eq, ":party_type", spt_castle),
(store_random_in_range, ":rand", 0, 100),
(try_begin),
(eq, ":party_template_a", "pt_kingdom_8_reinforcements_a"), #Falcons only use 1 template for garrisons
(party_add_template, ":party_no", ":party_template_a"),
(try_begin),
#(eq, ":original_center_faction", ":real_party_faction"),
(ge, ":fief_champion", soldiers_begin),
(store_random_in_range, ":random_number_of_troops", 1, 3),
(party_add_members, ":party_no", ":fief_champion", ":random_number_of_troops"),
(try_end),
(else_try),
(eq, ":party_no", "p_castle_62"), #exception for Tabranpadan Castle but only as long as Grasullah is its owner
(party_slot_eq, ":party_no", slot_town_lord, "trp_knight_3_11"),
(party_add_template, ":party_no", "pt_lord_ut_grasullah_castle"),
(else_try),
(party_slot_eq, ":party_no", slot_town_lord, "trp_knight_6_11"), #exception for Paramonos's fiefs after his template is revealed
(troop_slot_ge, "trp_knight_6_11", slot_lord_unique_template, 1),
(party_add_template, ":party_no", "pt_lord_ut_paramonos"),
(else_try),
(try_begin),
(eq, ":party_type", spt_town),
(val_add, ":rand", 15),
(try_end),
(try_begin),
#(eq, ":original_center_faction", ":real_party_faction"),
(ge, ":fief_champion", soldiers_begin),
(store_random_in_range, ":random_number_of_troops", 1, 3),
(party_add_members, ":party_no", ":fief_champion", ":random_number_of_troops"),
(try_end),
(try_begin),
(lt, ":rand", 40),
(party_add_template, ":party_no", ":party_template_a"), #noobier template
(else_try),
(party_add_template, ":party_no", ":party_template_b"), #better template
(try_end),
(try_end),
(else_try),
#now lords' turn
(eq, ":party_type", spt_kingdom_hero_party),
(party_stack_get_troop_id, ":leader", ":party_no", 0),
(try_begin),
(this_or_next|troop_slot_eq, ":leader", slot_lord_troops_override, 0), #lord isn't forced to use specific troops
(neq, ":real_party_faction", "fac_player_supporters_faction"), #or he's in NPC faction
(troop_slot_ge, ":leader", slot_lord_unique_template, 1), #AND he's got a unique template
(troop_get_slot, ":unique_template", ":leader", slot_lord_unique_template),
(party_add_template, ":party_no", ":unique_template"),
(else_try),
(store_random_in_range, ":random", 0, 100),
(try_begin),
(eq, ":party_template_a", "pt_kingdom_8_reinforcements_a"), #Falcons only use 2 templates for lords' parties
(try_begin),
(lt, ":random", 50),
(party_add_template, ":party_no", ":party_template_b"),
(else_try),
(party_add_template, ":party_no", ":party_template_c"),
(try_end),
(else_try),
(try_begin),
(lt, ":random", 35),
(party_add_template, ":party_no", ":party_template_a"), #noobier template
(else_try),
(lt, ":random", 70),
(party_add_template, ":party_no", ":party_template_b"), #better template
(else_try),
(party_add_template, ":party_no", ":party_template_c"), #lords' template
(try_end),
(try_end),
(try_end),
(try_begin),
(troop_slot_eq, ":leader", slot_lord_troops_override, 0), #lord isn't forced to use specific troops
(troop_slot_ge, ":leader", slot_lord_unique_troop, 1), #and he's got unique troops
(troop_get_slot, ":unique_troops", ":leader", slot_lord_unique_troop),
(troop_get_slot, ":unique_troops_max_quantity", ":leader", slot_lord_unique_troop_max_quantity),
(store_random_in_range, ":random_number_of_troops", 0, ":unique_troops_max_quantity"),
(party_add_members, ":party_no", ":unique_troops", ":random_number_of_troops"),
(try_end),
(try_begin), #Maccavians
(troop_slot_eq, ":leader", slot_troop_original_faction, "fac_kingdom_4"),
(this_or_next|troop_slot_eq, ":leader", slot_lord_reputation_type, lrep_goodnatured), #all goodnatured lords and few other lords
(this_or_next|eq, ":leader", "trp_knight_4_6"),
(eq, ":leader", "trp_npc9"), #Marcus
(neq, ":leader", "trp_knight_4_9"), #Tytus Rex got unique template
(neq, ":leader", "trp_knight_4_18"), #his son too
(this_or_next|troop_slot_eq, ":leader", slot_lord_troops_override, 0),
(neq, ":real_party_faction", "fac_player_supporters_faction"),
(store_random_in_range, ":random_number_of_troops", 0, 2),
(party_add_members, ":party_no", "trp_k04_mac_n_steelknight", ":random_number_of_troops"), #NGFs
(else_try),
(troop_slot_eq, ":leader", slot_troop_original_faction, "fac_kingdom_4"),
(neq, ":leader", "trp_knight_4_9"), #Tytus Rex got unique template
(neq, ":leader", "trp_knight_4_18"), #his son too
(neq, ":leader", "trp_knight_4_12"), #Aeric won't mind Knights of Steel in his mostly-infantry party, but won't recruit Black Knights
(this_or_next|troop_slot_eq, ":leader", slot_lord_troops_override, 0),
(neq, ":real_party_faction", "fac_player_supporters_faction"),
(store_random_in_range, ":random_number_of_troops", 0, 2),
(party_add_members, ":party_no", "trp_k04_mac_n_blackknight", ":random_number_of_troops"), #OGFs
(try_end),
(else_try),
(store_random_in_range, ":random", 0, 100),
(try_begin),
(lt, ":random", 35),
(party_add_template, ":party_no", ":party_template_a"), #noobier template
(else_try),
(lt, ":random", 70),
(party_add_template, ":party_no", ":party_template_b"), #better template
(else_try),
(party_add_template, ":party_no", ":party_template_c"), #lords' template
(try_end),
(try_end),
]),