mount and blade warband неэффективность сбора налогов

COMMANDO

Дом любителей средневековья

claymore

Создание системы налогов для Warband

Деревни, города, замки. Все исправно платят вам налоги. Но почему нельзя влиять на эти налоги? Вы же их Лорд, меч мне в. ножны! Сейчас мы попытаемся силой воли и усилием мысли своими руками создать систему налогов.

Итак:
Создание системы налогов для Warband
1.134, 1.143, 1.153

1. Новые переменные
Раз мы собираемся делать менять налоги, то нам понадобится, что бы игра всегда помнила, какие большущие налоги мы ставим бедным деревенькам. Для этого нам явно понадобятся новые переменные!
Как бы это странно не звучало, но новые переменные мы прописываем в константах :-\ Ну что поделаешь, так уж назвали файл. В constants после slot_party_last_in_any_center мы дописываем:

slot_party_leader_last_courted = 70 #used for AI
slot_party_last_in_any_center = 71 #used for AI
slot_party_taxes_level = 72 # | taxes system
slot_party_taxes_accumulate = 73 # | taxes system

Как видите, для партий такие переменные зовутся слотами.

2. Новые меню
Управлять налогами будем из меню. Можно было и диалогами, но всем всегда так впадлу идти к старосте/гильдмастеру, не так ли?
Добавим новый пункт прямо в меню деревни. Итак в game_menus находим опцию меню village_wait и после нее добавляем наш пункт:

(» village_wait «,
[(party_slot_eq, «$current_town», slot_center_has_manor, 1),
(party_slot_eq, «$current_town», slot_town_lord, «trp_player»),
],
«Wait here for some time.»,
[
(assign,»$auto_enter_town»,»$current_town»),
(assign, «$g_last_rest_center», «$current_town»),

(try_begin),
(party_is_active, «p_main_party»),
(party_get_current_terrain, «:cur_terrain», «p_main_party»),
(try_begin),
(eq, «:cur_terrain», rt_desert),
(unlock_achievement, ACHIEVEMENT_SARRANIDIAN_NIGHTS),
(try_end),
(try_end),

(rest_for_hours_interactive, 24 * 7, 5, 1), #rest while attackable

(«collect_taxes_qst»,[(party_slot_eq, «$current_town», slot_village_state, 0),
(neg|party_slot_ge, «$current_town», slot_village_infested_by_bandits, 1),
(check_quest_active, «qst_collect_taxes»),
(quest_get_slot, «:quest_giver_troop», «qst_collect_taxes», slot_quest_giver_troop),
(quest_slot_eq, «qst_collect_taxes», slot_quest_target_center, «$current_town»),
(neg|quest_slot_eq, «qst_collect_taxes», slot_quest_current_state, 4),
(str_store_troop_name, s1, «:quest_giver_troop»),

(party_slot_eq, «$g_encountered_party», slot_center_has_messenger_post, 0),
],
«Build a messenger post.»,[(assign, «$g_improvement_type», slot_center_has_messenger_post),
(jump_to_menu, «mnu_center_improve»),]),
(» center_build_prisoner_tower «,[(eq, reg6, 0),
(this_or_next|party_slot_eq, «$g_encountered_party», slot_party_type, spt_town),
(party_slot_eq, «$g_encountered_party», slot_party_type, spt_castle),
(party_slot_eq, «$g_encountered_party», slot_center_has_prisoner_tower, 0),
],
«Build a prisoner tower.»,[(assign, «$g_improvement_type», slot_center_has_prisoner_tower),
(jump_to_menu, «mnu_center_improve»),]),

(«go_back_dot»,[],»Go back.»,[(jump_to_menu, «$g_next_menu»)]),

(
«center_improve»,0,
» As the party member with the highest engineer skill (), reckons> that building the will cost you\
denars and will take days.»,
«none»,

(«village_reports»,[(eq, «$cheat_mode», 1),], «CHEAT! Show reports.»,
[(jump_to_menu,»mnu_center_reports»),
]),
(» village_leave «,[],»Leave. «,[(change_screen_return,0)]),

(
«village_hostile_action»,0,
«What action do you have in mind?»,
«none»,
[],

Для удобства я добавил в заголовок название деревни и текущий уровень налогов.
Такс, мы забыли еще кое-что. Надо добавить такое же меню и для города. Я добавлял после меню покупок.

], «Door to the garden.»),

(«trade_with_merchants»,
[
(party_slot_eq,»$current_town»,slot_party_type, spt_town)
],
» Go to the marketplace. «,
[
(try_begin),
(call_script, «script_cf_enter_center_location_bandit_check»),
(else_try),
(jump_to_menu,»mnu_town_trade»),
(try_end),
]),

(«walled_center_manage»,
[
(neg|party_slot_eq, «$current_town», slot_village_state, svs_under_siege),
(party_slot_eq, «$current_town», slot_town_lord, «trp_player»),
(assign, reg0, 1),
(try_begin),
(party_slot_eq, «$current_town», slot_party_type, spt_castle),
(assign, reg0, 0),
(try_end),
],
«Manage this .»,
[
(assign, «$g_next_menu», «mnu_town»),
(jump_to_menu, «mnu_center_manage»),
]),

Как и в случае улучшений, осажденному замку не до уровня налогов. При осаде менять нельзя.
Город пользуется тем же меню вариантов, что деревня. Оно универсальное.
Если вы хотели сделать еще и городу это меню внутри «Управления», то вы это уже сделали раньше. Само меню «Управление городом/деревней» общее для обоих типов, просто там разные условия на опциях стоят.
2.1. Скрипты
Тут мелкий корректив, по этому определил в подпункт. По сути это изменение прямо касается п.2.
Еще остались замки. Замки вообще не самостоятельные. Даже благополучие у них от их деревни берется. Раз замок не имеет собственного развития, то и отдельный налог смысла ставить нет. Просто воспользуемся скриптом, находящимся в scripts, который ставит замкам достаток деревень и всунем туда еще и уровень налогов:

# script_calculate_castle_prosperities_by_using_its_villages
(
«calculate_castle_prosperities_by_using_its_villages», #This is called from within decide_faction_ai, or from
[
(try_for_range, «:cur_castle», castles_begin, castles_end),
(assign, «:total_prosperity», 0),
(assign, «:total_villages», 0),

(try_for_range, «:cur_village», villages_begin, villages_end),
(party_get_slot, «:bound_center», «:cur_village», slot_village_bound_center),
(eq, «:cur_castle», «:bound_center»),

(party_get_slot, «:village_prosperity», «:cur_village», slot_town_prosperity),
(party_get_slot, «:taxes_level», «:cur_village», slot_party_taxes_level), # | taxes system

(val_add, «:total_prosperity», «:village_prosperity»),
(val_add, «:total_villages», 1),
(try_end),

(try_begin),
(store_div, «:castle_prosperity», «:total_prosperity», «:total_villages»),
(else_try),
(assign, «:castle_prosperity», 50),
(try_end),
(party_set_slot, «:cur_castle», slot_party_taxes_level, «:taxes_level»), # | taxes system
(party_set_slot, «:cur_castle», slot_town_prosperity, «:castle_prosperity»),
(try_end),
]),

Теперь замки автоматически получат свой уровень налогов от своих деревень.

3. Презентации
Что бы игра тоже поняла, что мы поменяли уровень налогом, то внесем новые строки в presentations в недельную смету, где, собственно, и вычисляются все налоги.
Добавляем как раз недалеко от строки, очень удобной для поиска:

# Enterprise ends, taxes begin
(party_slot_eq, «:center_no», slot_town_lord, «trp_player»),
(party_get_slot, «:accumulated_rents», «:center_no», slot_center_accumulated_rents),

(party_get_slot, «:accumulated_tariffs», «:center_no», slot_center_accumulated_tariffs),

(store_add, «:accumulated_total», «:accumulated_rents», «:accumulated_tariffs»),
(val_add, «:all_centers_accumulated_total», «:accumulated_total»),

Теперь вы абсолютно точно получите столько процентов налога, сколько вы сам установили! Никаких условностей нет. Сухой расчет. Но помните, что скрипты M&B не очень любят дроби, по-этому иногда при налогах 0% вы можете получить приятный подарок в виде 5-20 динаров :lol:

4. Триггеры
Самое интересное! Сейчас мы добавим замудрёную систему изменения благополучия в триггеры!
Ищем пустой триггер, коих там ровно 10, в конце simple_triggers и вписываем в него вот это:

Остальные расчеты, кому лень посчитать:

В общем это все. Компилируем и пользуемся.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • mount and blade warband коды на отношения с лордами чит
  • mount and blade warband как уменьшить потери налогов