такие вещи уже не делают через .txt файлы, это делают через модульную систему
через .txt удобно менять значения некоторых переменных, но не саму логику
можно почитать
нужно установить (https://rusmnb.ru/index.php?topic=5710.0) модульную систему VC 2.054 (http://download3.taleworlds.com/VC_Source_2054.zip), научиться компилировать её и изменять под свои нужды
открываем module_scripts.py и ищем нужный скрипт..
# 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 20 for kingdom lords
(try_begin),
(neq, ":faction_id", "fac_adventurers"),
(assign, ":limit", 20),
(try_end),
#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"),
#each (charisma level) gives 1 to limit
(val_add, ":limit", ":charisma"),
#each (9 renown) gives 1 to limit #same that player chief
(troop_get_slot, ":troop_renown", ":party_leader", slot_troop_renown),
(store_div, ":renown_bonus", ":troop_renown", 9), #VC use 9. Renown is important but no the key
(val_add, ":limit", ":renown_bonus"), #common renown in lords and kings enter 1000 and 1500 = 166 men
#if this party is faction leader it takes additional 100 limit #possesions give bonus
(try_begin),
(neq,":faction_id", "fac_adventurers"),
(faction_slot_eq, ":faction_id", slot_faction_leader, ":party_leader"),
(faction_get_slot,":num_castles",":faction_id",slot_faction_num_castles),
(faction_get_slot,":num_towns",":faction_id",slot_faction_num_towns),
(val_mul,":num_castles",10),
(val_mul,":num_towns",20),
(val_add,":num_towns",":num_castles"),
(val_add, ":limit", ":num_towns"),
# (val_add, ":limit", 100),
(try_end),
#if this party is faction marshal it takes additional 20 limit
(try_begin),
(neq,":faction_id", "fac_adventurers"),
(faction_slot_eq, ":faction_id", slot_faction_marshal, ":party_leader"),
(val_add, ":limit", 20),
(try_end),
#party takes additional 20 limit per each castle it's party leader owns
#Brytenwalda based system was renown, but VC prefer propierties -Fryd concept-
(try_for_range, ":cur_center", walled_centers_begin, walled_centers_end),
# (try_for_range, ":cur_center", castles_begin, castles_end),
(party_slot_eq, ":cur_center", slot_town_lord, ":party_leader"),
(try_begin), #towns
(party_slot_eq, ":cur_center", slot_party_type, spt_town),
(val_add, ":limit", 80),
(else_try), #castles forts
(val_add, ":limit", 40),
(try_end),
(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),
(assign, reg0, ":limit"),
]),
добавляем одну строку перед последней
(val_min, ":limit", 150),
val_min - это функция, которая из двух переменных выбирает наименьшее значение и присваивает его первой переменной
при limit<150 значение limit=limit,
при limit>150 значение limit=150..
добавив одну эту строку мы ограничиваем уже сформированное скриптом значение переменной limit нужной нам константой 150
почему перед последней, потому что в последней строке происходит присвоение регистру reg0 значения переменной limit через функцию assign..
а 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 20 for kingdom lords
(try_begin),
(neq, ":faction_id", "fac_adventurers"),
(assign, ":limit", 20),
(try_end),
#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"),
#each (charisma level) gives 1 to limit
(val_add, ":limit", ":charisma"),
#each (9 renown) gives 1 to limit #same that player chief
(troop_get_slot, ":troop_renown", ":party_leader", slot_troop_renown),
(store_div, ":renown_bonus", ":troop_renown", 9), #VC use 9. Renown is important but no the key
(val_add, ":limit", ":renown_bonus"), #common renown in lords and kings enter 1000 and 1500 = 166 men
#if this party is faction leader it takes additional 100 limit #possesions give bonus
(try_begin),
(neq,":faction_id", "fac_adventurers"),
(faction_slot_eq, ":faction_id", slot_faction_leader, ":party_leader"),
(faction_get_slot,":num_castles",":faction_id",slot_faction_num_castles),
(faction_get_slot,":num_towns",":faction_id",slot_faction_num_towns),
(val_mul,":num_castles",10),
(val_mul,":num_towns",20),
(val_add,":num_towns",":num_castles"),
(val_add, ":limit", ":num_towns"),
# (val_add, ":limit", 100),
(try_end),
#if this party is faction marshal it takes additional 20 limit
(try_begin),
(neq,":faction_id", "fac_adventurers"),
(faction_slot_eq, ":faction_id", slot_faction_marshal, ":party_leader"),
(val_add, ":limit", 20),
(try_end),
#party takes additional 20 limit per each castle it's party leader owns
#Brytenwalda based system was renown, but VC prefer propierties -Fryd concept-
(try_for_range, ":cur_center", walled_centers_begin, walled_centers_end),
# (try_for_range, ":cur_center", castles_begin, castles_end),
(party_slot_eq, ":cur_center", slot_town_lord, ":party_leader"),
(try_begin), #towns
(party_slot_eq, ":cur_center", slot_party_type, spt_town),
(val_add, ":limit", 80),
(else_try), #castles forts
(val_add, ":limit", 40),
(try_end),
(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),
(val_min, ":limit", 150),
(assign, reg0, ":limit"),
]),
и компилируем..
то что я скинул выше, это и есть данный скомпилированный скрипт с одной добавленной строкой
на сайте вся необходимая информация о модульной системе есть (https://rusmnb.ru/index.php?topic=5710.0)..
как уж вы будете вникать в код и его редактировать - это уже только от вас зависит