1. Возможно, вам придется добавить несколько мешей в список мешей в файле module_meshes если компилятор начнет жаловаться, что они отсутствуют. Их все можно найти в user_interface_b.brf.
2. Вам нужен скрипт
из минимода/OSP Diplomacy/Дипломатия (у меня в презентации он назван просто script_get_item_value_with_imod).
3. Вам надо отредактировать опции начала торговли в файле module_game_menus. Лично я предлагаю сделать новый экран опциональным, типа такого:
...а где-нибудь в настройках, соответственно, добавить галочку для включения/отключения альтернативного экрана.
4. Вам также нужно отредактировать скрипт game_get_item_extra_text script посредством добавления следующих строк сразу за операциями store_script_param:
(try_begin),
(eq, reg58, -567), #special check to make sure we are in trade screen
(assign, ":real_extra_text_id", ":extra_text_id"),
(try_begin),
(is_between, ":item_no", food_begin, food_end),
(neq, reg59, reg60),
(val_add, ":extra_text_id", -1),
(eq, ":real_extra_text_id", 0),
(set_result_string, "@Remaining amount: ({reg59}/{reg60})"),
(set_trigger_result, 0xFF9933),
(try_end),
(try_begin),
(item_slot_eq, ":item_no", slot_item_type, itp_type_bow),
(val_add, ":extra_text_id", -1),
(eq, ":real_extra_text_id", 0),
(set_result_string, "@Requires Power Draw: {reg60}"),
(try_begin),
(store_skill_level, ":skill_level", skl_power_draw, "trp_player"),
(ge, ":skill_level", reg60),
(set_trigger_result, 0x00FF00),
(else_try),
(set_trigger_result, 0xFF0000),
(try_end),
(try_end),
(try_begin),
(item_slot_eq, ":item_no", slot_item_type, itp_type_thrown),
(val_add, ":extra_text_id", -1),
(eq, ":real_extra_text_id", 0),
(set_result_string, "@Requires Power Throw: {reg60}"),
(try_begin),
(store_skill_level, ":skill_level", skl_power_throw, "trp_player"),
(ge, ":skill_level", reg60),
(set_trigger_result, 0x00FF00),
(else_try),
(set_trigger_result, 0xFF0000),
(try_end),
(try_end),
(try_begin),
(item_slot_eq, ":item_no", slot_item_type, itp_type_horse),
(val_add, ":extra_text_id", -1),
(eq, ":real_extra_text_id", 0),
(set_result_string, "@Requires Riding: {reg60}"),
(try_begin),
(store_skill_level, ":skill_level", skl_riding, "trp_player"),
(ge, ":skill_level", reg60),
(set_trigger_result, 0x00FF00),
(else_try),
(set_trigger_result, 0xFF0000),
(try_end),
(try_end),
(try_begin),
(item_slot_eq, ":item_no", slot_item_type, itp_type_shield),
(val_add, ":extra_text_id", -1),
(eq, ":real_extra_text_id", 0),
(set_result_string, "@Requires Shield: {reg60}"),
(try_begin),
(store_skill_level, ":skill_level", skl_shield, "trp_player"),
(ge, ":skill_level", reg60),
(set_trigger_result, 0x00FF00),
(else_try),
(set_trigger_result, 0xFF0000),
(try_end),
(try_end),
(try_begin),
(this_or_next|item_slot_eq, ":item_no", slot_item_type, itp_type_one_handed_wpn),
(this_or_next|item_slot_eq, ":item_no", slot_item_type, itp_type_two_handed_wpn),
(this_or_next|item_slot_eq, ":item_no", slot_item_type, itp_type_polearm),
(this_or_next|item_slot_eq, ":item_no", slot_item_type, itp_type_crossbow),
(this_or_next|item_slot_eq, ":item_no", slot_item_type, itp_type_head_armor),
(this_or_next|item_slot_eq, ":item_no", slot_item_type, itp_type_body_armor),
(this_or_next|item_slot_eq, ":item_no", slot_item_type, itp_type_foot_armor),
(item_slot_eq, ":item_no", slot_item_type, itp_type_hand_armor),
(val_add, ":extra_text_id", -1),
(eq, ":real_extra_text_id", 0),
(set_result_string, "@Requires Strength: {reg60}"),
(try_begin),
(store_attribute_level, ":skill_level", "trp_player", ca_strength),
(ge, ":skill_level", reg60),
(set_trigger_result, 0x00FF00),
(else_try),
(set_trigger_result, 0xFF0000),
(try_end),
(try_end),
(try_end),