Чтобы не спорить, просто приведу реальный пример расчета размера армии для последнего на данный момент патча (1.153).
#script_game_get_party_companion_limit:
# This script is called from the game engine when the companion limit is needed for a party.
# INPUT: arg1 = none
# OUTPUT: reg0 = companion_limit
("game_get_party_companion_limit",
[
(assign, ":troop_no", "trp_player"),
(assign, ":limit", 30), # Базовый размер
(store_skill_level, ":skill", "skl_leadership", ":troop_no"),
(store_attribute_level, ":charisma", ":troop_no", ca_charisma),
(val_mul, ":skill", 5),
(val_add, ":limit", ":skill"), # +5 за каждый уровень Лидерства
(val_add, ":limit", ":charisma"), # +1 за каждое очко Харизмы
(troop_get_slot, ":troop_renown", ":troop_no", slot_troop_renown),
(store_div, ":renown_bonus", ":troop_renown", 25),
(val_add, ":limit", ":renown_bonus"), # +1 за каждые 25 известности
(assign, reg0, ":limit"),
(set_trigger_result, reg0),
]),
# script_party_get_ideal_size @used for NPC parties.
# Input: arg1 = party_no
# Output: reg0: ideal size
("party_get_ideal_size",
[
(store_script_param_1, ":party_no"),
#default limit is 30 for any party
(assign, ":limit", 30),
(try_begin),
(party_slot_eq, ":party_no", slot_party_type, spt_kingdom_hero_party),
(party_stack_get_troop_id, ":party_leader", ":party_no", 0),
(store_faction_of_party, ":faction_id", ":party_no"),
#default limit is 10 for kingdom lords
(assign, ":limit", 10), # Базовый размер для лордов
#each (leadership level) gives 5 to limit
(store_skill_level, ":skill", "skl_leadership", ":party_leader"),
(store_attribute_level, ":charisma", ":party_leader", ca_charisma),
(val_mul, ":skill", 5),
(val_add, ":limit", ":skill"), # +5 за каждый уровень Лидерства
#each (charisma level) gives 1 to limit
(val_add, ":limit", ":charisma"), # +1 за каждое очко Харизмы
#each (25 renown) gives 1 to limit
(troop_get_slot, ":troop_renown", ":party_leader", slot_troop_renown),
(store_div, ":renown_bonus", ":troop_renown", 25),
(val_add, ":limit", ":renown_bonus"), # +1 каждые 25 известности
#if this party is faction leader it takes additional 100 limit
(try_begin),
(faction_slot_eq, ":faction_id", slot_faction_leader, ":party_leader"),
(val_add, ":limit", 100), # +100 королям
(try_end),
#if this party is faction marshall it takes additional 20 limit
(try_begin),
(faction_slot_eq, ":faction_id", slot_faction_marshall, ":party_leader"),
(val_add, ":limit", 20), # +20 маршалам (в том числе, королям, если они - маршалы)
(try_end),
#party takes additional 20 limit per each castle it's party leader owns
(try_for_range, ":cur_center", castles_begin, castles_end),
(party_slot_eq, ":cur_center", slot_town_lord, ":party_leader"),
(val_add, ":limit", 20), # +20 каждый замок во владении (в том числе маршалам и королям)
(try_end),
(try_end),
#if player has level of 0 then ideal limit will be exactly same, if player has level of 80 then ideal limit will be multiplied by 2 ((80 + 80) / 80)
#below code will increase limits a little as the game progresses and player gains level
(store_character_level, ":level", "trp_player"),
(val_min, ":level", 80),
(store_add, ":level_factor", 80, ":level"),
(val_mul, ":limit", ":level_factor"),
(val_div, ":limit", 80), # Умножение на (80 + уровень игрока) / 80. (х1 для уровня 0, х2 для уровня 80)
(assign, reg0, ":limit"),
]),