такие вещи уже не делают через .txt файлы, это делают через модульную систему
через .txt удобно менять значения некоторых переменных, но не саму логику
можно почитать
нужно
установить модульную систему
VC 2.054, научиться компилировать её и изменять под свои нужды
открываем 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"),
]),
и компилируем..
то что я скинул выше, это и есть данный скомпилированный скрипт с одной добавленной строкой
на сайте вся необходимая информация о модульной системе
есть..
как уж вы будете вникать в код и его редактировать - это уже только от вас зависит