OSP Code Gambling System (source code is released)

Users who are viewing this thread

rubik

Squire
I have implemented it in the Warband 1.142. As below:

Before:
54726830201107101355126410214513411_001.jpg


After:
54726830201107101355126410214513411_002.jpg


Sell it back:
54726830201107101355126410214513411_000.jpg

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, ":eek: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", ":eek: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", ":eek: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, ":eek:bject"),

        (try_begin),
          (eq, ":eek: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", ":eek: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
these into module_dialogs.py.
## 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
these into module_scripts.py
## 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,:cool:,
      (troop_add_merchandise, ":troop_no", itp_type_foot_armor,:cool:,
      (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
and these into the following place of module_game_menus.py:
            (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),
 
Back
Top Bottom