rubik
Squire
I have implemented it in the Warband 1.142. As below:
The source code is ready.
NOTE: it's only for the WB 1.142 or higher version.
Paste this into module_presentations.py.
these into module_dialogs.py.
these into module_scripts.py
and these into the following place of module_game_menus.py:
Before:
After:
Sell it back:
After:
Sell it back:
The source code is ready.
NOTE: it's only for the WB 1.142 or higher version.
Paste this into module_presentations.py.
## CC gambling begin
("gambling", 0, 0, [
(ti_on_presentation_load,
[
(presentation_set_duration, 999999),
(set_fixed_point_multiplier, 1000),
(create_mesh_overlay, reg1, "mesh_load_window"),
(position_set_x, pos1, 0),
(position_set_y, pos1, 0),
(overlay_set_position, reg1, pos1),
(assign, "$g_current_opened_item_details", -1),
## back
(create_game_button_overlay, "$g_presentation_obj_1", "@Done"),
(position_set_x, pos1, 500),
(position_set_y, pos1, 25),
(overlay_set_position, "$g_presentation_obj_1", pos1),
(create_text_overlay, reg1, "@This is the gambling screen. Hold down control key while clicking on an item to purchase or sell it.", tf_double_space|tf_scrollable),
(position_set_x, pos1, 425),
(position_set_y, pos1, 290),
(overlay_set_position, reg1, pos1),
(position_set_x, pos1, 900),
(position_set_y, pos1, 900),
(overlay_set_size, reg1, pos1),
(position_set_x, pos1, 150),
(position_set_y, pos1, 200),
(overlay_set_area_size, reg1, pos1),
# character picture
(create_mesh_overlay_with_tableau_material, reg0, -1, "tableau_troop_note_mesh", "trp_salt_mine_merchant"),
(position_set_x, pos1, 500),
(position_set_y, pos1, 500),
(overlay_set_size, reg0, pos1),
(position_set_x, pos1, 380),
(position_set_y, pos1, 520),
(overlay_set_position, reg0, pos1),
(create_mesh_overlay_with_tableau_material, reg0, -1, "tableau_troop_note_mesh", "trp_player"),
(position_set_x, pos1, 500),
(position_set_y, pos1, 500),
(overlay_set_size, reg0, pos1),
(position_set_x, pos1, 450),
(position_set_y, pos1, 155),
(overlay_set_position, reg0, pos1),
# money text
(store_troop_gold, ":troop_gold", "trp_salt_mine_merchant"),
(call_script, "script_game_get_money_text", ":troop_gold"),
(create_text_overlay, reg1, "@Money: {s1}", tf_center_justify),
(position_set_x, pos1, 210),
(position_set_y, pos1, 90),
(overlay_set_position, reg1, pos1),
(store_troop_gold, ":troop_gold", "trp_player"),
(call_script, "script_game_get_money_text", ":troop_gold"),
(create_text_overlay, reg1, "@Money: {s1}", tf_center_justify),
(position_set_x, pos1, 760),
(position_set_y, pos1, 90),
(overlay_set_position, reg1, pos1),
## mystic_merchant's inventory
(str_clear, s0),
(create_text_overlay, reg1, s0, tf_scrollable),
(position_set_x, pos1, 50),
(position_set_y, pos1, 130),
(overlay_set_position, reg1, pos1),
(position_set_x, pos1, 350),
(position_set_y, pos1, 560),
(overlay_set_area_size, reg1, pos1),
(set_container_overlay, reg1),
(assign, ":pos_x", 0),
(assign, ":pos_y", 1840),
(assign, ":slot_no", 10),
(try_for_range, ":unused_height", 0, 24),
(try_for_range, ":unused_width", 0, 4),
(try_begin),
(troop_slot_eq, "trp_salt_mine_merchant", ":slot_no", 1), # 0 = not_hidden , 1 = hidden
(create_image_button_overlay, reg1, "mesh_white_plane", "mesh_white_plane"),
(position_set_x, pos1, 4000),
(position_set_y, pos1, 4000),
(overlay_set_size, reg1, pos1),
(overlay_set_color, reg1, 0xFF0000), # red background
(else_try),
(create_image_button_overlay, reg1, "mesh_mp_inventory_slot_empty", "mesh_mp_inventory_slot_empty"),
(position_set_x, pos1, 640),
(position_set_y, pos1, 640),
(overlay_set_size, reg1, pos1),
(try_end),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(overlay_set_position, reg1, pos1),
(troop_set_slot, "trp_temp_array_a", ":slot_no", reg1),
(create_mesh_overlay, reg1, "mesh_mp_inventory_choose"),
(position_set_x, pos1, 640),
(position_set_y, pos1, 640),
(overlay_set_size, reg1, pos1),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(overlay_set_position, reg1, pos1),
(troop_get_inventory_slot, ":item_no", "trp_salt_mine_merchant", ":slot_no"),
(try_begin),
(gt, ":item_no", -1),
(create_mesh_overlay_with_item_id, reg1, ":item_no"),
(position_set_x, pos1, 800),
(position_set_y, pos1, 800),
(overlay_set_size, reg1, pos1),
(store_add, ":item_x", ":pos_x", 40),
(store_add, ":item_y", ":pos_y", 40),
(position_set_x, pos1, ":item_x"),
(position_set_y, pos1, ":item_y"),
(overlay_set_position, reg1, pos1),
(troop_set_slot, "trp_temp_array_b", ":slot_no", reg1),
(try_end),
(val_add, ":pos_x", 80),
(val_add, ":slot_no", 1),
(try_end),
(assign, ":pos_x", 0),
(val_sub, ":pos_y", 80),
(try_end),
(set_container_overlay, -1),
## player's inventory
(str_clear, s0),
(create_text_overlay, reg1, s0, tf_scrollable),
(position_set_x, pos1, 600),
(position_set_y, pos1, 130),
(overlay_set_position, reg1, pos1),
(position_set_x, pos1, 350),
(position_set_y, pos1, 560),
(overlay_set_area_size, reg1, pos1),
(set_container_overlay, reg1),
(troop_get_inventory_capacity, ":capacity", "trp_player"),
(store_add, ":max_slot_no", ":capacity", 100),
(assign, ":pos_x", 0),
(store_sub, ":no_inventory_space", ":capacity", 10),
(store_div, ":rows", ":no_inventory_space", 4),
(store_mod, ":rows_mod", ":no_inventory_space", 4),
(val_min, ":rows_mod", 1),
(val_add, ":rows", ":rows_mod"),
(store_mul, ":pos_y", ":rows", 80),
(val_sub, ":pos_y", 80),
(assign, ":slot_no", 110),
(try_for_range, ":unused_height", 0, ":rows"),
(try_for_range, ":unused_width", 0, 4),
(lt, ":slot_no", ":max_slot_no"),
(create_image_button_overlay, reg1, "mesh_mp_inventory_slot_empty", "mesh_mp_inventory_slot_empty"),
(position_set_x, pos1, 640),
(position_set_y, pos1, 640),
(overlay_set_size, reg1, pos1),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(overlay_set_position, reg1, pos1),
(troop_set_slot, "trp_temp_array_a", ":slot_no", reg1),
(create_mesh_overlay, reg1, "mesh_mp_inventory_choose"),
(position_set_x, pos1, 640),
(position_set_y, pos1, 640),
(overlay_set_size, reg1, pos1),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(overlay_set_position, reg1, pos1),
(store_sub, ":player_slot_no", ":slot_no", 100),
(troop_get_inventory_slot, ":item_no", "trp_player", ":player_slot_no"),
(try_begin),
(gt, ":item_no", -1),
(create_mesh_overlay_with_item_id, reg1, ":item_no"),
(position_set_x, pos1, 800),
(position_set_y, pos1, 800),
(overlay_set_size, reg1, pos1),
(store_add, ":item_x", ":pos_x", 40),
(store_add, ":item_y", ":pos_y", 40),
(position_set_x, pos1, ":item_x"),
(position_set_y, pos1, ":item_y"),
(overlay_set_position, reg1, pos1),
(troop_set_slot, "trp_temp_array_b", ":slot_no", reg1),
(try_end),
(val_add, ":pos_x", 80),
(val_add, ":slot_no", 1),
(try_end),
(assign, ":pos_x", 0),
(val_sub, ":pos_y", 80),
(try_end),
(set_container_overlay, -1),
## items
]),
(ti_on_presentation_mouse_enter_leave,
[
(store_trigger_param_1, "bject"),
(store_trigger_param_2, ":enter_leave"),
(troop_get_inventory_capacity, ":capacity", "trp_player"),
(store_add, ":max_slot_no", ":capacity", 100),
(try_begin),
(eq, ":enter_leave", 0),
(try_begin),
(eq, "$g_current_opened_item_details", -1),
(close_item_details),
(try_end),
(try_for_range, ":slot_no", 10, ":max_slot_no"),
(troop_slot_eq, "trp_temp_array_a", ":slot_no", "bject"),
(try_begin),
(lt, ":slot_no", 110),
(troop_get_inventory_slot, ":item_no", "trp_salt_mine_merchant", ":slot_no"),
(troop_get_inventory_slot_modifier, ":imod", "trp_salt_mine_merchant", ":slot_no"),
(try_begin),
(gt, ":item_no", -1),
(troop_get_slot, ":target_obj", "trp_temp_array_b", ":slot_no"),
(overlay_get_position, pos0, ":target_obj"),
(call_script, "script_game_get_item_buy_price_factor", ":item_no"),
(assign, ":buy_price_factor", reg0),
(try_begin),
(troop_slot_eq, "trp_salt_mine_merchant", ":slot_no", 1), # 0 = not_hidden , 1 = hidden
(show_item_details, ":item_no", pos0, ":buy_price_factor"),
(else_try),
(show_item_details_with_modifier, ":item_no", ":imod", pos0, ":buy_price_factor"),
(try_end),
(assign, "$g_current_opened_item_details", ":slot_no"),
(try_end),
(else_try),
(store_sub, ":player_slot_no", ":slot_no", 100),
(troop_get_inventory_slot, ":item_no", "trp_player", ":player_slot_no"),
(try_begin),
(gt, ":item_no", -1),
(troop_get_slot, ":target_obj", "trp_temp_array_b", ":slot_no"),
(overlay_get_position, pos0, ":target_obj"),
(troop_get_inventory_slot_modifier, ":imod", "trp_player", ":player_slot_no"),
(call_script, "script_game_get_item_sell_price_factor", ":item_no"),
(assign, ":sell_price_factor", reg0),
(try_begin),
(gt, ":imod", 0),
(show_item_details_with_modifier, ":item_no", ":imod", pos0, ":sell_price_factor"),
(else_try),
(show_item_details, ":item_no", pos0, ":sell_price_factor"),
(try_end),
(assign, "$g_current_opened_item_details", ":slot_no"),
(try_end),
(try_end),
(try_end),
(else_try),
(try_for_range, ":slot_no", 10, ":max_slot_no"),
(troop_slot_eq, "trp_temp_array_a", ":slot_no", "bject"),
(try_begin),
(this_or_next|eq, "$g_current_opened_item_details", ":slot_no"),
(eq, "$g_current_opened_item_details", -1),
(close_item_details),
(try_end),
(try_end),
(try_end),
]),
(ti_on_presentation_event_state_change,
[
(store_trigger_param_1, "bject"),
(try_begin),
(eq, "bject", "$g_presentation_obj_1"),
(presentation_set_duration, 0),
(mission_enable_talk),
(try_end),
(troop_get_inventory_capacity, ":capacity", "trp_player"),
(store_add, ":max_slot_no", ":capacity", 100),
(try_for_range, ":slot_no", 10, ":max_slot_no"),
(troop_slot_eq, "trp_temp_array_a", ":slot_no", "bject"),
(try_begin),
(this_or_next|key_is_down, key_left_control),
(key_is_down, key_right_control),
(try_begin),
(lt, ":slot_no", 110),
(troop_get_inventory_slot, ":item_no", "trp_salt_mine_merchant", ":slot_no"),
(troop_get_inventory_slot_modifier, ":imod", "trp_salt_mine_merchant", ":slot_no"),
(try_begin),
(gt, ":item_no", -1),
(call_script, "script_game_get_item_buy_price_factor", ":item_no"),
(assign, ":buy_price_factor", reg0),
(try_begin),
(troop_slot_eq, "trp_salt_mine_merchant", ":slot_no", 1), # 0 = not_hidden , 1 = hidden
(call_script, "script_get_item_value_with_imod", ":item_no", 0),
(assign, ":cost", reg0),
(else_try),
(call_script, "script_get_item_value_with_imod", ":item_no", ":imod"),
(assign, ":cost", reg0),
(try_end),
(val_div, ":cost", 100),
(val_mul, ":cost", ":buy_price_factor"),
(val_div, ":cost", 100),
(val_max, ":cost",1),
(store_troop_gold, ":troop_gold", "trp_player"),
(try_begin),
(lt, ":troop_gold", ":cost"),
(display_message, "@You don't have enough money."),
(else_try),
(store_free_inventory_capacity, ":inv_cap", "trp_player"),
(le, ":inv_cap", 0),
(else_try),
(troop_remove_gold, "trp_player", ":cost"),
(troop_add_gold, "trp_salt_mine_merchant", ":cost"),
(troop_set_inventory_slot, "trp_salt_mine_merchant", ":slot_no", -1),
(set_show_messages, 0),
(troop_add_item, "trp_player", ":item_no", ":imod"),
(set_show_messages, 1),
(troop_set_slot, "trp_salt_mine_merchant", ":slot_no", 0), # 0 = not_hidden , 1 = hidden
(start_presentation, "prsnt_gambling"),
(try_end),
(try_end),
(else_try),
(store_sub, ":player_slot_no", ":slot_no", 100),
(troop_get_inventory_slot, ":item_no", "trp_player", ":player_slot_no"),
(troop_get_inventory_slot_modifier, ":imod", "trp_player", ":player_slot_no"),
(try_begin),
(gt, ":item_no", -1),
(call_script, "script_game_get_item_sell_price_factor", ":item_no"),
(assign, ":sell_price_factor", reg0),
(call_script, "script_get_item_value_with_imod", ":item_no", ":imod"),
(assign, ":cost", reg0),
(val_div, ":cost", 100),
(val_mul, ":cost", ":sell_price_factor"),
(val_div, ":cost", 100),
(val_max, ":cost",1),
(store_troop_gold, ":troop_gold", "trp_salt_mine_merchant"),
(try_begin),
(item_get_type, ":item_type", ":item_no"),
(eq, ":item_type", itp_type_goods),
(else_try),
(store_free_inventory_capacity, ":inv_cap", "trp_salt_mine_merchant"),
(le, ":inv_cap", 0),
(else_try),
(lt, ":troop_gold", ":cost"),
(display_message, "@He don't have enough money."),
(else_try),
(troop_remove_gold, "trp_salt_mine_merchant", ":cost"),
(troop_add_gold, "trp_player", ":cost"),
(troop_set_inventory_slot, "trp_player", ":player_slot_no", -1),
(troop_add_item, "trp_salt_mine_merchant", ":item_no", ":imod"),
(start_presentation, "prsnt_gambling"),
(try_end),
(try_end),
(try_end),
(try_end),
(try_end),
]),
]),
## CC gambling end
("gambling", 0, 0, [
(ti_on_presentation_load,
[
(presentation_set_duration, 999999),
(set_fixed_point_multiplier, 1000),
(create_mesh_overlay, reg1, "mesh_load_window"),
(position_set_x, pos1, 0),
(position_set_y, pos1, 0),
(overlay_set_position, reg1, pos1),
(assign, "$g_current_opened_item_details", -1),
## back
(create_game_button_overlay, "$g_presentation_obj_1", "@Done"),
(position_set_x, pos1, 500),
(position_set_y, pos1, 25),
(overlay_set_position, "$g_presentation_obj_1", pos1),
(create_text_overlay, reg1, "@This is the gambling screen. Hold down control key while clicking on an item to purchase or sell it.", tf_double_space|tf_scrollable),
(position_set_x, pos1, 425),
(position_set_y, pos1, 290),
(overlay_set_position, reg1, pos1),
(position_set_x, pos1, 900),
(position_set_y, pos1, 900),
(overlay_set_size, reg1, pos1),
(position_set_x, pos1, 150),
(position_set_y, pos1, 200),
(overlay_set_area_size, reg1, pos1),
# character picture
(create_mesh_overlay_with_tableau_material, reg0, -1, "tableau_troop_note_mesh", "trp_salt_mine_merchant"),
(position_set_x, pos1, 500),
(position_set_y, pos1, 500),
(overlay_set_size, reg0, pos1),
(position_set_x, pos1, 380),
(position_set_y, pos1, 520),
(overlay_set_position, reg0, pos1),
(create_mesh_overlay_with_tableau_material, reg0, -1, "tableau_troop_note_mesh", "trp_player"),
(position_set_x, pos1, 500),
(position_set_y, pos1, 500),
(overlay_set_size, reg0, pos1),
(position_set_x, pos1, 450),
(position_set_y, pos1, 155),
(overlay_set_position, reg0, pos1),
# money text
(store_troop_gold, ":troop_gold", "trp_salt_mine_merchant"),
(call_script, "script_game_get_money_text", ":troop_gold"),
(create_text_overlay, reg1, "@Money: {s1}", tf_center_justify),
(position_set_x, pos1, 210),
(position_set_y, pos1, 90),
(overlay_set_position, reg1, pos1),
(store_troop_gold, ":troop_gold", "trp_player"),
(call_script, "script_game_get_money_text", ":troop_gold"),
(create_text_overlay, reg1, "@Money: {s1}", tf_center_justify),
(position_set_x, pos1, 760),
(position_set_y, pos1, 90),
(overlay_set_position, reg1, pos1),
## mystic_merchant's inventory
(str_clear, s0),
(create_text_overlay, reg1, s0, tf_scrollable),
(position_set_x, pos1, 50),
(position_set_y, pos1, 130),
(overlay_set_position, reg1, pos1),
(position_set_x, pos1, 350),
(position_set_y, pos1, 560),
(overlay_set_area_size, reg1, pos1),
(set_container_overlay, reg1),
(assign, ":pos_x", 0),
(assign, ":pos_y", 1840),
(assign, ":slot_no", 10),
(try_for_range, ":unused_height", 0, 24),
(try_for_range, ":unused_width", 0, 4),
(try_begin),
(troop_slot_eq, "trp_salt_mine_merchant", ":slot_no", 1), # 0 = not_hidden , 1 = hidden
(create_image_button_overlay, reg1, "mesh_white_plane", "mesh_white_plane"),
(position_set_x, pos1, 4000),
(position_set_y, pos1, 4000),
(overlay_set_size, reg1, pos1),
(overlay_set_color, reg1, 0xFF0000), # red background
(else_try),
(create_image_button_overlay, reg1, "mesh_mp_inventory_slot_empty", "mesh_mp_inventory_slot_empty"),
(position_set_x, pos1, 640),
(position_set_y, pos1, 640),
(overlay_set_size, reg1, pos1),
(try_end),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(overlay_set_position, reg1, pos1),
(troop_set_slot, "trp_temp_array_a", ":slot_no", reg1),
(create_mesh_overlay, reg1, "mesh_mp_inventory_choose"),
(position_set_x, pos1, 640),
(position_set_y, pos1, 640),
(overlay_set_size, reg1, pos1),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(overlay_set_position, reg1, pos1),
(troop_get_inventory_slot, ":item_no", "trp_salt_mine_merchant", ":slot_no"),
(try_begin),
(gt, ":item_no", -1),
(create_mesh_overlay_with_item_id, reg1, ":item_no"),
(position_set_x, pos1, 800),
(position_set_y, pos1, 800),
(overlay_set_size, reg1, pos1),
(store_add, ":item_x", ":pos_x", 40),
(store_add, ":item_y", ":pos_y", 40),
(position_set_x, pos1, ":item_x"),
(position_set_y, pos1, ":item_y"),
(overlay_set_position, reg1, pos1),
(troop_set_slot, "trp_temp_array_b", ":slot_no", reg1),
(try_end),
(val_add, ":pos_x", 80),
(val_add, ":slot_no", 1),
(try_end),
(assign, ":pos_x", 0),
(val_sub, ":pos_y", 80),
(try_end),
(set_container_overlay, -1),
## player's inventory
(str_clear, s0),
(create_text_overlay, reg1, s0, tf_scrollable),
(position_set_x, pos1, 600),
(position_set_y, pos1, 130),
(overlay_set_position, reg1, pos1),
(position_set_x, pos1, 350),
(position_set_y, pos1, 560),
(overlay_set_area_size, reg1, pos1),
(set_container_overlay, reg1),
(troop_get_inventory_capacity, ":capacity", "trp_player"),
(store_add, ":max_slot_no", ":capacity", 100),
(assign, ":pos_x", 0),
(store_sub, ":no_inventory_space", ":capacity", 10),
(store_div, ":rows", ":no_inventory_space", 4),
(store_mod, ":rows_mod", ":no_inventory_space", 4),
(val_min, ":rows_mod", 1),
(val_add, ":rows", ":rows_mod"),
(store_mul, ":pos_y", ":rows", 80),
(val_sub, ":pos_y", 80),
(assign, ":slot_no", 110),
(try_for_range, ":unused_height", 0, ":rows"),
(try_for_range, ":unused_width", 0, 4),
(lt, ":slot_no", ":max_slot_no"),
(create_image_button_overlay, reg1, "mesh_mp_inventory_slot_empty", "mesh_mp_inventory_slot_empty"),
(position_set_x, pos1, 640),
(position_set_y, pos1, 640),
(overlay_set_size, reg1, pos1),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(overlay_set_position, reg1, pos1),
(troop_set_slot, "trp_temp_array_a", ":slot_no", reg1),
(create_mesh_overlay, reg1, "mesh_mp_inventory_choose"),
(position_set_x, pos1, 640),
(position_set_y, pos1, 640),
(overlay_set_size, reg1, pos1),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(overlay_set_position, reg1, pos1),
(store_sub, ":player_slot_no", ":slot_no", 100),
(troop_get_inventory_slot, ":item_no", "trp_player", ":player_slot_no"),
(try_begin),
(gt, ":item_no", -1),
(create_mesh_overlay_with_item_id, reg1, ":item_no"),
(position_set_x, pos1, 800),
(position_set_y, pos1, 800),
(overlay_set_size, reg1, pos1),
(store_add, ":item_x", ":pos_x", 40),
(store_add, ":item_y", ":pos_y", 40),
(position_set_x, pos1, ":item_x"),
(position_set_y, pos1, ":item_y"),
(overlay_set_position, reg1, pos1),
(troop_set_slot, "trp_temp_array_b", ":slot_no", reg1),
(try_end),
(val_add, ":pos_x", 80),
(val_add, ":slot_no", 1),
(try_end),
(assign, ":pos_x", 0),
(val_sub, ":pos_y", 80),
(try_end),
(set_container_overlay, -1),
## items
]),
(ti_on_presentation_mouse_enter_leave,
[
(store_trigger_param_1, "bject"),
(store_trigger_param_2, ":enter_leave"),
(troop_get_inventory_capacity, ":capacity", "trp_player"),
(store_add, ":max_slot_no", ":capacity", 100),
(try_begin),
(eq, ":enter_leave", 0),
(try_begin),
(eq, "$g_current_opened_item_details", -1),
(close_item_details),
(try_end),
(try_for_range, ":slot_no", 10, ":max_slot_no"),
(troop_slot_eq, "trp_temp_array_a", ":slot_no", "bject"),
(try_begin),
(lt, ":slot_no", 110),
(troop_get_inventory_slot, ":item_no", "trp_salt_mine_merchant", ":slot_no"),
(troop_get_inventory_slot_modifier, ":imod", "trp_salt_mine_merchant", ":slot_no"),
(try_begin),
(gt, ":item_no", -1),
(troop_get_slot, ":target_obj", "trp_temp_array_b", ":slot_no"),
(overlay_get_position, pos0, ":target_obj"),
(call_script, "script_game_get_item_buy_price_factor", ":item_no"),
(assign, ":buy_price_factor", reg0),
(try_begin),
(troop_slot_eq, "trp_salt_mine_merchant", ":slot_no", 1), # 0 = not_hidden , 1 = hidden
(show_item_details, ":item_no", pos0, ":buy_price_factor"),
(else_try),
(show_item_details_with_modifier, ":item_no", ":imod", pos0, ":buy_price_factor"),
(try_end),
(assign, "$g_current_opened_item_details", ":slot_no"),
(try_end),
(else_try),
(store_sub, ":player_slot_no", ":slot_no", 100),
(troop_get_inventory_slot, ":item_no", "trp_player", ":player_slot_no"),
(try_begin),
(gt, ":item_no", -1),
(troop_get_slot, ":target_obj", "trp_temp_array_b", ":slot_no"),
(overlay_get_position, pos0, ":target_obj"),
(troop_get_inventory_slot_modifier, ":imod", "trp_player", ":player_slot_no"),
(call_script, "script_game_get_item_sell_price_factor", ":item_no"),
(assign, ":sell_price_factor", reg0),
(try_begin),
(gt, ":imod", 0),
(show_item_details_with_modifier, ":item_no", ":imod", pos0, ":sell_price_factor"),
(else_try),
(show_item_details, ":item_no", pos0, ":sell_price_factor"),
(try_end),
(assign, "$g_current_opened_item_details", ":slot_no"),
(try_end),
(try_end),
(try_end),
(else_try),
(try_for_range, ":slot_no", 10, ":max_slot_no"),
(troop_slot_eq, "trp_temp_array_a", ":slot_no", "bject"),
(try_begin),
(this_or_next|eq, "$g_current_opened_item_details", ":slot_no"),
(eq, "$g_current_opened_item_details", -1),
(close_item_details),
(try_end),
(try_end),
(try_end),
]),
(ti_on_presentation_event_state_change,
[
(store_trigger_param_1, "bject"),
(try_begin),
(eq, "bject", "$g_presentation_obj_1"),
(presentation_set_duration, 0),
(mission_enable_talk),
(try_end),
(troop_get_inventory_capacity, ":capacity", "trp_player"),
(store_add, ":max_slot_no", ":capacity", 100),
(try_for_range, ":slot_no", 10, ":max_slot_no"),
(troop_slot_eq, "trp_temp_array_a", ":slot_no", "bject"),
(try_begin),
(this_or_next|key_is_down, key_left_control),
(key_is_down, key_right_control),
(try_begin),
(lt, ":slot_no", 110),
(troop_get_inventory_slot, ":item_no", "trp_salt_mine_merchant", ":slot_no"),
(troop_get_inventory_slot_modifier, ":imod", "trp_salt_mine_merchant", ":slot_no"),
(try_begin),
(gt, ":item_no", -1),
(call_script, "script_game_get_item_buy_price_factor", ":item_no"),
(assign, ":buy_price_factor", reg0),
(try_begin),
(troop_slot_eq, "trp_salt_mine_merchant", ":slot_no", 1), # 0 = not_hidden , 1 = hidden
(call_script, "script_get_item_value_with_imod", ":item_no", 0),
(assign, ":cost", reg0),
(else_try),
(call_script, "script_get_item_value_with_imod", ":item_no", ":imod"),
(assign, ":cost", reg0),
(try_end),
(val_div, ":cost", 100),
(val_mul, ":cost", ":buy_price_factor"),
(val_div, ":cost", 100),
(val_max, ":cost",1),
(store_troop_gold, ":troop_gold", "trp_player"),
(try_begin),
(lt, ":troop_gold", ":cost"),
(display_message, "@You don't have enough money."),
(else_try),
(store_free_inventory_capacity, ":inv_cap", "trp_player"),
(le, ":inv_cap", 0),
(else_try),
(troop_remove_gold, "trp_player", ":cost"),
(troop_add_gold, "trp_salt_mine_merchant", ":cost"),
(troop_set_inventory_slot, "trp_salt_mine_merchant", ":slot_no", -1),
(set_show_messages, 0),
(troop_add_item, "trp_player", ":item_no", ":imod"),
(set_show_messages, 1),
(troop_set_slot, "trp_salt_mine_merchant", ":slot_no", 0), # 0 = not_hidden , 1 = hidden
(start_presentation, "prsnt_gambling"),
(try_end),
(try_end),
(else_try),
(store_sub, ":player_slot_no", ":slot_no", 100),
(troop_get_inventory_slot, ":item_no", "trp_player", ":player_slot_no"),
(troop_get_inventory_slot_modifier, ":imod", "trp_player", ":player_slot_no"),
(try_begin),
(gt, ":item_no", -1),
(call_script, "script_game_get_item_sell_price_factor", ":item_no"),
(assign, ":sell_price_factor", reg0),
(call_script, "script_get_item_value_with_imod", ":item_no", ":imod"),
(assign, ":cost", reg0),
(val_div, ":cost", 100),
(val_mul, ":cost", ":sell_price_factor"),
(val_div, ":cost", 100),
(val_max, ":cost",1),
(store_troop_gold, ":troop_gold", "trp_salt_mine_merchant"),
(try_begin),
(item_get_type, ":item_type", ":item_no"),
(eq, ":item_type", itp_type_goods),
(else_try),
(store_free_inventory_capacity, ":inv_cap", "trp_salt_mine_merchant"),
(le, ":inv_cap", 0),
(else_try),
(lt, ":troop_gold", ":cost"),
(display_message, "@He don't have enough money."),
(else_try),
(troop_remove_gold, "trp_salt_mine_merchant", ":cost"),
(troop_add_gold, "trp_player", ":cost"),
(troop_set_inventory_slot, "trp_player", ":player_slot_no", -1),
(troop_add_item, "trp_salt_mine_merchant", ":item_no", ":imod"),
(start_presentation, "prsnt_gambling"),
(try_end),
(try_end),
(try_end),
(try_end),
(try_end),
]),
]),
## CC gambling end
## CC gambling begin
[trp_salt_mine_merchant, "start", [],
"Good day {sir/madam}, I have some unidentify items with me. I will sell these items to you by the base price of them. You probably buy an item with a good prefix by a low price or buy an item with a bad prefix by a hight price. Do you want to try your fortune?", "mystic_merchant_talk", []],
[anyone|plyr, "mystic_merchant_talk", [], "That sounds good. I want to have a try.", "close_window",
[
(mission_disable_talk),
(start_presentation, "prsnt_gambling"),
]
],
## CC gambling end
## CC gambling begin
("refresh_mystic_merchant_items",
[
(store_script_param_1, ":troop_no"),
(troop_get_inventory_capacity, ":inv_cap", ":troop_no"),
(try_for_range, ":i_slot", 10, ":inv_cap"),
(troop_set_inventory_slot, ":troop_no", ":i_slot", -1),
(troop_set_slot, ":troop_no", ":i_slot", 0), # 0 = not_hidden , 1 = hidden
(try_end),
(reset_item_probabilities, 100),
(set_merchandise_modifier_quality, 120),
(troop_add_merchandise, ":troop_no", itp_type_horse,15),
(troop_add_merchandise, ":troop_no", itp_type_body_armor,16),
(troop_add_merchandise, ":troop_no", itp_type_head_armor,,
(troop_add_merchandise, ":troop_no", itp_type_foot_armor,,
(troop_add_merchandise, ":troop_no", itp_type_hand_armor,4),
(troop_add_merchandise, ":troop_no", itp_type_one_handed_wpn,5),
(troop_add_merchandise, ":troop_no", itp_type_two_handed_wpn,5),
(troop_add_merchandise, ":troop_no", itp_type_polearm,5),
(troop_add_merchandise, ":troop_no", itp_type_shield,6),
(troop_add_merchandise, ":troop_no", itp_type_bow,4),
(troop_add_merchandise, ":troop_no", itp_type_crossbow,3),
(troop_add_merchandise, ":troop_no", itp_type_thrown,5),
(try_for_range, ":i_slot", 10, ":inv_cap"),
(troop_get_inventory_slot, ":item", ":troop_no", ":i_slot"),
(gt, ":item", -1),
(troop_set_slot, ":troop_no", ":i_slot", 1), # 0 = not_hidden , 1 = hidden
(try_end),
]),
("get_item_value_with_imod",
[# returns the sell price based on the item's money value and its imod
(store_script_param, ":item", 1),
(store_script_param, ":imod", 2),
(store_item_value, ":score", ":item"),
(try_begin),
(eq, ":imod", imod_plain),
(assign, ":imod_multiplier", 100),
(else_try),
(eq, ":imod", imod_cracked),
(assign, ":imod_multiplier", 50),
(else_try),
(eq, ":imod", imod_rusty),
(assign, ":imod_multiplier", 55),
(else_try),
(eq, ":imod", imod_bent),
(assign, ":imod_multiplier", 65),
(else_try),
(eq, ":imod", imod_chipped),
(assign, ":imod_multiplier", 72),
(else_try),
(eq, ":imod", imod_battered),
(assign, ":imod_multiplier", 75),
(else_try),
(eq, ":imod", imod_poor),
(assign, ":imod_multiplier", 80),
(else_try),
(eq, ":imod", imod_crude),
(assign, ":imod_multiplier", 83),
(else_try),
(eq, ":imod", imod_old),
(assign, ":imod_multiplier", 86),
(else_try),
(eq, ":imod", imod_cheap),
(assign, ":imod_multiplier", 90),
(else_try),
(eq, ":imod", imod_fine),
(assign, ":imod_multiplier", 190),
(else_try),
(eq, ":imod", imod_well_made),
(assign, ":imod_multiplier", 250),
(else_try),
(eq, ":imod", imod_sharp),
(assign, ":imod_multiplier", 160),
(else_try),
(eq, ":imod", imod_balanced),
(assign, ":imod_multiplier", 350),
(else_try),
(eq, ":imod", imod_tempered),
(assign, ":imod_multiplier", 670),
(else_try),
(eq, ":imod", imod_deadly),
(assign, ":imod_multiplier", 850),
(else_try),
(eq, ":imod", imod_exquisite),
(assign, ":imod_multiplier", 1450),
(else_try),
(eq, ":imod", imod_masterwork),
(assign, ":imod_multiplier", 1750),
(else_try),
(eq, ":imod", imod_heavy),
(assign, ":imod_multiplier", 190),
(else_try),
(eq, ":imod", imod_strong),
(assign, ":imod_multiplier", 490),
(else_try),
(eq, ":imod", imod_powerful),
(assign, ":imod_multiplier", 320),
(else_try),
(eq, ":imod", imod_tattered),
(assign, ":imod_multiplier", 50),
(else_try),
(eq, ":imod", imod_ragged),
(assign, ":imod_multiplier", 70),
(else_try),
(eq, ":imod", imod_rough),
(assign, ":imod_multiplier", 60),
(else_try),
(eq, ":imod", imod_sturdy),
(assign, ":imod_multiplier", 170),
(else_try),
(eq, ":imod", imod_thick),
(assign, ":imod_multiplier", 260),
(else_try),
(eq, ":imod", imod_hardened),
(assign, ":imod_multiplier", 390),
(else_try),
(eq, ":imod", imod_reinforced),
(assign, ":imod_multiplier", 650),
(else_try),
(eq, ":imod", imod_superb),
(assign, ":imod_multiplier", 250),
(else_try),
(eq, ":imod", imod_lordly),
(assign, ":imod_multiplier", 1150),
(else_try),
(eq, ":imod", imod_lame),
(assign, ":imod_multiplier", 40),
(else_try),
(eq, ":imod", imod_swaybacked),
(assign, ":imod_multiplier", 60),
(else_try),
(eq, ":imod", imod_stubborn),
(assign, ":imod_multiplier", 90),
(else_try),
(eq, ":imod", imod_timid),
(assign, ":imod_multiplier", 180),
(else_try),
(eq, ":imod", imod_meek),
(assign, ":imod_multiplier", 180),
(else_try),
(eq, ":imod", imod_spirited),
(assign, ":imod_multiplier", 650),
(else_try),
(eq, ":imod", imod_champion),
(assign, ":imod_multiplier", 1450),
(else_try),
(eq, ":imod", imod_fresh),
(assign, ":imod_multiplier", 100),
(else_try),
(eq, ":imod", imod_day_old),
(assign, ":imod_multiplier", 100),
(else_try),
(eq, ":imod", imod_two_day_old),
(assign, ":imod_multiplier", 90),
(else_try),
(eq, ":imod", imod_smelling),
(assign, ":imod_multiplier", 40),
(else_try),
(eq, ":imod", imod_rotten),
(assign, ":imod_multiplier", 5),
(else_try),
(eq, ":imod", imod_large_bag),
(assign, ":imod_multiplier", 190),
(try_end),
(val_mul, ":score", ":imod_multiplier"),
(assign, reg0, ":score"),
]),
## CC gambling end
(try_begin),
(party_get_slot, ":tavern_minstrel", "$current_town", slot_center_tavern_minstrel),
(gt, ":tavern_minstrel", 0),
(set_visitor, ":cur_entry", ":tavern_minstrel"),
(val_add, ":cur_entry", 1),
#(else_try),
#(store_add, ":alternative_town", "$current_town", 9),
#(try_begin),
#(ge, ":alternative_town", towns_end),
#(val_sub, ":alternative_town", 22),
#(try_end),
#(party_get_slot, ":tavern_minstrel", ":alternative_town", slot_center_tavern_minstrel),
#(gt, ":tavern_minstrel", 0),
#(set_visitor, ":cur_entry", ":tavern_minstrel"),
#(val_add, ":cur_entry", 1),
(try_end),
## CC gambling begin
(try_begin),
(party_get_slot, ":prosperity", "$current_town", slot_town_prosperity),
(val_mod, ":prosperity", 24),
(store_time_of_day, ":cur_hour"),
(store_sub, ":difference", ":prosperity", ":cur_hour"),
(is_between, ":difference", -1, 2), # -1 0 1, 1/8 probability
(set_visitor, ":cur_entry", "trp_salt_mine_merchant"),
(troop_set_name, "trp_salt_mine_merchant", "@Mystic Merchant"),
(call_script, "script_refresh_mystic_merchant_items", "trp_salt_mine_merchant"),
(val_add, ":cur_entry", 1),
(try_end),
## CC gambling end
(try_begin),
(party_get_slot, ":tavern_bookseller", "$current_town", slot_center_tavern_bookseller),
(gt, ":tavern_bookseller", 0),
(set_visitor, ":cur_entry", ":tavern_bookseller"),
(val_add, ":cur_entry", 1),
(try_end),