UI Shop
CSearchShop, CMerchantStore, CVendingWindow, CBuyingStore, CShopWnd, CStylingShop, CEquipWnd, ShopListCtrl
| Address | Size | Name | Description |
|---|---|---|---|
| 0x005D8C50 | 163 | CShopCategory__delete_tree_nodes_recursive | Recursively frees 0x110-byte nodes |
| 0x005D8D00 | 155 | CShopCategory__erase_tree_node | Erases single tree node |
| 0x005D8DA0 | 267 | CShopCategory__copy_construct | Copy constructs shop category |
| 0x005D8EB0 | 224 | CShopManager__init | Initializes CShopManager |
| 0x005D8F90 | 465 | CShopItem__copy_construct | Copy constructs shop item |
| 0x005D9170 | 65 | CShopItem__cleanup_string | Frees shop item string |
| 0x005D91C0 | 70 | CShopManager__free_tree_sentinel | Frees 0x110-byte sentinel |
| 0x005D9220 | 79 | CShopManager__destroy_tree_full | Destroys all tree nodes |
| 0x005D9280 | 143 | CShopManager__destroy_tree_node_with_strings | Destroys node with string cleanup |
| 0x005D9310 | 81 | CShopManager__free_tree_node_110 | Frees 0x110-byte tree node |
| 0x005D93A0 | 90 | CShopManager__destroy_tree_and_free | Destroys tree and sentinel |
| 0x005D9400 | 100 | CShopItem__destroy_strings | CShopItem: destroy strings |
| 0x005D9470 | 68 | CShopItem__destructor_wrapper | CShopItem: destructor wrapper |
| 0x005D9590 | 151 | CShopManager__destructor | Destroys CShopManager |
| 0x005D9690 | 172 | CShopManager__scalar_deleting_destructor | Scalar deleting destructor |
| 0x005D9740 | 97 | CShopManager__add_to_pending_cart | Adds to pending cart |
| 0x005D97B0 | 91 | CShopManager__add_to_completed_cart | Adds to completed cart |
| 0x005D9810 | 135 | CShopManager__add_to_summary_vector | CShopManager: add to summary vector |
| 0x005D98E0 | 530 | CShopManager__rebuild_item_tree | CShopManager: rebuild item tree |
| 0x005D9B00 | 325 | CShopManager__get_instance | CShopManager: get instance |
| 0x005D9C50 | 68 | CShopManager__remove_from_pending_cart | Removes from pending cart |
| 0x005D9CA0 | 244 | CShopManager__remove_from_completed_cart | Removes from completed cart |
| 0x005D9DA0 | 103 | CShopManager__remove_from_summary_vector | Removes summary entry |
| 0x005D9E10 | 27 | CShopManager__destroy_instance | CShopManager: destroy instance |
| 0x005DA1C0 | 470 | CShopManager__find_completed_by_name | Searches completed by name |
| 0x005DA3B0 | 41 | CShopManager__get_pending_qty_by_id | Gets pending qty by ID |
| 0x005DA3E0 | 251 | CShopManager__find_pending_entry_by_id | Finds pending entry by ID |
| 0x005DA4E0 | 251 | CShopManager__find_completed_entry_by_id | Finds completed entry by ID |
| 0x005DA5E0 | 45 | CShopManager__get_pending_discount_by_id | CShopManager: get pending discount by id |
| 0x005DA610 | 4 | CShopManager__get_completed_cart_ptr | Returns completed cart ptr |
| 0x005DA620 | 24 | CShopManager__get_completed_cart_count | Returns completed cart count |
| 0x005DA640 | 41 | CShopManager__get_completed_qty_by_id | Gets completed qty by ID |
| 0x005DA670 | 4 | CShopManager__get_summary_vector_ptr | Returns summary vector ptr |
| 0x005DA680 | 68 | CShopManager__calc_total_completed_cost | Sums total completed cost |
| 0x005DA6D0 | 346 | CShopManager__validate_and_consume_summary | Validates and consumes summary |
| 0x005DA830 | 164 | CShopManager__consume_single_summary_entry | Consumes single summary entry |
| 0x005DA8E0 | 327 | CShopManager__build_and_add_cart_entry | Builds and adds cart entry |
| 0x005DAA30 | 94 | CShopManager__clear_all_carts | CShopManager: clear all carts |
| 0x005DAA90 | 36 | CShopItem__destroy_range | CShopItem: destroy range |
| 0x005DEA30 | 108 | CShopItem__destroy_range_005dea30 | Destroys a range of 0xF8-byte CShopItem elements by iterating [param_1, param_2) and calling STL_string_dtor twice per element (two string fields to clean up). |
| 0x005E07C0 | 168 | CShopItem__vector_clear_and_free | Clears and frees a vector of 0xF8-byte CShopItem elements. Destroys all elements (calling string destructors), then frees the backing allocation and zeroes the vector pointers. |
| 0x005E09B0 | 110 | CSearchStoreListWnd__dtor | Non-scalar destructor for CSearchStoreListWnd. Sets vtable, calls clear_and_free_item_vector to release the item list, then destroys the UIWindowBase. |
| 0x005E0A20 | 1013 | CSearchStoreListWnd__compare_items_by_name | Comparator for sorting search store items by name. Gets item tooltip strings for items at indices param_2 and param_3, does a case-sensitive byte-by-byte string comparison. Returns 1 if first item name is lexicographically less than second. |
| 0x005E0E20 | 234 | CSearchStoreWnd__scalar_deleting_dtor | Scalar deleting destructor for CSearchStoreWnd. Sends close packet 0xC07E4 to server, destroys child strings and UI widgets, then destroys UIWindowBase. Frees memory (size 0x220) if param_2 & 1. |
| 0x005E0F90 | 134 | CSearchStoreItemPanel__scalar_deleting_dtor | Scalar deleting destructor for CSearchStoreItemPanel. Sets vtable, calls clear_and_free_item_vector, then destroys UIWindowBase. Frees memory (size 0xF8) if param_2 & 1. |
| 0x005E1020 | 93 | CSearchStoreScrollKnob__scalar_deleting_dtor | Scalar deleting destructor for the scrollbar knob widget used in search store list. Calls UIBaseWidgetA__dtor. Frees memory (size 0xB4) if param_2 & 1. |
| 0x005E1080 | 160 | CSearchStoreListWnd__scroll_to_item | Scrolls the search store item list to bring a specific item into view. Calculates the target index from current scroll offset + param_2, clamps to valid range. If target is outside visible window, adjusts scroll position and updates scrollbar. Then selects the item. |
| 0x005E1120 | 182 | CSearchStoreListWnd__hit_test_item | Hit-tests the search store item list at screen coordinates (param_2, param_3). First checks the close button area (offset 0xC4/0xC8, 24x24 box). Then iterates through visible item slots checking their bounding boxes. Returns pointer to the hit item or 0 if none. |
| 0x005E11E0 | 187 | CSearchStoreListWnd__get_item_tooltip_string | Builds a tooltip string for an item by ID. Calls CItemInfoMgr to clear state, CItemDesc__get_class_and_level to set item info, then CItemDB__build_item_tooltip_string to generate the display text. Returns the constructed string. |
| 0x005E12A0 | 95 | CSearchStoreListWnd__get_item_data_by_index | Gets item data by visible list index. Uses double indirection: index array at offset 0xDC maps visible index to item array index, then item array at offset 0xE8 (stride 0x1C) holds the actual data. Returns item pointer or 0 if out of bounds. |
| 0x005E1310 | 9 | CSearchStoreListWnd__thunk_set_position | Thunk to CEffect__set_position. Forwards call from CSearchStoreListWnd vtable. |
| 0x005E1320 | 2064 | CSearchStoreWnd__init_child_widgets | Initializes the search store window's child widgets. Creates: close button (CDialogWnd), search label (UITextWidget with msg 0xEC0), search text input (CDialogWnd with msg 0xEC1), reset button, search filter radio button (CSearchFilterDlg with msg 0xEBF/0xE8A), buy button, page counter label, and item list panel (UIWindowBase). Sets positions, sizes, and adds all as children. |
| 0x005E1B30 | 208 | CSearchStoreListWnd__init_scrollbar | Initializes the scrollbar for the search store item list. Creates a scrollbar knob widget (UISpriteWidget with custom vtable), calculates scroll range from window height and item row height, and adds the scrollbar as a child widget. |
| 0x005E1C00 | 543 | CSearchStoreWnd__draw | Main draw function for the search store window. Draws background sprite, item count header, iterates through visible items drawing their icons (equip vs consumable), price info (msg 0xE8C format), and optional status text. Uses different draw methods for equippable vs non-equippable items. |
| 0x005E1E20 | 250 | CSearchStoreButton__draw | Draw handler for search store buttons. Checks visibility and enabled state. Draws button texture based on state (normal vs hover, offset 0x30), loads texture from resource manager, renders sprite. Also draws button label text at offset (0xC, 1) if text string is set. |
| 0x005E1F20 | 1098 | CSearchStoreListWnd__draw_items | Draws the visible item rows in the search store list. For each visible row: gets item data via double-indirection, draws selection highlight (blue for selected, green for current, default otherwise), draws item icon, truncates name to 100px width, draws item name and price. Uses different colors for equippable (white) vs non-equippable (grey 0xAAAAAA) items. |
| 0x005E2370 | 516 | CSearchStoreScrollbar__draw | Draws the scrollbar for the search store list. Loads top/bottom/middle sprites, tiles the middle section to fill the track. Calculates thumb position from scroll offset as a proportion of total scrollable range. Draws the thumb sprite at the computed position. Resets dirty flag and calls parent draw. |
| 0x005E2590 | 56 | CSearchStoreListWnd__on_click_select_item | Handles left click on search store item list. Converts the y coordinate to an item index based on row height and scroll offset. Clamps to valid range, then selects the item at that index. |
| 0x005E25D0 | 215 | CSearchStoreListWnd__show_item_tooltip | Shows item tooltip on mouse hover in the search store list. Hit-tests coordinates to find the item, converts item ID string to int via atoi, builds tooltip string via get_item_tooltip_string, then shows it via CToolTipMgr at (x+5, y-5). |
| 0x005E26B0 | 389 | CSearchStoreListWnd__show_item_tooltip_with_price | Shows item tooltip with price info on mouse hover in the search store list. Converts y to item index, gets item data, builds tooltip string with item name and price (msg 0xB7 format), accumulates parent offsets for correct positioning, then shows via CToolTipMgr. |
| 0x005E2850 | 401 | CSearchStoreWnd__on_search_text_changed | Handles text input changes in the search store search field. Gets current text from the editable widget, compares to the placeholder text (msg 0xEC0). If different and non-empty, sets label color to black; if empty, restores placeholder text with grey color (0xB1, 0xB1, 0xB1). |
| 0x005E29F0 | 63 | CSearchStoreListWnd__on_right_click_item | Handles right click on a search store item. Hit-tests coordinates, if an item is found, creates an item info window (type 0xC) and passes the item data to it for detailed viewing. |
| 0x005E2A30 | 49 | CSearchStoreListWnd__notify_scroll_direction | Notifies parent of scroll direction. If param_2 < 0, sends event 10 (scroll down) to the scrollbar's parent; otherwise sends event 9 (scroll up). |
| 0x005E2A70 | 175 | CSearchStoreListWnd__update_scrollbar | Updates the scrollbar range and position for the search store item list. If total items > visible items, enables scrollbar, sets range/position via CUIScrollBar, clamps scroll offset. Otherwise hides the scrollbar. Invalidates the widget and parent for redraw. |
| 0x005E2B20 | 747 | CSearchStoreListWnd__filter_items_by_search_text | Filters the search store item list by search text. Converts search text to lowercase, iterates all items in the master list, builds tooltip string for each, converts to lowercase, performs case-insensitive substring search using memchr+compare loop. Matching item indices are added to the visible index array. Updates scrollbar and sort afterwards. |
| 0x005E2E10 | 663 | CSearchStoreWnd__set_selected_item_data | Sets the selected item data in the search store detail panel. Receives item data pointer, clears existing shop items, processes each card/option on the item via CItemDesc, copies item data including prices. Calculates total price from all price entries (min 1000). Formats price range string (msg 0xE8B). Updates buy button enabled state and triggers redraw. |
| 0x005E30B0 | 2275 | CSearchStoreWnd__process_search_results | Processes search store results from server. Clears the item list, creates a red-black tree iterator, traverses all result nodes. For each node, clones the item data arrays (8-byte pairs and 12-byte triples), processes combinations via stub_005dfda0, and appends valid results to the main item list. After processing all nodes, filters by search text, selects first item, and cleans up the tree. |
| 0x005E39A0 | 304 | CSearchStoreWnd__send_purchase_request | Sends the search store purchase request packet (0x7E4) to the server. Builds a variable-length packet with header, item count, and for each item in the store list: writes the item nameid (2 bytes) and card/refine data (2 bytes). Uses stack allocation for small packets, malloc for large ones. Disables the buy button after sending. |
| 0x005E3AD0 | 72 | CSearchStoreWnd__send_close_packet | Sends the search store close packet (0x7E4) with empty item list to the server. Constructs a 12-byte packet with header 0xC07E4 and zero items, then sends via CNetworkSession. |
| 0x005E3B20 | 86 | CSearchStoreListWnd__reset_list_state | Resets the search store item list state. Recalculates visible item count from window height / row height, clears selection indices, resets scroll position to 0, hides the scrollbar, and resets the filtered index array to match the unfiltered array. |
| 0x005E3B80 | 168 | CSearchStoreListWnd__select_item_at_index | Selects the item at the given index in the search store list. Sets current selection index, saves previous scroll position, invalidates for redraw. Looks up item data via double-indirection and notifies the parent widget (event 0x17) with the item data pointer. |
| 0x005E3C30 | 148 | CSearchStoreWnd__on_child_event | Handles child widget events for the search store window. Dispatches on event type: 0=focus change (triggers search), 6=button clicks (0xB8=buy, 0xC9=close, 0x141=search, 0x16C=filter toggle, 0x19F=reset), 0x12/0x13=page nav forwarded to parent, 0x17=item selection (populates detail panel with item data and prices). Falls through to UIWindow__handle_button_click. |
| 0x005E4170 | 137 | CSearchStoreListWnd__on_event | Main event handler for the search store item list widget. Handles: 3/0x12=scroll up, 4/0x13=scroll down, 6=search text submit (event 0x141), 7/9/10=scroll position changes (adjusts offset by delta), 0x17=process search results from server. Returns event propagation result. |
| 0x005E4330 | 398 | CSearchStoreListWnd__sort_and_rebuild_list | Sorts and rebuilds the filtered item list. Clones the full item array, calls the sort function (stub_005dfb40) with the index and item arrays. Clears and replaces the old item vector. If param_2 is false (descending), reverses the sorted order via simd_reverse_dwords_in_place. Triggers redraw. |
| 0x005E44C0 | 120 | CSearchStoreListWnd__scroll_up_by_offset | Scrolls the item list up by the given offset. Subtracts param_2 from current selection, clamps to 0. If the new position is outside the visible scroll window, adjusts the scroll offset and updates the scrollbar. Then selects the item at the new position. |
| 0x005E4540 | 22 | CSearchStoreItem__destruct_range_thunk | Thunk that forwards to the search store item range destructor. Passes parameters in swapped order (param_2, param_3, this). |
| 0x005E4560 | 22 | CSearchStoreItem__destruct_range_thunk_alt | Thunk that forwards to the search store item range destructor (alternate version). Passes parameters in swapped order (param_2, param_3, this). |
| 0x005E45B0 | 174 | CSearchStoreListWnd__clear_and_free_item_vector | Clears and frees the search store item vector. Destructs all items in the array via range destructor, then frees the underlying memory buffer (aligned deallocation for large buffers). Resets all three vector pointers (begin, end, capacity) to 0. |
| 0x005E4670 | 41 | CSearchStore__zero_init_8byte_array | CSearchStore: zero init 8byte array |
| 0x005E46A0 | 48 | CSearchStore__zero_init_12byte_array | CSearchStore: zero init 12byte array |
| 0x005E46D0 | 153 | CSearchStoreItem__copy_construct_range | Copy-constructs a range of search store shop items (stride 0xF8) from [param_2, param_3) into destination starting at param_4. Uses CShopItem__copy_construct for each element. After copying, destructs the remaining range. Returns the end pointer of the destination. |
| 0x005E4770 | 151 | CSearchStoreItem__copy_construct_range_void | Copy-constructs a range of search store shop items (stride 0xF8) from [param_2, param_3) into destination starting at param_4. Same logic as copy_construct_range but returns void. Used by vector reallocation. |
| 0x005E4810 | 10 | CSearchStore__throw_vector_too_long | Throws std::length_error with message "vector too long". Called when search store item vector exceeds maximum size. |
| 0x005E4820 | 10 | CSearchStore__throw_vector_too_long_alt | Throws std::length_error with message "vector too long". Duplicate of 005e4810, called from a different vector growth path in the search store subsystem. |
| 0x005E4830 | 102 | CSearchStore__allocate_item_array | Allocates aligned memory for a search store item array with 0x1C byte stride. Validates count < 0x924924A to prevent overflow. For small allocations (< 0x1000 bytes) uses operator new directly; for large ones allocates with 32-byte alignment and stores the raw pointer at offset -4. |
| 0x005E48A0 | 55 | CSearchStore__compare_string_to_cstr | Compares a std::string (this) to a C-string (param_2). Gets the internal buffer pointer (handles SSO), then delegates to std::_Traits_compare. Used to compare search input against placeholder text. |
| 0x005E48E0 | 67 | CSearchStore__free_item_array | Frees aligned memory for a search store item array (0x1C byte stride). For large buffers (>= 0x1000 bytes), reads the raw allocation pointer from offset -4 before calling operator delete. Validates alignment header. |
| 0x005E4930 | 59 | CSearchStore__free_shop_item_array | Frees aligned memory for a search store shop item array (0xF8 byte stride). Same aligned deallocation logic as free_item_array but for the larger shop item structures. |
| 0x005E4970 | 218 | CSearchStoreEntry__ctor | Constructs a CSearchStoreEntry. Copies the type flag from param_5, initializes two std::strings (name from param_4 via strlen+assign, options moved from param_3), and sets the enabled flag from param_2. Used to build search filter entries for the search store UI. |
| 0x005E4A50 | 744 | CSearchStoreMgr__ctor | Constructor for CSearchStoreMgr. Initializes the base class with an XOR-encrypted config string (decrypted from TLS storage using keys 0x53C367B3/0x17359BF9). Sets up vtable chain (purecall -> intermediate -> final at PTR_LAB_010e3124). Initializes 4 std::strings and two vector pairs for item/option storage. References path "C:\\repositories\\RagnarokClient\\R...". |
| 0x005FD270 | 899 | CSearchShopResultPanel__draw | Draws the search shop result panel. Renders item name, a 3-column grid showing owned vs required quantities (highlighting shortages in red), and a status text message at the bottom. |
| 0x005FD600 | 362 | CSearchShopItemPanel__draw_title | Draws the title text for an item panel. Gets message string 0xF0E, measures its width, draws it centered, then draws an underline bar beneath it. |
| 0x005FD7E0 | 181 | CSearchShopItemPanel__draw_item_sprite | Draws the item sprite for the selected item in the panel. Uses CItemDesc to get the sprite resource ID, loads the sprite resource, and draws it at position (0,0). |
| 0x005FD8A0 | 413 | CSearchShopResultList__draw_items | Draws the scrollable item list in the search shop result list. For each visible item, draws a selection/highlight background sprite, the item icon, and the truncated item name. Handles scroll offset and row height. |
| 0x005FDA60 | 153 | CSearchShopResultList__on_click_select_item | Handles left-click on the result list. Calculates which item was clicked based on Y position and scroll offset, clamps to valid range, updates the selected index, sends selection notification to parent, and refreshes. |
| 0x005FDB20 | 189 | CSearchShopItemPanel__show_tooltip | Shows a tooltip for the currently selected item. Accumulates parent offsets to get absolute screen position, builds the item tooltip string, and displays it via CToolTipMgr at the adjusted position. |
| 0x005FDBE0 | 107 | CSearchShopResultList__on_hover_highlight_item | Handles mouse hover on the result list. Calculates which item is under the cursor based on Y position and scroll offset, updates the highlighted item index, and refreshes the display. |
| 0x005FDC80 | 55 | CSearchShopWnd__focus_detail_window | Focuses the detail child window (at offset 0xD4). Calls CGameObject__focus_window_with_priority and positions it relative to global coordinates. |
| 0x005FDCC0 | 52 | CSearchShopItemPanel__open_item_info_window | Opens an item info window (type 0xC) for the currently selected item. Only acts if field_0x7C (item ID) is set. Creates the window and sends item data via virtual call 0x94. |
| 0x005FDD10 | 131 | CSearchShopResultList__on_double_click_open_info | Handles double-click on a result list item. Calculates which item was clicked by Y position and scroll offset, then creates an item info window (type 0xC) for that item. |
| 0x005FDDA0 | 49 | CSearchShopResultList__on_scroll_wheel | Handles mouse scroll wheel on the result list. Scrolls up (event 10) or down (event 9) by one position based on the scroll direction parameter. |
| 0x005FDDE0 | 181 | CSearchShopResultList__update_scrollbar | Updates the scrollbar range and position for the item list. If list items exceed visible rows, enables scrollbar and sets range. Otherwise, hides scrollbar and resets scroll offset to 0. Refreshes self and parent. |
| 0x005FDEA0 | 1491 | CSearchShopWnd__set_selected_recipe | Sets the selected recipe/item data and populates the material list. Clears existing items, loads recipe requirements from CUserHotKeyMgr, checks owned quantities against required, sets status messages, and updates child panels with material info. Large function (1491 bytes) handling full recipe selection flow. |
| 0x005FE480 | 120 | CSearchShopWnd__on_child_event | Handles child window events for CSearchShopWnd. Switch on event type: 6 = buy/close/selection events (sends packet 0xB91 for buy, handles item selection at 0x150, closes at 0xC9), 0x17 = item class update, 0xA7/0xA8 = tab open/close creating/destroying sub-panel. |
| 0x005FE770 | 148 | CSearchShopResultList__on_notify | Handles notification events for the result list. Case 7/9/10: scroll position changes. Case 0x17: clears item list, rebuilds from search results with item filtering (checks equipped status, price range, refinement level), updates scrollbar. |
| 0x005FEAD0 | 21 | CSearchShopItemPanel__set_data_and_refresh | Sets the data pointer (field_0x7C) for this item panel and triggers a refresh via virtual method 0x98. |
| 0x005FEAF0 | 39 | CSearchShopItemPanel__set_enabled | Toggles the enabled/disabled state of the item panel. Sets field_0xAC to inverted param, refreshes display, and sets field_0x28 to the enabled flag. |
| 0x005FECD0 | 111 | CSearchShopWnd__ensure_hotkey_mgr_exists | Ensures the CUserHotKeyMgr singleton (DAT_01389904) exists. If null, allocates 0x20 bytes and calls CUserHotKeyMgr::ctor to initialize it. |
| 0x005FEF40 | 161 | CSearchShopItemPanel__ctor | Constructor for CSearchShopItemPanel. Inherits from UIWindowBase, sets vtable, initializes item info fields, a string member (capacity 0xF), and a counter field to 0. |
| 0x005FEFF0 | 320 | CSearchShopWnd__ctor | Constructor for CSearchShopWnd. Inherits from UIWindowBase, sets vtable, initializes multiple vectors, three string members (capacity 0xF each), search parameters (max 3000), and boolean flags. |
| 0x005FF130 | 222 | CSearchShopResultList__ctor | Constructor for CSearchShopResultList. Inherits from UIScrollPanel with given width/height, sets vtable, initializes item vector fields, scroll position, row height (0x14=20px), and calls resize + scrollbar init. |
| 0x005FF210 | 94 | CSearchShopScrollThumb__ctor | Constructor for CSearchShopScrollThumb. Inherits from UISpriteWidget, sets vtable, initializes field_0xA0 to 0. |
| 0x005FF270 | 99 | CSearchShopItemPanel__cleanup_strings | Cleanup helper that destroys two STL strings. Part of CSearchShopItemPanel's exception unwind or partial destructor sequence. |
| 0x005FF2E0 | 129 | CSearchShopResultList__free_item_vector | Frees the item pointer vector in CSearchShopResultList. Identical pattern to STL_vector_int_free: deallocates buffer with MSVC aligned-allocation support, zeroes begin/end/capacity. |
| 0x005FF370 | 136 | CSearchShopItemPanel__dtor | Non-virtual destructor for CSearchShopItemPanel. Sets vtable, destroys three STL string members, then calls UIWindowBase::dtor. |
| 0x005FF400 | 216 | CSearchShopWnd__dtor | Non-virtual destructor for CSearchShopWnd. Sets vtable, destroys shop item vector, sends close packet 0xA70 to server, destroys string members and item collection vector, then calls UIWindowBase::dtor. |
| 0x005FF4E0 | 110 | CSearchShopResultList__dtor | Non-virtual destructor for CSearchShopResultList. Sets vtable, frees item pointer vector and shop item vector, then calls UIScrollPanel::dtor. |
| 0x005FF550 | 160 | CSearchShopItemPanel__scalar_deleting_dtor | Scalar deleting destructor for CSearchShopItemPanel. Calls dtor then conditionally frees memory (0x1D0 bytes) if param_2 bit 0 is set. |
| 0x005FF5F0 | 240 | CSearchShopWnd__scalar_deleting_dtor | Scalar deleting destructor for CSearchShopWnd. Calls full dtor (destroys items, sends close packet), then conditionally frees memory (300 bytes) if param_2 bit 0 is set. |
| 0x005FF6E0 | 134 | CSearchShopResultList__scalar_deleting_dtor | Scalar deleting destructor for CSearchShopResultList. Calls dtor then conditionally frees memory (0xD0 bytes) if param_2 bit 0 is set. |
| 0x005FF770 | 93 | CSearchShopScrollThumb__scalar_deleting_dtor | Scalar deleting destructor for CSearchShopScrollThumb. Calls UIBaseWidgetA::dtor then conditionally frees memory (0xB4 bytes) if param_2 bit 0 is set. |
| 0x005FF7D0 | 35 | CSearchShopResultList__on_resize | Resize handler for CSearchShopResultList. Resizes the drawing surface and then calls the virtual resize method (vtable+0x3C) with the new dimensions. |
| 0x005FF810 | 12 | CSearchShopScrollThumb__delegate_to_parent | Delegates to the parent widget's virtual method at offset 0x28. Used by CSearchShopScrollThumb to forward events to its parent scroll panel. |
| 0x005FF820 | 134 | CSearchShopResultList__on_item_add_from_search | Handles adding an item from search results (packet type 0x1B). Checks if the item collection isn't full, verifies item ID, forwards to parent via virtual call 0x94, and if accepted calls the add handler. |
| 0x005FF8B0 | 89 | CSearchShopResultList__on_item_register | Handles item registration from search results (packet type 0x1A). Validates the item via stub_00602030, and if valid, forwards to parent via virtual call 0x94 with event 0x68. |
| 0x005FF910 | 9 | CSearchShopScrollThumb__set_position | Simple wrapper that calls CEffect__set_position. Used as a virtual method override for CSearchShopScrollThumb. |
| 0x005FF920 | 935 | CSearchShopWnd__create_ui_widgets | Creates all UI widgets for the search shop window. Creates button/close widgets, a CSearchShopResultList scroll panel (150x204px), and three CDialogWnd button panels with textures for buy/search/close actions. Positions each child widget and adds to the child list. |
| 0x005FFCD0 | 233 | CSearchShopResultList__init_scrollbar | Initializes the scrollbar for CSearchShopResultList. Destroys any existing scrollbar widget, creates a new CSearchShopScrollThumb (UISpriteWidget), configures it as a vertical scrollbar with proper dimensions, and adds it as a child. |
| 0x005FFDC0 | 454 | CSearchShopItemPanel__draw_item_row | Draws a single item row in CSearchShopItemPanel. Renders background sprite if item is flagged, draws item icon with optional count, truncates item name to 100px, and draws name with shadow (greyed out if disabled). |
| 0x005FFF90 | 720 | CSearchShopWnd__draw | Main draw method for CSearchShopWnd. Renders background sprite, title text (msg 0xB50), shop name, item count and max count, iterates through collected items drawing each with its sprite, and shows a timed error message in red at the bottom. |
| 0x00600270 | 1096 | CSearchShopScrollThumb__draw_scrollbar | Draws the scrollbar background for CSearchShopScrollThumb. Loads top/bottom/middle sprite resources based on scrollbar style (0=normal, 3=alternate, 6=compact), tiles the middle section to fill the available height, and draws the thumb position indicator. |
| 0x006006D0 | 145 | CSearchShopItemPanel__on_buy_button_click | Handles the buy/add button click on CSearchShopItemPanel. If not in disabled mode (0x1B1), checks capacity, forwards item ID to parent via virtual call 0x94 (event 0x68), and calls the item add handler. In disabled mode, calls the alternative handler. |
| 0x00600770 | 186 | CSearchShopResultList__on_drag_drop | Handles drag-and-drop onto the search shop result list. Resolves dropped coordinates via stub_00602410, checks if the dropped item is valid via stub_00602030, and if valid forwards to self via virtual call 0x94 (event 0x68). |
| 0x00600830 | 59 | CSearchShopItemPanel__show_item_tooltip | Shows an item tooltip for the hovered item in the panel. If not in disabled mode and an item is selected (field_0xBC != 0), calls CGameMode__setup_item_display_extended with the item data. |
| 0x00600870 | 198 | CSearchShopResultWnd__draw_item_with_header | Draws header area if row < 17, hit-tests item grid to get selected item, and sets up extended item display via CGameMode if an item is found at that position. |
| 0x00600940 | 57 | CSearchShopItemPanel__select | Selects this search shop item panel if not already purchased (flag at 0x1b1). Sets selected flag at offset 0x6c, triggers redraw, and notifies parent with message 6. |
| 0x00600980 | 101 | CSearchShopItemPanel__on_mouse_move | Mouse move handler for CSearchShopItemPanel. Calls parent's mouse move handler, then if tooltip string at offset 0x71 is set, accumulates parent offsets and shows tooltip via CToolTipMgr. |
| 0x006009F0 | 357 | CSearchShopListPanel__on_mouse_move | Mouse move handler for CSearchShopListPanel. Calls parent handler, hit-tests items in the list, finds the matching item index, calculates position with parent offsets, and shows item tooltip. |
| 0x00600B60 | 155 | CSearchShopListPanel__on_tick | Tick handler. Toggles next-page button visibility based on whether item count equals page limit. Also checks if status text timer has expired and clears the text buffer if so. |
| 0x00600C00 | 54 | CSearchShopItemPanel__open_item_info | Opens item info window (type 0xC) for the currently selected item if item ID at offset 0xBC is non-zero. Sends message 0x18 with item data to the info window. |
| 0x00600C40 | 181 | CSearchShopListPanel__on_double_click | Double-click handler. Hit-tests the item grid at mouse position, and if an item is found, opens the item info window (type 0xC) with message 0x18. |
| 0x00600D00 | 23 | CSearchShopItemPanel__invalidate_parent | Delegates to parent window's invalidate/redraw method (vtable offset 0x8C) if parent pointer at offset 0x10 is non-null. |
| 0x00600D20 | 60 | CSearchShopItemPanel__on_mouse_wheel | Mouse wheel handler. If scrollable flag (0xA5) is set, sends scroll message (type 7) to parent with positive or negative offset (0xF or -0xF) depending on wheel direction. |
| 0x00600D60 | 1137 | CSearchShopListPanel__handle_message | Main message handler for CSearchShopListPanel. Handles: msg 6 = select item, msg 0x68 = remove item from cart, msg 0x6F = set status text with timer, msg 0x1F7 = send purchase packet to server, msg 0x1F9 = add selected item from search results. Falls through to UIScrollPanel for unhandled messages. |
| 0x006011E0 | 150 | CSearchShopManagerWnd__handle_message | Message handler for CSearchShopManagerWnd. Handles: msg 6 = deselect other panels, msg 0x17 = refresh items from inventory, msg 0x57 = layout child panels with positioning, msg 0x68 = find and update item by ID (checks quantity/weight limits, shows error messages). Falls through to UIScrollPanel for unhandled. |
| 0x006016C0 | 1251 | CSearchShopManagerWnd__setup_item_from_lua | Sets up item display data from Lua tables. Queries tblLapineDdukddakBox for set_resource_item_list, get_min_need_refine, get_max_need_refine, and other item properties. Initializes item description, resource path, and refine level ranges via lua_call_method. |
| 0x00601BC0 | 339 | CSearchShopManagerWnd__add_item_to_list | Adds an item to the search shop item list by ID. Searches existing items by comparing parsed ID strings, and if not found, creates a new CShopItem entry with the given ID and count, appending to the item vector (with reallocation if needed). |
| 0x00601D20 | 773 | CSearchShopListPanel__add_item_to_cart | Adds an item to the buy cart. Validates max 10 items, searches for existing entry by ID. If not found, creates CShopItem from item info, formats tooltip body, builds description string, and appends to cart vector. Enables next-page button when cart is full. Returns 1 on success, 0 on failure. |
| 0x00602030 | 927 | CSearchShopManagerWnd__add_inventory_item_to_cart | Adds an inventory item to the buy cart. Looks up item by slot, checks if it's an elemental spirit or equipped item (skips those). If item already exists in a panel, merges quantity. Otherwise creates a new CSearchShopItemPanel, updates display, checks refine/weight limits, and adds to the panel list. Returns 1 on success. |
| 0x00602410 | 215 | CSearchShopResultWnd__hit_test_item_grid | Hit-tests the item grid in the search results. Iterates through items, calculates each item's grid position (25x25 pixel cells), and returns item data if mouse coordinates fall within the cell bounds. Returns empty result if no item hit. |
| 0x006024F0 | 141 | CSearchShopResultWnd__get_item_grid_position | Calculates pixel position for item at given index in a 5-column grid layout. Items 0-4 use first row, items 5+ use second row. Column spacing is 0x22 pixels. Returns (x,y) coordinates in output parameter. |
| 0x006025B0 | 103 | CSearchShopItemPanel__validate_and_add_to_cart | Validates item count against limit, then attempts to add item to cart. Sends message 0x68 to parent for validation first, then calls add_item_to_cart on success. Returns result of the add operation. |
| 0x00602620 | 670 | CSearchShopManagerWnd__validate_item_for_purchase | Validates an item for purchase in the search shop. Checks: item quantity vs max count (msg 0xB52), item weight vs max weight (msg 0xB53), weight vs carry capacity (msg 0xE3C), partial weight warning (msg 0xE3D), and enchant slot validation with refinement level check (msg 0xE3E). Returns 1 if valid, 0 if rejected. |
| 0x006028C0 | 509 | CSearchShopItemPanel__update_item_display | Updates the item panel display. Looks up item by slot ID, copies item description, formats tooltip body text with CItemDesc__format_tooltip_body, appends enchant info if applicable (msg 0xA28), gets base item sprite, and assigns the formatted string to the panel's display text. |
| 0x00602AC0 | 50 | CSearchShopListPanel__set_locked_state | Sets the locked/purchased state on the list panel and its next-page button. Propagates the state byte to the button's visibility flag, triggers redraw on both. |
| 0x00602D30 | 301 | CSearchShopResultWnd__ctor | Constructor for CSearchShopResultWnd. Initializes base UIWindowBase, sets vtable to PTR_CSearchShopResultWnd, zeroes item vectors and child panel pointers, initializes multiple STL string members (tooltip, description, status text), and sets default timer value (3000ms). |
| 0x00602E60 | 159 | CSearchShopItemPanel__ctor_00602e60 | Constructor for CSearchShopItemPanel. Initializes base UIWindowBase, sets vtable to PTR_CSearchShopItemPanel, initializes selected flag, item data, and STL string members for tooltip text. |
| 0x00602F00 | 222 | CSearchShopListPanel__ctor | Constructor for CSearchShopListPanel. Inherits UIScrollPanel, sets vtable to PTR_CSearchShopListPanel, zeroes item and panel vectors, initializes page counter and scroll thumb height (0x14). Calls resize surface and scrollbar init. |
| 0x00602FE0 | 99 | CSearchShopResultWnd__dtor_strings | Partial destructor helper for CSearchShopResultWnd. Destroys two STL string members in sequence within an SEH frame. |
| 0x006030E0 | 307 | CSearchShopResultWnd__dtor | Non-deleting destructor for CSearchShopResultWnd. Sets vtable, sends close packet (0xAB5) to server via CNetworkSession, destroys multiple STL string members, and calls UIWindowBase destructor. |
| 0x00603220 | 136 | CSearchShopItemPanel__dtor_00603220 | Non-deleting destructor for CSearchShopItemPanel. Sets vtable, destroys STL string members (tooltip text), and calls UIWindowBase destructor. |
| 0x006032B0 | 110 | CSearchShopListPanel__dtor | Non-deleting destructor for CSearchShopListPanel. Sets vtable, clears int vector via STL_vector_int_clear_and_deallocate, clears shop item vector, and calls UIScrollPanel destructor. |
| 0x00603320 | 325 | CSearchShopResultWnd__scalar_deleting_dtor | Scalar deleting destructor for CSearchShopResultWnd. Sends close packet (0xAB5) to server, destroys strings, calls UIWindowBase dtor, then conditionally frees memory (0x218 bytes) if param_2 bit 0 is set. |
| 0x00603470 | 160 | CSearchShopItemPanel__scalar_deleting_dtor_00603470 | Scalar deleting destructor for CSearchShopItemPanel. Destroys STL string members, calls UIWindowBase dtor, then conditionally frees memory (0x1D0 bytes) if param_2 bit 0 is set. |
| 0x00603510 | 134 | CSearchShopListPanel__scalar_deleting_dtor | Scalar deleting destructor for CSearchShopListPanel. Clears int vector, clears shop item vector, calls UIScrollPanel dtor, then conditionally frees memory (0xD4 bytes) if param_2 bit 0 is set. |
| 0x006035A0 | 35 | CSearchShopListPanel__on_resize | Resize handler for CSearchShopListPanel. Calls CEffect__resize_surface with new dimensions, then dispatches to the virtual layout method (vtable 0x3C). |
| 0x006035E0 | 104 | CSearchShopListPanel__on_drop | Drop event handler for CSearchShopListPanel. If cart is not empty, notifies game mode to close (msg 0x12). If drag data type is 0x1B (item from inventory), sends message 0x1F to parent with the item data. Then closes drag mode. |
| 0x00603650 | 40 | CSearchShopItemPanel__delegate_move_to_child | Delegates a move operation to the child window at offset 0x10. Adds local position offsets (0x1C, 0x20) to the coordinates before calling the child's move method (vtable 0x28). |
| 0x00603680 | 72 | CSearchShopResultWnd__on_drop | Drop event handler for CSearchShopResultWnd. If drag data type is 0x1A (item from search results), sends message 0x1F to self with the item data. Then notifies game mode to close drag (msg 0x12). |
| 0x006036D0 | 9 | CSearchShopItemPanel__set_position | Thin wrapper that delegates to CEffect__set_position. Sets the position of the search shop item panel. |
| 0x006036E0 | 935 | CSearchShopResultWnd__init_ui | Initializes the CSearchShopResultWnd UI. Creates equip window widgets, close button, scroll panel (CSearchShopListPanel at 0x96x0xCC), three dialog buttons (search/buy/close with textures and command IDs 0xC9/0x1FD/0x1F9), and adds all children to the window hierarchy. |
| 0x00603A90 | 205 | CSearchShopListPanel__init_scrollbar | Initializes the scrollbar for CSearchShopListPanel. Destroys existing scrollbar if present, creates a new CSearchShopScrollThumb, sets scroll bar orientation to vertical with dimensions derived from panel size minus margins (0x94 for width, 0x98 for height). |
| 0x00603B60 | 319 | CSearchShopResultWnd__draw | Draw method for CSearchShopResultWnd. Renders background sprite, item name text, search status message (msg 0xB50), item description text, item sprite at (0x65, 0xA5), and a timed error/status message overlay with red text when the timer is active. |
| 0x00603CA0 | 246 | CSearchShopItemPanel__draw | Draw method for CSearchShopItemPanel. Notifies parent of draw event, draws selection highlight sprite if item is marked as purchased (0x1B0 flag), renders item sprite at (4,3), and draws truncated item name text with shadow at (0x24, 9) in light gray (0xE0E0E0). |
| 0x00603DB0 | 59 | CSearchShopResultWnd__on_click_item_sprite | Click handler for item sprite area in CSearchShopResultWnd. Checks if click is within the 25x25 sprite region at (0x65, 0xA5), and if an item is displayed (offset 0x39 non-zero), sends message 0x68 with the item ID. |
| 0x00603E20 | 91 | CSearchShopResultWnd__on_mouse_move | Mouse move handler for CSearchShopResultWnd. Draws header area if in header region, then checks if mouse is over the 25x25 item sprite area at (0x65, 0xA5). If so and an item exists, sets up extended item display tooltip via CGameMode (type 0x1A). |
| 0x00603E80 | 50 | CSearchShopItemPanel__show_item_tooltip_00603e80 | Shows item tooltip for CSearchShopItemPanel. If item ID at offset 0xBC is non-zero, sets up extended item display via CGameMode (type 0x1B) with the item data and card/option info at offset 0x1CC. |
| 0x00603EC0 | 48 | CSearchShopItemPanel__select_and_notify_parent | Selects this panel unconditionally (unlike CSearchShopItemPanel__select which checks purchased state). Sets selected flag at 0x6C, triggers redraw, and notifies parent with message 6. |
| 0x00603EF0 | 126 | CSearchShopWnd__on_mouse_move_show_tooltip | CSearchShopWnd mouse move handler. Calls parent virtual mouse move, then checks if cursor is within search box bounds (x: 0x65-0x7D, y: 0xA5-0xBD) and shows tooltip from string at offset 0x124 via CToolTipMgr. |
| 0x00603F70 | 101 | CSearchShopWnd__on_mouse_move_show_result_tooltip | CSearchShopWnd mouse move handler for result panel. Calls parent virtual mouse move, then if result tooltip flag at +0x1C4 is set, shows tooltip string from offset 0x1B4 at fixed position (0, -20) via CToolTipMgr. |
| 0x00603FE0 | 245 | CSearchShopWnd__update_panel_visibility | Updates visibility of result and filter panels based on item list state. Iterates child item panels checking +0x1B0 flag. Toggles visibility of panels at +0xBC and +0xB8 based on selected state and filter flag at +0x214. Also clears status text after timeout using timeGetTime. |
| 0x006040E0 | 83 | CSearchShopWnd__on_click_show_item_window | Click handler for CSearchShopWnd. If click is within bounds (x: 0x65-0x7D, y: 0xA5-0xBD) and item is selected (+0xE4 != 0), creates window type 0xC and sends message 0x18 with item info string at +0xE0. |
| 0x00604140 | 54 | CSearchShopItemPanel__on_click_show_item_window | Click handler for CSearchShopItemPanel. If item data at +0xBC is set, creates window type 0xC and sends message 0x18 with item info string at +0xB8. |
| 0x00604180 | 23 | CSearchShopItemPanel__on_click_forward_to_parent | Forwards click to parent window. If parent pointer at +0x10 is not null, calls parent virtual method at vtable offset 0x8C. |
| 0x006041A0 | 60 | CSearchShopWnd__on_scroll_wheel | Mouse scroll wheel handler. If scroll enabled flag at +0xA5 is set, sends message 7 with delta +15 or -15 to scroll panel at +0x90 based on scroll direction (param_2 < 0 = scroll down). |
| 0x006041E0 | 130 | CSearchShopWnd__handle_message | Main message handler for CSearchShopWnd. Handles: msg 6 (button clicks: 0xC9=close, 0x1F9=view details, 0x1FD=buy selected item via packet 0xAB6), msg 0x17 (update item display from Lapine data), msg 0x1F (select item and load details), msg 0x68 (deselect and refresh), msg 0x6F (update status text with timeout). Falls through to UIWindow__handle_button_click for unhandled messages. |
| 0x00604680 | 145 | CSearchShopResultPanel__handle_message | Message handler for CSearchShopResultPanel (scroll panel containing result items). Handles: msg 6 (toggle selection exclusivity among child panels), msg 0x17 (collect matching items from all search entries, update panel contents), msg 0x1F (forward to parent for item details), msg 0x57 (compact panel layout, remove empty entries, reposition children at 30px spacing), msg 0x68 (forward to parent). |
| 0x006049B0 | 1491 | CSearchShopWnd__query_lapine_upgrade_box_requirements | Queries Lua tblLapineUpgradeBox table for item requirements. Calls get_min_need_refine, get_max_need_refine, get_min_need_option_num, and set_resource_item_list to populate the upgrade box UI with refine level constraints and required materials for the selected item. |
| 0x00604F90 | 10 | CSearchShopWnd__throw_vector_too_long | Throws std::_Xlength_error with "vector too long" message. Called when search shop item vector exceeds maximum capacity. |
| 0x00604FA0 | 330 | CSearchShopWnd__add_item_to_search_list | Adds an item to the search shop list by item ID. Iterates the search item vector at +0xC0 comparing item IDs via atoi. If item not found, creates a new CShopItem entry from CItemInfoMgr and appends it to the vector. Uses 0xF8-byte stride for CShopItem entries. |
| 0x006050F0 | 512 | CSearchShopWnd__load_and_display_item_details | Loads item details for display. Finds item by slot ID via CShop__find_item_in_linked_list_by_slot, formats tooltip body with CItemDesc__format_tooltip_body, applies enchant price message (0xA28) if applicable, gets base item ID for display, then copies item desc and triggers UI refresh. |
| 0x006052F0 | 861 | CSearchShopWnd__try_add_result_item_panel | Attempts to add a search result item panel to the result list. Validates item via find_item, checks refine level (+0x118) against min/max bounds, option count (+0x150) against minimum, checks if item is an elemental spirit or equipped. If valid and not already in result list, creates a new CSearchShopItemPanel (0x1D0 bytes), sizes it to 0x88x0x1E, populates it, and appends to result panel vector. Sends msg 0x57 to trigger layout refresh. |
| 0x00605690 | 191 | CSearchShopWnd__try_clear_selected_item | Tries to clear the currently selected item if it matches param_2. If the selected item ID at +0xE4 equals param_2, clears the item description, sends msg 0x6F with empty string to clear status text, and triggers UI refresh. Returns true if item was cleared. |
| 0x00605750 | 553 | CSearchShopWnd__validate_and_select_result_item | Validates and selects a result item by panel slot ID. Finds the matching panel in result list, then matches its item ID to search list entries. Validates refine level against min/max bounds with warning message 0xE3D, checks enchant/equip type for option slot warnings (msg 0xE3E), and verifies option count minimum. If all checks pass, marks panel as selected, sends msg 0x57 for layout refresh, returns 1. Returns 0 if any validation fails. |
| 0x006059B0 | 509 | CSearchShopItemPanel__populate_item_info | Populates a CSearchShopItemPanel with item information. Finds item by slot, copies item description, formats tooltip body text including enchant price (msg 0xA28), gets base item ID, and assigns the display text to the panel's text field, then triggers redraw. |
| 0x00605BB0 | 50 | CSearchShopWnd__set_filter_panel_visibility | Sets the visibility of the filter panel. Stores param_2 as the filter visible flag at +0x214, also sets the child panel's visibility at +0xAC, and triggers redraw on both. |
| 0x00605BF0 | 265 | CSearchShopFilterEntry__ctor | Constructor for CSearchShopFilterEntry (0x64 bytes). Sets vtable pointer to PTR_helper_00605df0, initializes 3 SSO strings (each 0x18 bytes: at +0xC, +0x24, +0x3C), a vector at +0x54 (start/end/capacity), and status fields. Sets +0x4 to 1 (enabled flag). |
| 0x00605D00 | 100 | CSearchShopFilterEntry__cleanup_strings | Cleanup helper for CSearchShopFilterEntry. Destroys two SSO strings during exception unwinding or partial construction cleanup. |
| 0x00605D70 | 117 | CSearchShopFilterEntry__dtor | Destructor for CSearchShopFilterEntry. Sets vtable, clears the shop item vector via CShopItem__vector_clear_and_free, then destroys 3 SSO strings at +0x3C, +0x24, +0xC. |
| 0x00605DF0 | 138 | CSearchShopFilterEntry__scalar_deleting_dtor | Scalar deleting destructor for CSearchShopFilterEntry. Calls dtor logic (vtable set, vector clear, 3 string dtors), then conditionally frees the 100-byte object if bit 0 of param_2 is set. |
| 0x00605E80 | 50 | CMerchantStore__push_back_shop_item | Appends a CShopItem (0xF8 bytes) to the merchant store's item vector at +0x58. If vector has capacity, copy-constructs in place and advances end pointer. Otherwise calls STL_vector_f8byte_reallocate_insert to grow. |
| 0x00605EC0 | 25 | CMerchantStore__clear_shop_items | Clears all shop items from the merchant store's vector at +0x58. Calls CShopItem__destroy_range to destruct all elements, then resets end pointer to start. |
| 0x00605EE0 | 88 | CMerchantStore__copy_construct_name_string | Copy-constructs the name string (at +0x24) during CMerchantStore copy/move operations. Uses STL_string_copy_construct on the source's +0x24 field. |
| 0x00605F40 | 88 | CMerchantStore__copy_construct_save_path | Copy-constructs the save path string (at +0xC) during CMerchantStore copy/move operations. Uses STL_string_copy_construct on the source's +0xC field. |
| 0x00605FA0 | 482 | CMerchantStore__parse_json_response | Parses a JSON response string for merchant store data. If valid data exists, creates a JsonValue, parses with JsonReader, checks for result type string "result". If result==1, calls parse_item_list_from_json to populate items. If result==4, sets success flag. On success, sets +0x5 flag to 1. Cleans up JSON objects and string temporaries. |
| 0x00606190 | 2269 | CMerchantStore__parse_item_list_from_json | Parses item list from JSON into the merchant store's shop item vector. Clears existing items, reads Title field (converted from codepage), then iterates items array reading: ID, Count, Identified, RefiningLevel, GradeLevel, Slot_1-4, RandomOptionCount, RandomOptionList (up to 6 options with OptIndex/Value/Parm1), and Price for each entry. Appends parsed CShopItem entries to the vector at +0x58. Calls UIShopWnd__populate_item_list if shop windows are active. |
| 0x00606A70 | 310 | CMerchantStore__init_lua_save_load_paths | Initializes Lua save/load function paths for merchant store. Gets table name from lua_get_table_string_value_for_c, then constructs save path as "{name}_MerchantStore_save" at +0xC and load path as "{name}_MerchantStore_load" at +0x24 using string concatenation. |
| 0x00606BB0 | 554 | CMerchantStore__match_items_with_inventory | Matches merchant store items with player inventory. Iterates items in the +0x58 vector (0xF8-byte stride), for each item calls CItemDB__find_matching_item_in_list. If not found, shifts remaining items down and shrinks vector. If found, caps quantity to inventory amount (when param_2==0), updates collection/storage via CItemCollection and CItemDB. Processes up to param_3 items. |
| 0x00606DE0 | 205 | CMerchantStore__register_filter_entry | Registers a new filter entry for the merchant store. If both params are non-null, assigns strings and calls CEffectTexture__register_effect_type_i to register the entry with the filter system. |
| 0x00606EB0 | 545 | CMerchantStore__save_item_list_to_json | Saves the merchant store item list to JSON format. Creates JsonValue objects, calls serialize_items_to_json to build the JSON, then writes it using JsonWriter. Constructs a save request with the serialized data, store path, and global config, then calls CEffectTexture__register_effect_type_j to submit. Increments save counter at +0x8. |
| 0x006070E0 | 342 | CMerchantStore__reset_and_init_lua_paths | Resets merchant store state and reinitializes Lua paths. Clears +0x5 flag, empties title string, destroys all shop items in +0x58 vector, then calls init_lua_save_load_paths to rebuild the _MerchantStore_save and _MerchantStore_load function paths. |
| 0x00607240 | 1488 | CMerchantStore__serialize_items_to_json | Serializes merchant store items into a JSON structure. Converts title string from wide to hex encoding, sets "Title" field. Iterates buying store items via CShop__get_buyingstore_item_by_index, building JSON for each with fields: ID, Count, Identified, RefiningLevel, GradeLevel, Slot_1-4, RandomOptionCount, RandomOptionList (up to 6 options with OptIndex/Value/Parm1), and Price. Also adds "items" array to the output JSON. |
| 0x00607810 | 529 | CMerchantStore__handle_save_response | Handles the HTTP response from a merchant store save request. Decrements save counter at +0x8. Parses JSON response, checks result type. If result==1, displays success/failure chat message (msg 0xE65 for type 0, 0xE66 for type 1) via CUIWindowMgr__dispatch_chat_message. Cleans up string temporaries. |
| 0x00607A30 | 218 | CMerchantStoreWebRequest__init_fields | Initializes fields for a CMerchantStoreWebRequest. Copies callback ID from param_5, initializes string at +0x4 from param_4 (null-terminated), copies string at +0x1C from param_3 (with move semantics), and sets bool flag at +0x34 from param_2. |
| 0x00607B10 | 754 | CMerchantStoreSaveRequest__ctor | Constructor for CMerchantStoreSaveRequest (0xD0 bytes). Inherits from base web request class (two vtable assignments: purecall base + derived). Initializes 5 SSO strings, decrypts an encrypted API endpoint string via xor_decrypt_buffer (TLS-cached), and initializes request fields using CMerchantStoreWebRequest__init_fields with the decrypted string and path "C:\\repositories\\RagnarokClient\\R...". |
| 0x00607E10 | 210 | CMerchantStoreSaveRequest__dtor | Destructor for CMerchantStoreSaveRequest. Sets derived vtable, destroys 5 SSO strings and the base string in reverse construction order. Resets vtable pointers through the inheritance chain (derived -> base request -> purecall base). |
| 0x00607EF0 | 234 | CMerchantStoreSaveRequest__scalar_deleting_dtor | Scalar deleting destructor for CMerchantStoreSaveRequest. Calls the full dtor chain, then conditionally frees the 0xD0-byte object if bit 0 of param_2 is set. |
| 0x00607FE0 | 647 | CMerchantStoreSaveRequest__populate_from_entry | Populates a CMerchantStoreSaveRequest from a store entry. Records timestamp via timeGetTime, copies account/char IDs, assigns 3 strings (store title, save data, save path) from the entry, decrypts an encrypted API key via xor_decrypt_buffer (TLS-cached), and initializes web request fields. Sets +0xC8 from the entry's extra field. |
| 0x00608280 | 206 | CMerchantStoreSaveRequest__execute_save | Executes the save operation. Copies string fields from the store entry (at +0x94 and +0xAC) and then calls parse_json_response to handle the result of the previously submitted save request. |
| 0x00608350 | 2575 | CMerchantStoreSaveRequest__send_http_request | Sends the merchant store save HTTP request via CWebDataProviderA. Formats account ID and char ID as strings, converts store title to UTF-8, constructs a CCurlRequest, then adds multiple encrypted POST parameters (account, char, title, data, token) by decrypting XOR-encrypted field names from TLS cache. Performs the HTTP request via CWebDataProviderA__configure_and_perform_curl. On success, copies response body and constructs a response entry with success flag. |
| 0x00608D60 | 795 | CMerchantStoreLoadRequest__ctor | Constructor for CMerchantStoreLoadRequest (0xE8 bytes). Same structure as save request but with different vtable (PTR_LAB_010e9474) and different encrypted API endpoint. Initializes 5 SSO strings, plus 2 additional strings at +0xC8 and +0xD8. Decrypts endpoint via xor_decrypt_buffer (TLS-cached). |
| 0x00609080 | 225 | CMerchantStoreLoadRequest__dtor | Destructor for CMerchantStoreLoadRequest. Sets derived vtable, destroys 7 SSO strings (5 base + 2 additional) and the base string in reverse construction order. Resets vtable pointers through the inheritance chain. |
| 0x00609170 | 249 | CMerchantStoreLoadRequest__scalar_deleting_dtor | Scalar deleting destructor for CMerchantStoreLoadRequest. Calls the full dtor chain, then conditionally frees the 0xE8-byte object if bit 0 of param_2 is set. |
| 0x00609270 | 675 | CMerchantStoreLoadRequest__populate_from_entry | Populates a CMerchantStoreLoadRequest from a store entry. Records timestamp via timeGetTime, copies account/char IDs, assigns 4 strings (store title, data, path, extra path) from the entry, decrypts an encrypted API key via xor_decrypt_buffer (TLS-cached), and initializes web request fields. Sets +0xE0 from the entry's extra field. |
| 0x00609530 | 178 | CMerchantStoreLoadRequest__execute_load | Executes the load operation. Copies string fields from the store entry (at +0x94, +0xAC) and then calls handle_save_response to process the loaded data. |
| 0x006095F0 | 3570 | CMerchantStoreLoadRequest__send_http_request | Sends the merchant store load HTTP request via CWebDataProviderA. Formats account ID, char ID, and extra ID as strings, converts store title to UTF-8, constructs a CCurlRequest, then adds multiple encrypted POST parameters (account, char, title, token, extra data, extra token) by decrypting XOR-encrypted field names from TLS cache. Performs the HTTP request. On success, copies response body and constructs a response entry; on failure, constructs error entry with flag=0. |
| 0x0060A3F0 | 181 | CMerchantStoreRequestEntry__ctor | Constructor for CMerchantStoreRequestEntry. Copies callback ID from param_3, initializes an empty SSO string at +0x4, copy-constructs it from the source, and records timestamp via timeGetTime at +0x1C. |
| 0x007C4D30 | 1376 | EmotionShopWnd__update_useable_items | Updates useable emotion items: filters by EMSG_EMOTION_USEABLE_EXPIRE_TIME, creates/reuses item controls with expiry text |
| 0x007C6540 | 1376 | EmotionShopWnd__update_sale_items | Updates sale emotion items: filters by EMSG_EMOTION_SALE_END_TIME, creates/reuses item controls with sale end text |
| 0x007C6CB0 | 269 | EmotionShopWnd__constructor | Constructs emotion shop window: inits base, sets vtable 01124954, allocates RB tree sentinel, zeros UI fields |
| 0x007C6FD0 | 136 | EmotionShopWnd__destructor | Destructor: resets global ID to -1, unregisters packet handler 7, destroys RB tree, calls base destructor |
| 0x007C70D0 | 160 | EmotionShopWnd__scalar_deleting_destructor | Scalar deleting destructor: full cleanup then optionally frees 0xF0-byte object |
| 0x007C7170 | 165 | EmotionShopWnd__set_search_panel_visible | Shows/hides search panel at +0xD8: handles focus, sets visibility, clears text; also toggles +0xD4 and +0xDC |
| 0x007C7240 | 644 | EmotionShopWnd__create_button_control | Creates a button control with sprite states (normal/press/disable) and optional text label |
| 0x007C74D0 | 1868 | EmotionShopWnd__create_ui_controls | Creates all emotion shop UI: 4 tab buttons, text input, item grid, emotion grid, search grid, sale grid, and timer |
| 0x007C7CD0 | 53 | EmotionShopWnd__update_preview_display | Updates preview display at +0xE8: passes text from input or 0 based on search state |
| 0x007C7D10 | 233 | EmotionShopWnd__select_item | Handles item selection: validates via format, switches to unpurchased tab, updates preview and text display |
| 0x007C7E00 | 76 | EmotionShopWnd__send_purchase_packet | Sends emotion shop purchase packet 0xBEC with item ID and format info to server |
| 0x007C7E50 | 169 | EmotionShopWnd__update_grid_search_state | Updates grid panels with search text for active tab (2=emotion, 3=search, 4=sale); clears if no search |
| 0x007C7F00 | 88 | EmotionShopWnd__clear_all_grid_displays | Clears search input and resets all 3 grid displays (emotion, search, sale) to empty state |
| 0x007C7F60 | 337 | EmotionShopWnd__update_usage_period_display | Updates usage period label: shows days remaining from EMSG_PERIOD_OF_USE or hides if no expiry |
| 0x007C80C0 | 168 | EmotionShopWnd__register_refresh_timer | Registers 30-second periodic timer for shop data refresh via packet handler 7 |
| 0x007C8170 | 137 | EmotionShopWnd__process_message | Main message handler: tab switch, item select, purchase confirm with cash/free check, search, close |
| 0x007C87A0 | 88 | EmotionShopWnd__select_tab_by_id | Selects tab in RB tree by char ID and sends tab-switch message 0xD7 to parent |
| 0x007C8800 | 493 | EmotionShopWnd__switch_active_tab | Switches active tab (1-4): updates button states, sets active grid panel, manages search/preview visibility |
| 0x007C89F0 | 41 | EmotionShopWnd__set_search_text | Sets search text input at +0xD8: passes param or empty string |
| 0x007C8A20 | 26 | EmotionShopWnd__update_purchase_button | Calls virtual +0xD4 on purchase button control at +0xE4 if present |
| 0x007C8A40 | 155 | EmotionShopWnd__register_refresh_timer_alt | Registers 30-second periodic timer for shop data refresh (alternate entry, no packet unregister) |
| 0x007C8AF0 | 56 | EmotionShopWnd__sync_rect_to_parent | Copies position rect (w,h,x,y) from this control to parent object at +0xB4 |
| 0x007C8B30 | 23 | EmotionShopWnd__update_emotion_item_mode | Delegates to emotion grid at +0xBC to update item display mode if grid exists |
| 0x007C8B50 | 89 | EmotionShopWnd__refresh_purchase_state | Refreshes purchase button and usage period based on active tab and selected item ID |
| 0x007C8BB0 | 23 | EmotionShopWnd__update_search_item_mode | Delegates to search grid at +0xC0 to update item display mode if grid exists |
| 0x007C8DE0 | 67 | EmotionShopWnd__find_tab_node | Finds RB tree node matching char key; returns sentinel if not found |
| 0x00822C60 | 136 | CStylingShopColorPanel__ctor | Constructor for CStylingShopColorPanel. Inherits base panel. Sets vtable to PTR_FUN_0112eae0. Zeroes child pointers 0x22-0x23. |
| 0x00822CF0 | 116 | CStylingShopListPanel__ctor | Constructor for CStylingShopListPanel. Inherits base panel. Sets vtable to PTR_FUN_0112e92c. |
| 0x00822D70 | 141 | CStylingShopAccessoryPanel__ctor | Constructor for CStylingShopAccessoryPanel. Inherits from scroll panel via FUN_009ac040. Sets vtable PTR_FUN_0112ea04. Zeroes fields 0x2f-0x31. Queries accessory table sizes. |
| 0x00822E00 | 146 | CStylingShopHairPanel__ctor | Constructor for CStylingShopHairPanel. Inherits base panel. Sets vtable PTR_FUN_0112e854. Zeroes child pointers 0x22-0x24. |
| 0x00822EA0 | 116 | CStylingShopPreviewPanel__ctor | Constructor for CStylingShopPreviewPanel. Inherits base panel. Sets vtable PTR_CStylingShopPreviewPanel__dtor. |
| 0x00822F20 | 297 | CStylingShopCharPanel__ctor | Constructor for CStylingShopCharPanel. Inherits base UI. Sets vtable PTR_CStylingShopCharPanel__dtor. Zeroes 10+ fields (0x20-0x33). Allocates RB-tree sentinel (0x18 bytes) at offset 0x32. Sets vtable ptr at 0x1f to DAT_0112f2e8. |
| 0x00823050 | 299 | CStylingShopCharPanel__ctor_with_flag | Constructor for CStylingShopCharPanel with initial flag. Same as default ctor but sets byte at offset 0x2c to param_2 value instead of 0. |
| 0x00823180 | 137 | CStylingShopItemListPanel__ctor | Constructor for CStylingShopItemListPanel. Inherits base panel. Sets vtable PTR_CStylingShopItemListPanel__dtor. Zeroes fields 0x22-0x24. |
| 0x00823210 | 220 | CStylingShopMainWnd__ctor | Constructor for CStylingShopMainWnd. Inherits base UI. Sets vtable. Zeroes many fields. Allocates linked list sentinel (0xc bytes) at offset 0x2d. Initializes shop config: offset 0x29=5, 0x2a=0xc. Zeroes child panels 0x30-0x34. |
| 0x008232F0 | 116 | CStylingShopPreviewSlot__ctor | Constructor for CStylingShopPreviewSlot. Inherits base panel. Sets vtable PTR_CStylingShopPreviewSlot__dtor. |
| 0x00823370 | 138 | CStylingShopScrollPanel__ctor | Constructor for CStylingShopScrollPanel. Inherits FUN_008a3700. Sets vtable. Allocates RB-tree sentinel (0x18 bytes) at offset 0x2f. |
| 0x00823400 | 67 | CStylingShop__free_list_node_0xc | Frees a linked list node (0xc bytes) at offset 0x4 if not null. |
| 0x00823450 | 67 | CStylingShop__free_tree_sentinel_0x18 | Frees a tree sentinel node (0x18 bytes) at offset 0x4 if not null. |
| 0x008234A0 | 78 | CStylingShop__free_list_node_0xc_alt | Frees a linked list node (0xc bytes) at offset 0x4 if not null. Alternative version. |
| 0x008234F0 | 111 | CStylingShop__destroy_tree_and_sentinel_0x18 | Destroys all nodes in a tree with 0x18-byte nodes, then frees the sentinel node. Uses std__tree__destroy_nodes_recursive_18 for child nodes. |
| 0x00823570 | 78 | CStylingShop__free_tree_sentinel_0x18_alt | Frees a tree sentinel node (0x18 bytes) at offset 0x4 if not null. Alternative version for styling shop. |
| 0x008235C0 | 78 | CStylingShop__free_tree_sentinel_0x18_alt2 | Frees a tree sentinel node (0x18 bytes) at offset 0x4 if not null. Another alternative version. |
| 0x00823610 | 103 | CStylingShop__destroy_linked_list | Destroys a linked list. Walks list from first node, frees each 0xc-byte node, then frees the sentinel node. |
| 0x00823680 | 65 | CStylingShop__destroy_tree_wrapper | Wrapper that calls CStylingShop__destroy_tree_and_sentinel_0x18 to destroy a tree. |
| 0x008237F0 | 71 | CStylingShopConfirmDialog__dtor | Destructor for CStylingShopConfirmDialog. Sets vtable PTR_FUN_0112e4f0, calls UIDialogBoxBase destructor. |
| 0x00823840 | 84 | CStylingShopListPanel__dtor | Destructor for CStylingShopListPanel. Sets vtable chain (list panel then base panel), calls base UI dtor. |
| 0x008238A0 | 95 | CStylingShopAccessoryPanel__dtor | Destructor for CStylingShopAccessoryPanel. Sets vtable, deallocates vector, calls scroll panel base dtor FUN_009ac2b0. |
| 0x00823900 | 108 | CStylingShopHairPanel__dtor | Destructor for CStylingShopHairPanel. Sets vtable, deallocates vector via std__vector_ptr__deallocate_alt, sets base vtable, calls FUN_00a79e90. |
| 0x00823970 | 178 | CStylingShopCharPanel__dtor_00823970 | Destructor for CStylingShopCharPanel. Sets vtable, destroys tree nodes at offset 0x32, destroys tree sentinel, calls base dtor FUN_00a79e90. |
| 0x00823A30 | 102 | CStylingShopItemListPanel__dtor_00823a30 | Destructor for CStylingShopItemListPanel. Sets vtable, calls CStylingShop__save_and_load_like_list cleanup, calls base panel dtor, then base UI dtor. |
| 0x00823AA0 | 146 | CStylingShopMainWnd__dtor_00823aa0 | Destructor for CStylingShopMainWnd. Sets vtable, walks and frees linked list at offset 0x2d (0xc-byte nodes), frees sentinel, calls base dtor. |
| 0x00823B40 | 84 | CStylingShopPreviewSlot__dtor_00823b40 | Destructor for CStylingShopPreviewSlot. Sets vtable chain, calls base panel dtor. |
| 0x00823BA0 | 71 | CStylingShopButton__dtor_00823ba0 | Destructor for CStylingShopButton. Sets vtable, calls UIDialogBoxBase destructor. |
| 0x00823BF0 | 155 | CStylingShopScrollPanel__dtor_00823bf0 | Destructor for CStylingShopScrollPanel. Sets vtable, sends packet 0xa48, calls network cleanup functions. Destroys tree at offset 0x2f. Calls base FUN_008a4e90 dtor. |
| 0x00823C90 | 71 | CStylingShopBasePanel__dtor_00823c90 | Destructor for CStylingShopBasePanel. Sets vtable, calls base UI dtor FUN_00a79e90. |
| 0x00823CE0 | 174 | CStylingShopCharPanel__CopyAppearanceData | Copies character appearance data from a source object at param_2. Copies 10 fields from offsets 0x80-0xa4 to 0x20-0x29, and 3 fields from 0xbc-0xc4 to 0x2f-0x31. Triggers redraw. |
| 0x00823DF0 | 93 | CStylingShopPreviewPanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopPreviewPanel (extends UIComplexDialog). Calls complex dialog dtor, frees 0x10c bytes if bit 0 set. |
| 0x00823E50 | 112 | CStylingShopColorPanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopColorPanel. Sets vtable chain, calls base dtors, frees 0x90 bytes if bit 0 set. |
| 0x00823EC0 | 99 | CStylingShopConfirmDialog__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopConfirmDialog. Sets vtable, calls UIDialogBoxBase dtor, frees 0x128 bytes if bit 0 set. |
| 0x00823F30 | 112 | CStylingShopListPanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopListPanel. Sets vtable chain, calls base dtors, frees 0x88 bytes if bit 0 set. |
| 0x00823FA0 | 119 | CStylingShopAccessoryPanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopAccessoryPanel. Sets vtable, deallocates vector, calls scroll panel base dtor, frees 200 bytes if bit 0 set. |
| 0x00824020 | 132 | CStylingShopHairPanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopHairPanel. Sets vtable, deallocates vector, calls base panel dtor, frees 0x98 bytes if bit 0 set. |
| 0x008240B0 | 112 | CStylingShopPreviewPanel__scalar_deleting_dtor_008240b0 | Scalar deleting destructor for CStylingShopPreviewPanel (CEffect/BasePanel chain). Sets preview panel vtable then base panel vtable, calls CEffect dtor. Frees 0x88 bytes if bit 0 of param_2 is set. |
| 0x00824120 | 204 | CStylingShopCharPanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopCharPanel. Walks and deletes RB-tree nodes at offset 0x32, destroys tree sentinel, calls base CEffect dtor. Frees 0xD0 bytes if bit 0 of param_2 is set. |
| 0x008241F0 | 126 | CStylingShopItemListPanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopItemListPanel. Calls list cleanup, sets base panel vtable, calls CEffect dtor. Frees 0xAC bytes if bit 0 of param_2 is set. |
| 0x00824270 | 170 | CStylingShopMainWnd__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopMainWnd. Walks and frees singly-linked list of 0xC-byte nodes at offset 0x2D, frees sentinel, calls CEffect dtor. Frees 0xD4 bytes if bit 0 of param_2 is set. |
| 0x00824320 | 96 | CStylingShopSlotPanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopSlotPanel. Simple chain: sets vtable, calls CEffect dtor. Frees 0x7C bytes if bit 0 of param_2 is set. |
| 0x00824380 | 112 | CStylingShopPreviewSlot__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopPreviewSlot. Sets preview slot vtable then base panel vtable, calls CEffect dtor. Frees 0x88 bytes if bit 0 of param_2 is set. |
| 0x008243F0 | 99 | CStylingShopButton__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopButton. Sets vtable, calls UIDialogBoxBase dtor. Frees 0x120 bytes if bit 0 of param_2 is set. |
| 0x00824460 | 179 | CStylingShopScrollPanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopScrollPanel. Sends packet 0xA48, destroys tree at offset 0x2F, calls UIWindowBase dtor. Frees 0xC4 bytes if bit 0 of param_2 is set. |
| 0x00824520 | 99 | CStylingShopBasePanel__scalar_deleting_dtor | Scalar deleting destructor for CStylingShopBasePanel. Sets base vtable 0112e77c, calls CEffect dtor. Frees 0x88 bytes if bit 0 of param_2 is set. |
| 0x00824590 | 35 | CStylingShop__set_preview_mode | Sets preview data pointer based on param (0=normal, 1=alternate) and triggers virtual refresh |
| 0x008245C0 | 42 | CStylingShop__set_child_preview_mode | Sets preview mode on child panel at offset 0x7C if it exists |
| 0x008245F0 | 359 | CStylingShop__update_confirm_button_state | Checks NPC type 0x1F0, validates slot availability, updates confirm button enable/disable state |
| 0x00824760 | 404 | CStylingShop__check_appearance_match_all_slots | Iterates NPC tree, finds active appearance and 0x1F0 NPC, compares 7 styling fields per slot |
| 0x00824900 | 375 | CStylingShop__update_confirm_for_child | Updates confirm button state for child panel at offset 0x7C; checks 0x1F0 NPC slot availability |
| 0x00824A80 | 367 | CStylingShop__create_preview_slot_in_npc | Creates a new preview slot (CStylingShopPreviewSlot, 0x88 bytes) in the first empty slot of a 0x1F0 NPC. Positions the slot based on panel width, copies appearance data, and enables associated buttons. Returns 1 if slot created, 0 if both slots full. |
| 0x00824BF0 | 571 | CStylingShop__create_preview_slot_if_empty | Creates new preview slot (0x88 bytes) if an empty slot exists in 0x1F0 NPC; positions and links it |
| 0x00824E30 | 175 | CStylingShop__apply_style_to_active_slot | Iterates NPC tree for 0x1F0 type with active flag, applies style change and triggers animation |
| 0x00824EE0 | 2077 | CStylingShop__build_change_packet | Builds styling change packet from category list; handles 7 types (head/body palette/style, accessories) via Lua |
| 0x00825720 | 103 | CStylingShop__remove_active_preview_slot | Removes current active preview slot if it has content; frees slot and disables associated button |
| 0x008257D0 | 180 | CStylingShop__update_all_confirm_buttons | Iterates all 0x1F0 NPCs and updates confirm button enabled state based on active slot content |
| 0x00825890 | 119 | CStylingShop__validate_payment_amount | Validates if player has enough zeny; shows error message for insufficient funds or over-limit |
| 0x00825910 | 619 | CStylingShop__check_and_add_changed_categories | Checks Lua coloring flag, compares all 7 styling fields against current values, adds changed ones to list |
| 0x00825B80 | 119 | CStylingShop__compare_appearance_fields | Compares 7 appearance fields (head/body palette, style, accessories) between preview and target |
| 0x00825C00 | 148 | CStylingShop__find_matching_slot_by_appearance | Searches up to 2 slots for one matching all 7 appearance fields; returns true if found |
| 0x00825CA0 | 585 | CStylingShop__query_accessory_table_sizes | Queries StylingShop_GetSizeInTable for Top/Mid/BottomAccessory via Lua and populates accessory lists |
| 0x00825EF0 | 261 | CStylingShop__BuildCharacterSaveString | Builds a character appearance save string with format: characterName=%s slotNum=%d head=%d... Reads 10 appearance fields from child object at offset 0x7c (offsets 0x80-0xa4). Gets character name from FUN_00e08c70. |
| 0x00826000 | 472 | CStylingShop__render_character_preview_00826000 | Renders a character preview sprite for the styling shop. Gets the active player entity, extracts appearance fields (job, head, body, accessories) from param_1, creates a CCharSlotEntry, renders sprite layers, then destroys it. Not a string parser despite the old name. |
| 0x008261E0 | 534 | CStylingShop__draw_accessory_item_sprite | Draws accessory item sprites in the styling shop UI. For type 4/5/6 (top/mid/bottom accessories), reads item ID from child object at 0x7c (offsets 0xbc/0xc0/0xc4), converts to resource path via Lua, loads sprite resource, and draws it. param_5 controls normal vs tinted drawing mode. param_6 is the row index for vertical positioning. |
| 0x00826470 | 39 | CStylingShop__set_active_slot_from_click | Sets the active preview slot index (0 or 1) based on mouse click X position. Divides click X by half the panel width to determine which slot was clicked. Only updates if field at 0x28 (slot count or enabled flag) is non-zero. |
| 0x008264A0 | 746 | CStylingShop__build_category_name_string | Builds a category name string based on the styling type enum: 1=HeadPalette, 2=HeadStyle, 3=BodyPalette, 4=TopAccessory, 5=MidAccessory, 6=BottomAccessory, 7=BodyStyle. For Doram races (types 2,3,7), appends "Doram" suffix. Returns the constructed string. |
| 0x008267E0 | 1634 | CStylingShop__populate_item_list | Populates the styling shop item list. Iterates through goods indices, calls StylingShop_GetGoods Lua function for each, checks Doram eligibility via StylingShop_GetIsDoram_by_goods, creates dialog windows with item slots (CStylingShopConfirmDialog), and adds them to the scroll panel. 1634 bytes. |
| 0x00826E50 | 589 | CStylingShop__load_costume_change_data | Loads costume change data into the selection map. Calls StylingShop_GetCostumeSize to get count, then iterates with StylingShop_GetChangeCostume for each entry. Inserts valid entries into the ordered map at +0xC8 with costume ID and sequence number. 589 bytes. |
| 0x008270A0 | 1379 | CStylingShop__create_navigation_buttons | Creates navigation buttons for the styling shop. Creates 8 button widgets (CDialogWnd) with textures for: prev/next palette (msg 0x1C2/0x1C3), prev/next accessory (msg 0x162/0x163), try-on (msg 0x164), close (msg 0xB9), scroll left/right (msg 0xE3/0xE2). Positions buttons at fixed offsets. 1379 bytes. |
| 0x00827610 | 89 | CStylingShop__LoadCharacterAppearance | Loads character appearance data from global variables (DAT_01733510-01733540) into object fields at offsets 0x88-0xa4. 8 appearance fields total. |
| 0x00827670 | 160 | CStylingShop__ResetAllSlots | Resets all 8 styling shop slot widgets. Clears each slot via FUN_008658d0 and sets map names. Zeroes tracking fields 0xad-0xbc. Clears render batch list at offset 0xb4. |
| 0x00827710 | 57 | CStylingShop__UpdateButtonStates | Updates button enabled/disabled states based on current selections. Checks if item at offset 0x7c+0x90 is zero and if object at 0x88+0x30 is zero. |
| 0x00827750 | 140 | CStylingShop__SetTabMode | Sets tab mode for styling shop. If param_2=0 (disabled mode): uses blank textures, sets flag 0xb0=1. Otherwise uses active textures for 3 tab buttons. Calls FUN_008657a0 for each tab and triggers redraw. |
| 0x00827900 | 466 | CStylingShop__validate_item_for_slot | Validates an item for a styling shop slot. Checks zeny cost against player funds (DAT_01733d28), validates item IDs by comparing with item info atoi values. Returns 1 if valid, 0 if not. Shows error message 0xADC or 0xB04 for insufficient funds. |
| 0x00827AE0 | 543 | CStylingShop__add_button_and_label | Creates a styling shop button (CStylingShopButton, vtable PTR_CStylingShopButton__dtor_0112e414) and label pair. Sets up message handlers, positions button at column offset, inserts button+label pair into the shop's ordered map (+0xBC). |
| 0x00827D00 | 1006 | CStylingShopHair__create_child_windows | Creates child windows for the hair styling shop tab. Creates: character preview panel (+0x7C), two input fields (+0x88, +0x8C) with labels (msg 0xB15, 0xB10), and a scrollable content panel (+0x80, msg 0x1F2). Sets up visibility based on data availability. |
| 0x008280F0 | 646 | CStylingShopCloth__create_child_windows | Creates child windows for the cloth styling shop tab. Creates character preview (+0x7C), scrollable content panel (+0x80, msg 0x1F1), and character model preview with accessory table. Similar structure to hair tab but with cloth-specific parameters. |
| 0x00828380 | 1330 | CStylingShopAccessory__create_child_windows | Creates child windows for the accessory styling shop tab. Creates character preview (+0x7C), queries accessory table sizes via StylingShop_GetSizeInTable, creates confirm button (+0x94, msg 0x1EF), and scrollable content panel (+0x80). |
| 0x008288C0 | 705 | CStylingShopBody__create_child_windows | Creates child windows for the body styling shop tab. Creates character preview (+0x7C), content panel (+0x80), and two navigation buttons (msg IDs 0x248 and 0x249) at positions (0x13, 0xF8) and (0xDC, 0xF8) respectively. |
| 0x00828B90 | 258 | CStylingShop__on_show | OnShow handler for the styling shop window. Records timestamp via timeGetTime, creates navigation buttons on first show (when flag 0x2C is 0), copies global appearance data (head/body/palette/accessories from DAT_01733510-01733540) into member fields, and calculates scaled window position offsets. 258 bytes. |
| 0x00828CA0 | 986 | CStylingShopSlotPanel__create_child_windows | Creates child windows for the styling shop slot panel. Creates slot background panel (vtable PTR_CStylingShopSlotPanel__dtor, msg 0xCC), two main slot buttons (+0x94/+0x98, msg 0xC9) and two secondary slot pairs (+0x9C/+0x9D and +0xA0/+0xA1, msg 0xE3/0xE2) with scaled positions. |
| 0x00829080 | 416 | CStylingShopColorPicker__create_child_windows | Creates child windows for the styling shop color picker. Creates 8 color palette entries (+0x80 through +0x9C) as input fields (msg 0xBD) spaced vertically. Initializes palette list and clears selection state. |
| 0x00829220 | 687 | CStylingShopCharPanel__create_child_windows | Creates child windows for the styling shop character panel (vtable PTR_CStylingShopCharPanel__dtor). Creates character preview (+0x7C) with background texture, content panel (+0x80, msg 0x1F0), initializes linked list for items. |
| 0x008294D0 | 1658 | CStylingShop__create_main_panels | Creates main panels for the styling shop. Creates: hair panel (msg 0xB15, cost 200z), cloth panel (msg 0xB0F, 0x1F1), hair/cloth preview panel (msg 0x247), accessory item list panel (msg 0xB11, 0x1F0), character preview (+0xB8), confirm button (+0xB4, msg 0xE0), and zeny display label (msg 0xAD5 with formatted amount). |
| 0x00829D10 | 535 | CStylingShop__render_character_preview | Renders the character preview in the styling shop. Gets player actor, reads appearance parameters (head style, palette, accessories, body), constructs a SpriteLayerNode for preview rendering at center of panel. |
| 0x00829F90 | 132 | CStylingShopColorPicker__render | Renders the color picker panel. Draws palette indicator sprites for each of 8 color slots, then renders the selection highlight and color value display. |
| 0x0082A030 | 92 | CStylingShop__render_background_and_title | Renders the styling shop background and title. Checks appearance match across all slots, clears background with full alpha, draws title text (msg 0xAFD), and renders a background texture from 0x0112f290. |
| 0x0082A0C0 | 25 | CStylingShop__check_close_condition | Checks if the styling shop should auto-close. Closes (toggles button state) when the character preview panel (+0x7C) is null and the window state (+0x30) is not 1 (active). 25 bytes. |
| 0x0082A0E0 | 39 | CStylingShopBasePanel__notify_parent | Notifies the parent window of a panel event. Sends message type 6 with the panel's message ID (+0x2C) and the two parameters to the parent via virtual method 0x94. |
| 0x0082A110 | 174 | CStylingShopButton__on_click | OnClick handler for styling shop buttons. Checks if button is not disabled and is the focused element. If button is a child, sends msg to parent via virtual 0x94. For standalone buttons, sends to global handler. Handles special msg IDs 0xB8 and 0x141 by calling sound stop. Updates state and plays click sound. |
| 0x0082A1C0 | 76 | CStylingShop__show_tooltip_if_empty | Shows a tooltip if the styling shop field +0xE4 is empty (==0). Displays tooltip text from DAT_0112fb20 at position offset (0, -20). |
| 0x0082A210 | 81 | CStylingShopButton__on_mouse_down | OnMouseDown handler for styling shop button. Checks if not disabled, is focused element, click is within bounds, and not already in pressed state (!=2). Sets state to pressed (2) and triggers redraw. |
| 0x0082A270 | 188 | CStylingShop__update_panel_visibility | Updates visibility of styling shop panels. Iterates the ordered map (+0xBC) of button/panel pairs. For cost=200 panels, sets visibility based on selection state. For msg 0x1F2/0x247 panels, updates highlight flag. Skips msg 0x1F0 panels. Triggers redraw on visible panels. |
| 0x0082A350 | 1836 | CStylingShop__save_and_load_like_list | Loads and saves the styling shop like/favorites list from/to 'savedata/LikeListInfoFile.lua'. Parses key:value pairs for characterName, slotNum, headPaletteNum, headStyle, bodyPaletteNum, bodyStyle, topAccNum, midAccNum, bottomAccNum. Rebuilds the file with current character appearance data for up to 2 presets. |
| 0x0082AAC0 | 2932 | CStylingShop__load_like_list_and_create_previews | Loads the like list file and creates preview slots for saved presets. Parses LikeListInfoFile.lua for character appearance data. For matching character names, creates preview panels with saved headStyle, bodyPaletteNum, accessory IDs. Uses StylingShop_GetSizeInTable and StylingShop_GetGoods Lua functions to look up accessory slots. |
| 0x0082B680 | 1226 | CStylingShop__get_payment_by_type | Gets payment cost for styling shop items by type (1-7). Calls StylingShop_GetPayment_by_goods Lua function for types 1-6, StylingShop_GetPaymentChangeCost for type 7. Switch cases correspond to: 1=hair, 2=head palette, 3=body palette, 4=body style, 5=accessory top, 6=accessory mid/bottom. |
| 0x0082BB70 | 3358 | CStylingShopColorPicker__render_items_and_prices | Renders items and prices in the color picker panel. Iterates color slots, validates each via validate_item_for_slot, draws price text (zeny or item cost) with color coding (0x5A5A84=valid, 0xBFBFBF=invalid). Accumulates total cost. If no items, shows category descriptions. Updates confirm button state based on overall validity (+0xAC flag). |
| 0x0082C890 | 1053 | CStylingShop__detect_and_register_appearance_changes | Detects and registers appearance changes in the styling shop. Compares current character panel values against global appearance data (DAT_01733528 for head palette, DAT_01733510 for head style, DAT_01733524 for body palette, DAT_01733530/01733534/0173352c for accessories). For each changed category, calls add_change_to_list with type ID (1-7). Uses StylingShop_GetSeqnumber_by_good to validate accessory changes. 1053 bytes. |
| 0x0082CCB0 | 183 | CStylingShopSlotPanel__on_message | Message handler for styling shop slot panel. Handles msg 6/0xD5 to toggle between the two slots (+0x22 and +0x23), setting the active preview flag (+0x90) to 0 or 1. Triggers redraw on the parent panel (+0x20). |
| 0x0082CD70 | 34 | CStylingShopColorPicker__on_message | Message handler for the color picker panel. Simply triggers redraw on msg type 6, delegates other messages to base handler. |
| 0x0082CDA0 | 854 | CStylingShopItemListPanel__on_item_select | Item selection handler for the accessory item list. On msg 0xBD, deselects all items then selects clicked one. Determines slot type (TopAccessory/MidAccessory/BottomAccessory) from field +0x120. On hover (msg 0x65), shows item tooltip. Checks Doram race via StylingShop_GetIsDoram_by_goods. |
| 0x0082D100 | 665 | CStylingShopHair__on_message | Message handler for hair styling tab. Handles msg 0x1EF (confirm): queries StylingShop_GetSizeInTable for available styles, iterates items to find selected hairstyle, checks if coloring is allowed via StylingShop_GetIsColoring_by_goods. Shows error 0xB12 for invalid selections. |
| 0x0082D3A0 | 419 | CStylingShopBody__on_message | Message handler for body styling shop tab. Handles msg 0x248/0x249 (prev/next body style navigation). Iterates the body style map to find adjacent entries. Uses CReportManager__map_lower_bound and iterator decrement/increment to navigate. |
| 0x0082D550 | 302 | CStylingShopAccessory__on_message | Message handler for accessory styling shop tab. Handles: 0xB9=close, 0xE2/0xE3=scroll slots left/right (0-7), 0x162/0x163=palette prev/next, 0x1C2/0x1C3=accessory prev/next, 0x164=try on (shows confirmation dialog 0xB03 or error 0xB01), 0x1EF=confirm purchase. |
| 0x0082D980 | 334 | CStylingShopCharPanel__on_message | Message handler for the character panel. Handles: 0xC9=delete slot (confirmation dialog 0xB00), 0xCC=select character slot (0 or 1), 0xE2/0xE3=forward scroll events to active panel's character preview. Updates character panel border texture based on selected slot. |
| 0x0082DC60 | 43 | CStylingShopItemListPanel__on_message | Message handler for item list panel. Triggers redraw on msg 6/0xBD (color selection), delegates others to base handler. |
| 0x0082DC90 | 34 | CStylingShopPreviewPanel__on_message | Message handler for preview panel. Triggers redraw on any msg type 6, delegates others to base handler. |
| 0x0082DCC0 | 837 | CStylingShop__on_message | Main message handler for the styling shop window. Handles: 0x1F0/0xC8/0x1F1/0x1F2/0x247=tab selection (switches active panel), 0xC9=close shop, 0xE0=confirm purchase (iterates all panels, calls build_change_packet for active ones). Checks Doram race eligibility for certain tabs. |
| 0x0082E020 | 63 | CStylingShopCharPanel__toggle_bottom_accessory | Toggles the bottom accessory in the character panel. If the item ID matches the currently equipped one (+0xA4), clears it. Otherwise sets the new accessory ID (+0xA4) and associated item index (+0xC4). |
| 0x0082E060 | 15 | CStylingShop__copy_appearance_to_preview | Wrapper that copies appearance data from saved preset to the active character preview panel via CStylingShopCharPanel__CopyAppearanceData. 15 bytes. |
| 0x0082E070 | 63 | CStylingShopCharPanel__toggle_mid_accessory | Toggles the mid accessory in the character panel. If the item ID matches the currently equipped one (+0xA0), clears it. Otherwise sets the new accessory ID (+0xA0) and associated item index (+0xC0). |
| 0x0082E0B0 | 1000 | CStylingShop__setup_scroll_panel_layout | Sets up the scroll panel layout based on panel type. For msg 0xC8 (color picker): 8 entries, page=6, row height 0x44. For msg 0x1F0/0x1F1 (item lists): 4 entries with 2 columns, spacing 0x69, row height 0x18. For msg 0x1F2/0x247 (preview): same as 0xC8 config. |
| 0x0082E4A0 | 63 | CStylingShopCharPanel__toggle_top_accessory | Toggles the top accessory in the character panel. If the item ID matches currently equipped (+0x9C), clears it. Otherwise sets new accessory ID (+0x9C) and item index (+0xBC). |
| 0x0082E4E0 | 25 | CStylingShop__set_change_flag_by_index | Sets a change tracking flag at +0x84+index. Index must be less than 5 (corresponds to: 0=head palette, 1=head style, 2=body palette, 3=top accessory, 4=mid accessory). 25 bytes. |
| 0x0082E500 | 463 | CStylingShop__toggle_accessory_slot | Toggles an accessory slot (top=0, mid=1, bottom=2) in the styling shop. Finds the active item list panel (msg 0x1F1), looks up item info, and toggles the corresponding slot in the character preview panel. Updates and redraws. |
| 0x0082E6D0 | 107 | CStylingShop__update_color_slot_state | Updates a color slot state in the styling shop. If enabled (param2==1), sets text color to gray-blue (0x5A5A84) and increments total price if the slot has content. If disabled, clears the active flag (+0xAC) and hides the slot. |
| 0x0082E740 | 79 | CStylingShopCharPreview__set_appearance_params | Sets appearance parameters on the character preview. Stores: slot (+0x88), head palette (+0x8C), head style (+0x90), body style (+0x94), body palette (+0x98), top acc (+0x9C), mid acc (+0xA0), bottom acc (+0xA4). |
| 0x0082E790 | 159 | CStylingShopBody__advance_to_next_style | Advances to the next body style in the styling shop. Uses map lower_bound on the current style (+0x90) and increments the iterator. Wraps around to the first entry if at the end. Requires at least 2 styles in the map (+0xCC > 1). |
| 0x0082E830 | 1201 | CStylingShop__query_table_size | Queries the StylingShop_GetSizeInTable Lua function to get the number of available items for a styling category. Used before navigating palette/style selections. |
| 0x0082ECF0 | 135 | CStylingShopBody__go_to_prev_style | Goes to the previous body style in the map. Uses map lower_bound and iterator decrement. Wraps around to the last entry if at the beginning. Requires at least 2 styles available (+0xCC > 1). |
| 0x0082ED80 | 1147 | CStylingShop__navigate_palette_or_style | Navigates palette or style selection. Queries StylingShop_GetSizeInTable and StylingShop_GetGoods. Checks if current selection is BodyPalette or DoramBodyPalette (special handling for palette=3). Adjusts sequence number bounds based on job type (4000+ ID check). Used by prev/next buttons. |
| 0x0082F4B0 | 165 | CStylingShop__add_change_to_list | Adds a change entry to the styling shop's change list (linked list). Allocates a 0xC-byte node, stores the change type value, inserts at the end of the list. Throws length_error if list reaches 0x15555555 entries. |
| 0x0082F720 | 618 | CEquipWnd__init_layer_priorities | Initializes layer priority mapping for the equipment window. Sets up priority values from global data, creates a red-black tree with entries for layer types 4-6 (headgear top/mid/low), calls GetLayerPriority and inserts into sorted tree. Used to determine rendering order of equipment sprite layers. |
| 0x0082F990 | 495 | CEquipWnd__show_item_info_by_type | Displays item information based on item type. Handles type 1 (normal items via FUN_00ddd5a0), type 2 (equipment via FUN_00ddc6f0), and type 0x18 (special items via FUN_00e08ee0). Copies item description and sends display command. For equippable items, sends packet 0x131 for multi-slot display; for normal items, sends 0x12e. |
| 0x0082FBA0 | 339 | CEquipWnd__render_character_sprite | Renders the character sprite preview in the equipment window. Reads appearance properties (head, body colors) from the equip window object, constructs a SpriteLayerNode at centered position, and calls CSpriteRenderer to render the sprite layers. Position is calculated as (width/2 + 1, height - 0x35). |
| 0x0082FD00 | 143 | CEquipWnd__render_item_sprite | Renders an item sprite at a given position. Takes item data, builds a 128-byte buffer, looks up the sprite resource, and calls render function. Used to display item icons in equipment slots. |
| 0x0082FD90 | 1455 | CEquipWnd__load_all_slot_items | Loads all equipment slot items (up to 10 slots). Iterates through each slot, calls load_slot_item_info to get item data, handles special/normal equipment types differently. For valid items, renders item sprites at calculated positions and builds item name strings. Also handles costume equipment rendering with adjusted positions. |
| 0x00830340 | 179 | CEquipWnd__get_slot_index_from_coords | Converts screen coordinates to equipment slot index. Returns slot 0-7 for main equipment area (x: 6-105, y: 22-height), slot 8 for first column, slot 9 for last row. Returns 0xF for special area (x: 112-169, y: 28-52). Returns -1 if coordinates are outside any slot. |
| 0x00830400 | 235 | CEquipWnd__get_item_info_at_coords | Gets item information at the given screen coordinates. Calls get_slot_index_from_coords to determine which equipment slot was hit, then calls load_slot_item_info to retrieve the item data for that slot. Returns the item info structure. |
| 0x008304F0 | 611 | CEquipWnd__load_slot_item_info | Loads item information for a specific equipment slot index. If slot is -1, clears item info. Otherwise, queries the item database using different functions depending on equipment mode (mode 2 uses FUN_00e31b20, others use FUN_00e31bb0). Copies the result into the output structure via CShopItem copy constructor. |
| 0x00830760 | 527 | CEquipWnd__create_navigation_windows | Creates navigation and helper windows for the equipment window. Allocates a CNavigationWnd (0x124 bytes), sets up buttons with sprite resources, positions at (0x51, 0x9B), and enables auto-resize. Also creates a secondary window (0xD0 bytes) positioned at (0xE0, 0x9B). Registers both windows with the parent system. |
| 0x00830970 | 190 | CEquipWnd__draw_with_timed_buttons | Draws the equipment window with timed button effects. Draws border, checks elapsed time since last action (DAT_0173a5b0). If within 10 seconds, swaps button sprites to highlighted versions. Renders centered text label with color that changes based on timer state (0x172842 normal, 0x899696 highlighted). |
| 0x00830A30 | 996 | CEquipWnd__draw_equipment_background | Draws equipment window background with swap UI. Selects background texture based on equip mode (mode 1: equipwin_bg2_cha, mode 2: equipwin_special). Loads the BMP resource and renders it. Then renders character sprite, equipment slot items, and item name labels. Also shows item count text if applicable. |
| 0x00830E20 | 280 | CEquipWnd__on_slot_click | Handles left-click on an equipment slot. Gets item info at click coordinates, checks if Ctrl key is held (GetAsyncKeyState VK_CONTROL). Normal click sends packet 0x12F for equip mode 2; Ctrl+click sends packet 0x131 for multi-slot equipment handling. |
| 0x00830F40 | 491 | CEquipWnd__on_slot_right_click | Handles right-click on an equipment slot. Gets item info at coordinates, dispatches item context action. Checks Shift key (GetAsyncKeyState VK_SHIFT) for special operations. Handles different window contexts (0x1EC=shop, 0x1EA=storage, 0x1ED=cart, 0x1EB=achievement reward, 0x1EE=another context) to perform appropriate item operations. |
| 0x00831210 | 968 | CShopWnd__build_item_tooltip_and_update_equip_highlight | CShopWnd: build item tooltip and update equip highlight |
| 0x008315E0 | 181 | CEquipWnd__on_slot_tooltip | Handles tooltip display for equipment slots. Gets item info at the given coordinates, then sends a tooltip display message (msg 0x18) to the UI tooltip window (window type 0xC) with the item data. |
| 0x008316A0 | 436 | CEquipWnd__on_button_message | Handles button messages for the equipment window. Button 0xB9: resets equip state and forwards to parent. Button 0xC9: opens status window (0x128). Button 0x1FC: attempts equipment swap with extensive validation (checks quest state, inventory, cart, ongoing operations) before sending packet 0x130. Shows error messages (IDs 0xBB9-0xBBB, 2999-3000) on failure. |
| 0x00831860 | 77 | CEquipWnd__set_slot_property | Sets a visual property for an equipment slot. Property IDs: 0=hair color (offset 0xC4), 2=body palette (offset 0xD0), 8=cloth color (offset 0xC8), 9=head style (offset 0xCC). Used to update the character preview appearance in the equipment window. |
| 0x008318D0 | 1280 | CEquipWnd__build_sprite_name_strings | Builds sprite name strings for equipment display. Generates head and body sprite filenames based on appearance settings (head style, body palette, hair/cloth colors). Uses multiple sprite name builder functions (FUN_00e13a20, FUN_00e13a90, FUN_00dde340, etc.) to construct path strings for each equipment layer. |
| 0x00831DD0 | 61 | CEquipWnd__get_row_direction_flag | Returns a direction flag based on Y position within equipment grid. Returns 1 if Y>250 (bottom area), otherwise maps Y/26 row to flags: row 1=2, row 2=4, row 0/-1=1, default=8. Used for equipment slot navigation. |
| 0x00844BE0 | 188 | CShopCategoryNode__ctor | Constructor for CShopCategoryNode. Calls UIWindowBase__ctor, sets vtable to PTR_CShopCategoryNode__scalar_dtor_01130bac, allocates a 0x54-byte self-referencing linked list head, and zeros out fields 0x2d-0x34. |
| 0x00844CA0 | 84 | CShopCategoryList__ctor | Constructor for CShopCategoryList. Calls CDialogWnd__full_ctor for base initialization, sets vtable to PTR_CShopCategoryList__scalar_dtor_01130ad0. |
| 0x00844D00 | 188 | CShopCategoryNode__ctor_alt | Alternate constructor for CShopCategoryNode. Calls UIWindowBase__ctor, sets vtable to PTR_CShopCategoryNode__scalar_dtor_alt_011309f8, allocates 0x54-byte linked list head, zeros fields 0x2d-0x34. |
| 0x00844DC0 | 67 | CShopCategoryNode__free_linked_list_head | Frees the 0x54-byte linked list head allocation at field offset +4, if non-null. |
| 0x00844E10 | 104 | CShopCategoryNode__destroy_and_free_linked_list_head | Destroys (via TownWarpInfo__dtor) and frees the 0x54-byte linked list head allocation at field offset +4, if non-null. |
| 0x00844F10 | 95 | CShopCategoryNode__dtor | Destructor for CShopCategoryNode. Sets vtable to PTR_CShopCategoryNode__scalar_dtor_01130bac, destroys all linked list nodes, then calls UIWindowBase__dtor. |
| 0x00844F70 | 71 | CShopCategoryList__dtor | Destructor for CShopCategoryList. Sets vtable to PTR_CShopCategoryList__scalar_dtor_01130ad0, then calls UIDialogBoxBase__destructor for base cleanup. |
| 0x00844FC0 | 95 | CShopCategoryNode__dtor_base | Base destructor for CShopCategoryNode; sets vtable, destroys linked list nodes, calls heap cleanup |
| 0x00845020 | 129 | CShopCategory__copy_assign | Copy assignment for CShopCategory; copies scalar fields, string, and sub-item vector |
| 0x008450B0 | 119 | CShopCategoryNode__scalar_dtor | Scalar deleting destructor for CShopCategoryNode; destroys then optionally frees 0xDC bytes |
| 0x00845130 | 99 | CShopCategoryList__scalar_dtor | Scalar deleting destructor for CShopCategoryList; destroys strings then optionally frees 0x120 bytes |
| 0x008451A0 | 119 | CShopCategoryNode__scalar_dtor_alt | Scalar deleting destructor for CShopCategoryNode variant; destroys linked list, optionally frees 0xD4 bytes |
| 0x00845220 | 1820 | CShopUI__validate_purchase_and_submit | Validates cash shop cart: checks weight limit (30000), validates items, builds summary tree, submits purchase |
| 0x00845940 | 164 | CShopUI__on_purchase_response | Handles purchase response packet (type 0x1F); validates item availability, routes to confirm or error |
| 0x008459F0 | 124 | CShopUI__on_purchase_result | Handles purchase result packet (type 0x20); success routes to confirm, failure shows error dialog |
| 0x00845A70 | 325 | CShopUI__draw_grid_background_A | Draws shop grid background with tab column separators and selection highlight for variant A |
| 0x00845BC0 | 312 | CShopUI__draw_grid_background_B | Draws shop grid background with tab column separators for variant B (no FUN_008d0920 pre-call) |
| 0x00845D00 | 95 | CShopUI__clear_item_slot_row_A | Clears a row of item slots in the shop grid at the given row offset (variant A) |
| 0x00845D60 | 95 | CShopUI__clear_item_slot_row_B | Clears a row of item slots in the shop grid at the given row offset (variant B) |
| 0x00845DC0 | 95 | CShopUI__draw_selected_row_highlight_A | Draws selection highlight rectangle on the currently selected category row (variant A) |
| 0x00845E20 | 95 | CShopUI__draw_selected_row_highlight_B | Draws selection highlight rectangle on the currently selected category row (variant B) |
| 0x00845E80 | 111 | CShopUI__get_category_index_at_pos_A | Returns linked list index of shop category at given x,y pixel position; -1 if out of bounds (variant A) |
| 0x00845EF0 | 111 | CShopUI__get_category_index_at_pos_B | Returns linked list index of shop category at given x,y pixel position; -1 if out of bounds (variant B) |
| 0x00845F60 | 418 | CShopUI__get_item_at_pos_A | Gets shop item info at x,y position in grid; outputs found flag and category data copy (variant A) |
| 0x00846110 | 422 | CShopUI__get_item_at_pos_B | Gets shop item info at x,y position in grid; outputs found flag and category data copy (variant B) |
| 0x008462C0 | 708 | CShopUI__get_item_detail_at_pos_A | Gets detailed item info at x,y including sub-items; uses itoa for item ID, returns category copy (variant A) |
| 0x00846590 | 773 | CShopUI__get_item_detail_at_pos_B | Gets detailed item info at x,y including sub-items; uses itoa for item ID, returns category copy (variant B) |
| 0x008468A0 | 62 | CShopUI__is_pos_in_grid_area_A | Returns true if x,y coords are within the shop item grid bounds (variant A) |
| 0x008468E0 | 62 | CShopUI__is_pos_in_grid_area_B | Returns true if x,y coords are within the shop item grid bounds (variant B) |
| 0x00846920 | 21 | CShopUI__check_weight_exceeds_limit | Returns true if combined weight exceeds 30000 limit |
| 0x00846940 | 1128 | CShopUI__build_item_price_tooltip | Builds tooltip string with item count and formatted price using msgstringtable entry 0xDE1 |
| 0x00846DB0 | 245 | CShopUI__find_item_in_cart_by_id | Searches completed cart entries by item ID via atoi; returns 1 if found, 0 if not |
| 0x00846EB0 | 254 | CShopUI__find_item_with_min_qty | Searches cart for item by ID with minimum quantity check; returns 1 if found with sufficient qty |
| 0x008481E0 | 311 | CShopUI__on_mouse_move | CShopUI mouse move handler. Checks if cursor is over item grid area (x>0x27, y>0x10). Calculates item row from Y position using 0x40 pixel rows. Updates hovered item index (field 0x33), refreshes if changed. Also does tooltip lookup via CShopUI__get_item_at_pos. |
| 0x00848320 | 374 | CShopUI__on_mouse_click | Mouse click handler for CShopUI sell tab. Calculates clicked row index from Y position (64px rows), updates selection (field 0x33). If item found at click position: checks if item has stock (field iStack_5c), shows error message 0xDE5 if no stock, otherwise dispatches item display message 0x1F to game mode. |
| 0x008484A0 | 750 | CShopUI__show_buy_item_tooltip | Handles hover tooltip for CShopUI buy tab items. Gets item at position, builds tooltip string with item name, quantity count, and formatted price using msgstringtable 0xDE1. Shows tooltip via CToolTipMgr with item color code. Caps display at 30 (0x1E) items with ellipsis. |
| 0x00848790 | 998 | CShopUI__show_cart_summary_tooltip | Builds and shows detailed item tooltip for CShopUI cart summary. Iterates cart items, looks up item info, builds multi-line tooltip with names and price info via build_item_price_tooltip. Also appends total weight/zeny from DAT_01389898. Shows tooltip at accumulated screen position. Caps at 30 items. |
| 0x00848B80 | 746 | CShopUI__show_sell_item_tooltip | Handles hover tooltip for CShopUI sell tab items. Gets item at position via get_item_at_pos_B, builds tooltip with item names, quantities, and per-unit prices using msgstringtable 0xDE1. Shows via CToolTipMgr with color code. |
| 0x00848E70 | 209 | CShopUI__on_right_click_show_item_detail_A | Handles right-click on shop item (variant A). Gets detailed item info via CShopUI__get_item_detail_at_pos_A, then opens item info window (type 0xC) and sends message 0x18 with item data to display the item detail panel. |
| 0x00848F50 | 209 | CShopUI__on_right_click_show_item_detail_B | Handles right-click on shop item (variant B). Gets detailed item info via CShopUI__get_item_detail_at_pos_B (alternate grid layout), then opens item info window (type 0xC) and sends message 0x18 with item data. |
| 0x00849030 | 69 | CShopUI__on_mouse_wheel | Mouse wheel handler for CShopUI. When scroll is enabled (field 0x34), calculates scroll step (capped at 3 rows) and sends scroll message (vtable 0x94, msg 7) to the scrollbar widget at field 0x30. |
| 0x00849080 | 69 | CShopUI__on_mouse_wheel_alt | Alternate mouse wheel handler for CShopUI. Identical logic to on_mouse_wheel: calculates scroll step capped at 3 rows and sends scroll message to scrollbar at field 0x30. |
| 0x008490D0 | 159 | CShopUI__on_scroll_drag | Updates scroll state for CShopUI variant A. If scroll widget (field 0xC0) exists, calculates scrollable range (total items - visible rows), configures scrollbar range/position, clamps scroll offset (field 0xC4), and triggers redraw. |
| 0x00849170 | 159 | CShopUI__on_scroll_drag_alt | Updates scroll state for CShopUI variant B. Same logic as on_scroll_drag: calculates scrollable range, configures scrollbar, clamps offset, triggers redraw. |
| 0x00849210 | 137 | CShopUI__OnMessage_buy_tab | Message handler for the CShopUI buy tab. Handles: case 6 (purchase confirm/cancel buttons 0xB8/0xB9), case 7/9/10 (scroll up/down/drag), case 0xe (window resize with 64-pixel row snapping), case 0x17 (refresh item list from CShopManager completed cart), case 0x26 (validate purchase: checks stock, zeny, weight, duplicates). Falls through to UIWindow__handle_button_click for unhandled messages. |
| 0x00849B30 | 131 | CShopUI__OnMessage_sell_tab | Message handler for the CShopUI sell tab. Handles: case 7/9/10 (scroll position updates), case 0xe (window resize with dual-axis snapping), case 0x17 (rebuild item list from cart data into linked list), case 0x26 (confirm sell: finds completed entry by ID, dispatches to sell confirmation window 0x156). Falls through to UIWindow__handle_button_click for unhandled messages. |
| 0x00849EF0 | 134 | CShopUI__vector_allocate_16byte_elements | Allocates a vector buffer for param_2 elements of 16 bytes each. Handles aligned allocation for buffers >= 0x1000 bytes. |
| 0x00849F80 | 172 | CShopUI__vector_destroy_0x4c_elements | Destroys all elements in a vector of 0x4c-byte CShopCategory structs by calling TownWarpInfo__dtor on each, then frees the buffer. |
| 0x0084A040 | 170 | CShopUI__list_push_back_category | Appends a new CShopCategory node (0x54 bytes) to the end of the linked list. Copy-constructs from param_2 data. Throws list_too_long if at max capacity. |
| 0x0084A0F0 | 103 | CShopUI__rbtree_destroy_nodes_recursive | Recursively destroys red-black tree nodes. For each node: recurse into left child (field 0x8), free the node (0x18 bytes), then continue to right child (field 0x0). |
| 0x0084A160 | 75 | CShopUI__rbtree_lower_bound | Red-black tree lower_bound search. Walks the tree comparing key at offset +0x10 against *param_3, returning the first node with key >= target value. |
| 0x0084A1E0 | 84 | CShopUI__ctor_quantity_dialog | Constructor for CShopUI quantity dialog variant. Calls CDialogWnd__full_ctor then sets vtable to CShopUI__update_item_quantity vtable. |
| 0x0084A240 | 263 | CShopUI__ctor | Full CShopUI constructor. Initializes UIWindowBase, creates two linked lists (0x18-byte sentinel nodes at fields 0x2d and 0x2f), one 0x0c sentinel (field 0x31), and zeroes fields 0x33-0x35. Sets vtable to CShopUI__update_item_quantity_alt. |
| 0x0084A350 | 67 | CShopUI__free_sentinel_node | Frees a 0x18-byte sentinel/header node at field +4 if non-null. Used during CShopUI destruction. |
| 0x0084A3A0 | 111 | CShopUI__rbtree_destroy_all | Fully destroys a red-black tree. Recursively destroys all child nodes via rbtree_destroy_nodes_recursive, then frees the sentinel/root node (0x18 bytes). |
| 0x0084A420 | 78 | CShopUI__free_sentinel_node_A | Frees a 0x18-byte sentinel/header node at field +4 if non-null. Variant A of CShopUI sentinel cleanup. |
| 0x0084A470 | 78 | CShopUI__free_sentinel_node_B | Frees a 0x18-byte sentinel/header node at field +4 if non-null. Variant B of CShopUI sentinel cleanup. |
| 0x0084A4C0 | 65 | CShopUI__dtor_base | CShopUI destructor (base level). Calls get_item_at_index with -1 to reset selection before cleanup. |
| 0x0084A510 | 71 | CShopUI__dtor_dialog | CShopUI destructor for dialog variant. Sets vtable to CShopUI, then calls UIDialogBoxBase destructor. |
| 0x0084A560 | 190 | CShopUI__dtor_full | CShopUI full destructor. Frees linked list at offset 0x31, calls base destructors for get_item_at_index and UIWindowBase. |
| 0x0084A620 | 223 | CShopUI__tree_insert_item | Inserts a key-value pair into the CShopUI's red-black tree (std::map). Allocates a 0x18-byte tree node containing the key and a null value pointer. Returns pointer to value field. |
| 0x0084A700 | 99 | CShopUI__scalar_deleting_dtor_dialog | CShopUI scalar deleting destructor (dialog variant). Sets vtable, calls UIDialogBoxBase dtor, optionally frees 0x120 bytes. |
| 0x0084A770 | 214 | CShopUI__scalar_deleting_dtor_full | CShopUI scalar deleting destructor (full variant). Frees linked list, calls base dtors, optionally frees 0xd8 bytes. |
| 0x0084A880 | 212 | CShopUI__hit_test | CShopUI hit test. Given (x, y) coordinates, determines which child widget or tab is under the cursor. Returns the hit widget pointer or NULL. Handles both normal mode and DAT_0173a514 mode differently. |
| 0x0084A9A0 | 3998 | CShopUI__OnCreate_tabs | CShopUI OnCreate for tab buttons. Creates tab buttons for status, skill, booking, party, guild, battle, quest, map, navigation, option, achievement, keyboard, attendance, adventurerAgency, repute, adventureguide, probability. Also creates scroll and special buttons. Lays out tabs in a 5-column grid. |
| 0x0084B940 | 980 | CShopUI__OnDraw | CShopUI OnDraw. Rebuilds the tab button map, manages tab visibility, draws background texture in DAT_0173a514 mode. Iterates over all tab items and shows/hides them based on current mode. |
| 0x0084BD40 | 552 | CShopUI__set_window_title | Sets the CShopUI window title based on window type. Calls Lua function GetBeHaviorOfWindow, then gets localized title from CMessageStringTable. Formats title with type-specific prefix for some window types (e.g., 0xc1). |
| 0x0084C260 | 294 | CShopUI__OnNotify | CShopUI OnNotify handler. Handles message types: 6=tab button click (toggles corresponding window visibility), 0x3c=timer (toggles DAT_0173a514 mode). Delegates to CEffect__notify_parent_of_state_change for unhandled messages. |
| 0x0084CBD0 | 129 | CShopWnd__constructor | CShopWnd constructor. Calls UIWindowBase base ctor, sets CShopWndBase then CShopWnd vtables, initializes fields 0x2d-0x2e and 0x31 to 0. |
| 0x0084CC60 | 106 | CShopWndBase__constructor | CShopWndBase constructor. Calls UIWindowBase base ctor, sets CShopWndBase vtable, initializes fields 0x2d-0x2e to 0. |
| 0x0084CCD0 | 84 | CShopWnd__destructor | CShopWnd destructor. Sets CShopWnd then CShopWndBase vtable, calls UIWindowBase destructor. |
| 0x0084CD30 | 71 | CShopWndBase__destructor | CShopWndBase destructor. Sets CShopWndBase vtable, calls UIWindowBase destructor. |
| 0x0084CD80 | 112 | CShopWnd__scalar_deleting_dtor | CShopWnd scalar deleting destructor. Calls CShopWnd destructor chain, optionally frees 200 (0xC8) bytes. |
| 0x0084CDF0 | 99 | CShopWndBase__scalar_deleting_dtor | CShopWndBase scalar deleting destructor. Calls CShopWndBase destructor, optionally frees 0xBC bytes. |
| 0x0084CE60 | 143 | CShopWnd__OnDraw_0084ce60 | CShopWnd OnDraw. Draws header bar with color (10,2) and title bar with color (2,2). |
| 0x0084CF00 | 197 | CShopWnd__OnCreate_0084cf00 | CShopWnd OnCreate. Creates text label widget (0xd8 bytes) with message 0x933, sets size 0x3e x 0xf, positions at (3, 0x16), adds hotkey label "Ctrl+G". |
| 0x0084CFD0 | 244 | CShopWnd__OnMessage | CShopWnd OnMessage. Creates text label if not exists, resets selection indices to -1, loads NPC sprite, calls init_buttons. |
| 0x0084D0D0 | 2071 | CShopWnd__draw_shop_info | CShopWnd draw shop info. Draws NPC shop details: name, level, class, currency icon, zeny amount, NPC sprite, item categories with selection highlighting. Renders two item list sections with colored backgrounds. |
| 0x0084D8F0 | 316 | CShopWnd__draw_background | CShopWnd draw background. Fills header bar, title bar, content area with colored rectangles, draws tiled bottom border. |
| 0x0084DA40 | 154 | CShopWnd__OnNotify | CShopWnd OnNotify. Handles messages: 6+0xc9=close window type 0xed, 0x22=set position from param, 0x3c=refresh and invalidate. Delegates to UIWindow__handle_button_click for other messages. |
| 0x0084DAE0 | 111 | CShopWnd__OnNotify_base | CShopWnd OnNotify base variant. Handles 0x22=set position, 0x3c=invalidate. Simpler version without the close-window logic. Delegates to UIWindow__handle_button_click for other messages. |
| 0x0084DB50 | 164 | CShopWnd__load_npc_sprite | CShopWnd load NPC sprite. Loads NPC sprite resource based on NPC sprite ID from DAT_016d42f4+0x58. Falls back to default sprite if loading fails. |
| 0x0084DC00 | 56 | CShopWnd__sync_position_to_parent | CShopWnd sync position to parent. Copies this window's position (x, y) and size (w, h) to the object at offset 0xb4. |
| 0x008CE2C0 | 1148 | CUIEquipWindow__create_item_slot_widget | Creates an item slot widget for the equipment window. Computes grid position from param_1 (row/col) with type-specific offsets from param_2 (slot type). Constructs UIItemSlotWidget, loads .spr and .act sprite files via path formatting, sets slot position and initializes slot data with ID based on param_2+9000. |
| 0x008CE770 | 226 | CUIEquipWindow__build_slot_list_by_level | Builds a list of equipment slot IDs based on the player's base level (param_2). Uses threshold arrays at 0113fe60/0113fec0 to determine which slots unlock at which level. Slots 1-9 unlock progressively; slot 0xD unlocks above level 100. |
| 0x008CE860 | 300 | CUIEquipWindow__initialize_equipment_slots | Initializes all equipment slots. Reads base level from global DAT_01733c88, builds slot list via build_slot_list_by_level, creates slot widgets via create_item_slot_widget for each slot, and sets window height proportional to slot count. |
| 0x008CE990 | 198 | CUIEquipWindow__setup_slots_from_data | Sets up equipment slots from a byte array. Clears existing slots, stores mode at offset 0x2d, reads param_3 bytes from param_2 buffer as slot type IDs, creates widgets for each, and resizes window based on count. |
| 0x008CEA60 | 353 | CUIEquipWindow__add_slot_entry_with_string | Adds a slot entry to the equipment window. Creates an std::string from param_2 (C-string), appends a 0x18-byte entry with the string to the vector at offset 0xc4, and appends an integer from param_3 to the vector at offset 0xd4. |
| 0x008CEBD0 | 300 | CUIEquipWindow__update_slot_timers | Updates slot animation timers. Checks elapsed time (>= 300ms) via timeGetTime, cycles through 0xc-byte timer entries at offset 0xe8, finds next inactive timer (flag at +8 == 0), activates it, and calls render update FUN_008d3230. |
| 0x008CED00 | 38 | CUIEquipWindow__measure_slot_text | Measures slot text width by calling CEffect__measure_text_total_width with font size 0xC. Handles SSO string (inline vs heap). Does not render -- only measures. |
| 0x008CED30 | 361 | CUIEquipWindow__clip_and_render_text_lines | Clips and renders text lines in the equipment window. Iterates through 0x1C-byte text entries in the last page, measures text width via CEffect__measure_text_total_width, finds the line containing x-offset param_1, splits/truncates it via CEffect__truncate_text_to_width, removes remaining lines after the split point. |
| 0x008CEEA0 | 47 | CUIEquipWindow__set_mode_and_refresh | Sets the equipment window mode to param_2, then calls virtual methods at vtable+0x94 (draw 0x23 frames) and +0x98 (refresh) to update the display. |
| 0x008CEED0 | 60 | CUIEquipWindow__handle_select_and_focus | Handles selection event in the equip window. Calls CTipBox__select_entry, sends event (6, 0x21F) via vtable+0x94, then focuses the window via CGameObject__focus_window_with_priority. |
| 0x008CEF10 | 191 | CUIEquipWindow__create_button_widget | Creates a basic button widget (0x120 bytes) with 3 visual states (normal/over/pressed). Allocates via operator_new_with_retry, initializes via UIDialogBox__ctor, loads textures via UIButtonWidget__set_texture_resolved from DAT_0113e310/0113e49c, sizes and positions it, and adds to parent window. |
| 0x008CEFD0 | 234 | CUIEquipWindow__create_button_at_position | Creates a button at a calculated position. Optionally uses parent width for x-offset. Loads button textures from DAT_0113e4cc/0113e504 data, positions button, sets ID 0xC9, assigns click handler, and adds to parent. |
| 0x008CF0C0 | 231 | CUIEquipWindow__create_close_button | Creates a close button. Similar to create_button_at_position but uses textures from DAT_010e2d58/010e2d8c, positions with x-offset -0xe from parent edge, sets ID 0xC9. |
| 0x008CF1B0 | 231 | CUIEquipWindow__create_expand_button | Creates an expand button. Loads 3 distinct textures from DAT_0111a3e0/0111a41c/0111a458, positions at x-offset -0x1c, sets ID 0x20B. |
| 0x008CF2A0 | 231 | CUIEquipWindow__create_action_button | Creates an action button with textures from DAT_0113e538/0113e568, positions at x-offset -0x1c, sets ID 0xCA. |
| 0x008CF390 | 1243 | CUIEquipWindow__create_named_button_3state | Creates a named button with 3 visual states. Builds sprite path from DAT_010e9958 prefix + param_4 name + state suffixes (normal/over/press). Loads textures for 3 button states. Returns null if param_4 is null. |
| 0x008CF870 | 1211 | CUIEquipWindow__create_named_button_2state | Creates a named button with 2 visual states. Similar to create_named_button_3state but uses shorter 2-char state suffixes. Optionally prepends DAT_010e9958 prefix based on param_6 flag. |
| 0x008CFD30 | 286 | CUIEquipWindow__show_item_tooltip | Shows an item tooltip for the slot at index param_2. Reads item ID from offset 0xd4 array, skips invalid IDs (0, 0xFE, 0xFF). Gets item class/level info, creates a tooltip window at 0xFA, displays item details with 0x4C and 0x18 draw commands. |
| 0x008CFE50 | 232 | CUIEquipWindow__create_radio_button_ex | Creates a radio button widget (0x10c bytes) with extended options. Allocates via FUN_0084f010, loads custom or default textures from param_11/12, positions it, sets ID, selected state, click handler, and stores extra params at offsets 0x39/0x3a. |
| 0x008CFF40 | 194 | CUIEquipWindow__create_radio_button | Creates a standard radio button widget (0x10c bytes). Uses default textures from DAT_010e1a50/010e1a70, positions at given coordinates, sets ID, selected state, click handler. |
| 0x008D0010 | 505 | CUIEquipWindow__handle_item_drop | Handles item drop onto an equipment slot. Checks window lock state (0xb4) and skill window (0x271b). Processes drop based on item type: type 1 = normal item, 0x11/0x12 = special items. Sends equip command (0x57, 0x13, or 0x131) to server via virtual dispatch. |
| 0x008D0230 | 153 | CUIEquipWindow__handle_item_double_click | Handles double-click on an equipment slot item. If window flag 0x33 is set, sends dismiss command (0x12). For type 1 items: if slot count is 1, triggers unequip (0x26); otherwise opens slot selection dialog (0xD/5). |
| 0x008D02D0 | 259 | CUIEquipWindow__handle_item_right_click | Handles right-click on an equipment slot. Checks skill window state. For type 4 items below ID 0x1BD: checks via FUN_00de0770, triggers unequip (0x26) or slot dialog (0xD/0x14). For type 6 items above 0x1BC: opens dialog (0xD/0x13). |
| 0x008D0E20 | 270 | CUIEquipWindow__render_character_sprite | Renders the character sprite preview in the equipment window. Constructs a SpriteLayerNode from the character's appearance data (job, head, colors, etc.) at offsets 0xf8-0x11c, renders it centered at half window width, then cleans up. |
| 0x008D0F30 | 737 | CUIEquipWindow__render_slot_page_items | Renders the paginated slot item list. Loads slot background textures (selected/unselected variants) from formatted paths. For each visible slot: draws background, renders name text (bold if selected) with shadow, and loads BMP icon from slot data. |
| 0x008D1B20 | 856 | CUIEquipWindow__render_inline_item_text_with_truncation | Renders inline item tooltip text with truncation support. Formats tooltip body, then for each text segment: draws with color coding (0xe0e0e0 for separators, rarity color for items, 0x5050fa for identified), truncating to fit available width. Returns final cursor x position. |
| 0x008D1E80 | 1252 | CUIEquipWindow__render_item_detail_panel | Renders the item detail panel showing item name, description, and stats (1252 bytes). |
| 0x008D2370 | 2341 | CUIEquipWindow__draw_full_window | Main draw function for the full equipment window. Renders all panels, slots, borders, character preview, and overlays (2341 bytes). |
| 0x008D2CE0 | 368 | CUIEquipWindow__draw_slot_background_row | Draws a single row of slot backgrounds in the equipment grid (368 bytes). |
| 0x008D2E50 | 428 | CUIEquipWindow__draw_item_icon_in_slot | Draws an item icon within a specific equipment slot position (428 bytes). |
| 0x008D3000 | 554 | CUIEquipWindow__draw_slot_grid_row | Draws a full row of the equipment slot grid with item icons and backgrounds (554 bytes). |
| 0x008D3230 | 509 | CUIEquipWindow__draw_animated_slot_effects | Draws animated effects (glow, highlight) on equipment slots during events like equipping (509 bytes). |
| 0x008D3430 | 645 | CUIEquipWindow__handle_mouse_event | Handles mouse events (click, hover, drag) on the equipment window. Processes input events from the global input buffer. Type 6 events generate interpolated particle positions. Other types generate full animation state entries (0x30 bytes each) with position, timing, and movement data. |
| 0x008D3720 | 807 | CUIEquipWindow__handle_command_message | Handles command messages (button clicks, close, tab switch) for the equipment window (807 bytes). |
| 0x008D3AB0 | 544 | CUIEquipWindow__build_scroll_packets | Builds scroll event packet data (packet IDs 0x542E and 0x542F) for the equipment window. Creates 6-byte packet entries and inserts them into the output vector. |
| 0x008D3CD0 | 1069 | CUIEquipWindow__build_keyboard_input_packets | Builds keyboard input packets for the equipment window. Creates packet 0x53FC (start), serializes tab data with message string 0x31A into packet 0x53FE, and ends with packet 0x53FD. |
| 0x008D4100 | 544 | CUIEquipWindow__build_slot_selection_packets | Builds slot selection update packets (packet IDs 0x5172 and 0x5173) for the equipment window. Creates 6-byte packet entries and inserts them into the output vector. |
| 0x008D4320 | 726 | CUIEquipWindow__build_slot_refresh_packets | Builds slot display refresh packets. Creates packet 0x55BE (start), then for each entry in the tab control (offset 0xBC-0xC0), serializes the string data into packet 0x55C1, and ends with packet 0x55BF. |
| 0x008D4600 | 1074 | CUIEquipWindow__build_equip_packets | Builds equip action packets. Creates packet 0x558C (start), then for each equipment entry in the item list (offset 0xC4), serializes the item string data into packet 0x558F, and ends with packet 0x558D. |
| 0x008D4A40 | 1069 | CUIEquipWindow__build_unequip_packets | Builds unequip action packets. Creates packet 0x5492 (start), serializes tab data with message string 0x5D into packet 0x5494, and ends with packet 0x5493. |
| 0x008D4E70 | 2149 | CUIEquipWindow__build_equip_packet_buffer | Builds a serialized equip packet buffer with multiple sub-packets (opcodes 0x5078-0x5081). Each sub-packet carries equip slot data: item string (0x507A), slot ID (0x507B), card count (0x507C), and individual card IDs (0x507D-0x5081). Returns a vector of serialized byte data. |
| 0x008D56E0 | 717 | CUIEquipWindow__build_item_info_packet | Builds a network packet for item info display (opcodes 0x574E/0x574F/0x5751). Iterates the linked list at this+0xCC to collect slot IDs, then wraps them into a variable-length packet via build_network_packet_from_vector. |
| 0x008D59B0 | 717 | CUIEquipWindow__build_item_stats_packet | Builds a network packet for item stats display (opcodes 0x571C/0x571D/0x571F). Same structure as build_item_info_packet but with different opcodes. Collects slot IDs from the linked list at this+0xCC. |
| 0x008D5C80 | 1069 | CUIEquipWindow__build_tab_open_packet | Builds a tab-open packet (opcodes 0x5460/0x5461/0x5462). Serializes tab control data to a buffer, gets message text at index 0x332, creates a serialized buffer via CItemInfoMgr, and wraps in begin/end packet markers. |
| 0x008D60B0 | 1069 | CUIEquipWindow__build_tab_close_packet | Builds a tab-close packet (opcodes 0x5528/0x5529/0x552A). Same structure as build_tab_open_packet but with close opcodes and message text index 0x179. |
| 0x008D64E0 | 1069 | CUIEquipWindow__build_equip_state_packet | Builds an equip state update packet (opcodes 0x54F6/0x54F7/0x54F8). Serializes tab data, gets message text at index 0x5E, and creates a serialized buffer for equip state confirmation. |
| 0x008D6910 | 1067 | CUIEquipWindow__build_equip_sync_packet | Builds an equipment sync packet (opcodes 0x5654-0x5657). Iterates the linked list at this+0xCC, converts each node's string field (at node+0x34) to integer via atoi, and emits a 0x5657 sub-packet per entry. Also includes a 0x5656 packet with the short value at this+0xF0. |
| 0x008D6D40 | 968 | CUIEquipWindow__build_slot_layout_packet | Builds a slot layout packet (opcodes 0x57E4/0x57E5/0x57E7/0x57E8). Iterates the string array at sub-object+0xC0 and copies each entry as a 0x57E7 variable-length sub-packet. Includes a 0x57E8 trailing int from this+0xD4. |
| 0x008D7110 | 775 | CUIEquipWindow__build_tooltip_packet | Builds a tooltip display packet (opcodes 0x54C4/0x54C5/0x54C6). The 0x54C6 packet carries a single byte from this+0xC0 (tooltip type/mode flag). |
| 0x008D7420 | 56 | CUIEquipWindow__get_slot_ids_to_buffer | Copies all slot IDs from the linked list at offset 0xcc into a uint16 buffer. Iterates the circular list, reading 2-byte values at node+12 (offset 3 dwords). Returns true if buffer is non-null. |
| 0x008D7460 | 259 | CUIEquipWindow__rbtree_find_or_insert | Searches the red-black tree at offset 0x7fc0 for a node with key param_2. If not found, allocates a 0x18-byte node, inserts it via Insert_node, and initializes it. Returns the value at node offset 5 (dword). |
| 0x008D76B0 | 215 | CUIEquipWindow__hit_test_card_slot | Hit-tests a card slot position. param_2 is x-coordinate (divided into 25px-wide slots), param_3 is y-coordinate (checked against window bottom - 50). Returns slot index 0-3 based on refinement level/enchant type, or -1 if no hit. |
| 0x008D7790 | 1328 | CUIEquipWindow__build_sprite_path_string | Builds a sprite file path string from a slot type ID. Converts type to folder/filename for loading .spr/.act resources (1328 bytes). |
| 0x008D7CC0 | 468 | CUIEquipWindow__extract_colored_text_segments | Extracts colored text segments from a string containing embedded color codes. Uses CTextVertex__find_color_code_offset to locate codes, then parse_color_code_to_rgb and find_color_code_in_string to split the text. Copies each segment with its color prefix into output buffers. Returns the concatenated colored text. |
| 0x008D7EA0 | 143 | CUIEquipWindow__hit_test_grid_cell | Hit-tests a grid cell in the equipment grid. Checks bounds (x: 3 to width-14, y: 33 to max based on row count). Iterates linked list at 0xcc to find the cell at the grid position (32px per row), skipping items before the visible page. |
| 0x008D7F30 | 93 | CUIEquipWindow__get_item_desc_at_index | Gets an item description at the specified linked list index. Delegates to get_shop_item_by_index with the list at offset 0xbc. |
| 0x008D7F90 | 82 | CUIEquipWindow__hit_test_page_slot | Hit-tests a page slot in the slot list view. Checks y-range [0x3a, 0x96] across up to 4 slots (0x44 px spacing, starting at x=6, width 0x40). Returns the absolute slot index (page offset + local index). |
| 0x008D7FF0 | 1187 | CUIEquipWindow__word_wrap_item_text | Word-wraps item description text into fixed-width lines. Iterates through input text segments (string array via param_3) character-by-character using CharNextExA for multi-byte support. Measures running text width via CEffect__measure_text_total_width and splits at the character boundary when width exceeds param_1. Outputs wrapped segments as (int, string) pairs into param_4 vector. |
| 0x008D84A0 | 220 | CUIEquipWindow__build_item_desc_by_mode | Builds an item description for the item at index param_3. Returns empty desc if index is -1. Dispatches based on mode (offset 0xf0): mode 0 uses FUN_00ddc6f0/00ddfac0, mode 1 uses FUN_00e08ee0/00e0aad0, with lock flag at 0xb4 selecting the variant. |
| 0x008D8580 | 326 | CUIEquipWindow__get_item_desc_from_slot_pos | Gets an item description from slot position coordinates. Checks if y is within the slot area (this+0xF4 + 0x11 to +0x91), maps x to column indices (left column or right column), and y to row indices (0x1A spacing). Special center area (0xF) for the middle x-region. Delegates to build_item_desc_by_mode with the computed slot index. |
| 0x008D86D0 | 276 | CUIEquipWindow__get_item_desc_from_list_pos | Gets an item description from a list position given x/y coordinates. Divides y by the row height at this+0x112 to get a row index. Uses x to select between two linked lists (this+0xE0 for x < 0x118, this+0xE8 otherwise). Iterates the list to the calculated row and copy-constructs the item from node+2. Returns empty desc if out of bounds. |
| 0x008D87F0 | 252 | CUIEquipWindow__get_shop_item_by_index | Gets a shop item from the linked list at offset 0xcc by iterating to index param_3. Copy-constructs the item data from node+2 into the output. If index exceeds list size, creates an empty item and sets param_4 flag to 0. |
| 0x008D88F0 | 1170 | CUIEquipWindow__get_item_desc_from_grid_pos | Gets an item description by hit-testing a position against the equipment grid. The grid has three column regions: left (x < 0xFC), middle (0xFC-0x1BC), and right (>= 0x1BC). Each region has up to 4 rows. Calculates the item index from grid position and page offset, then returns a copy-constructed CShopItem or empty desc if out of bounds. |
| 0x008E0A20 | 2016 | CEquipWnd__create_tab_buttons_and_text | Creates the equipment window's tab buttons and text widgets. Sets up click handler 0x17, initializes 5 state flags to 0 at this+0x33..0x37. Creates 3 button widgets at this+0x2D with button IDs 0xB8/0xE6/0xB9 and sprite names from resource references. Creates a UITextWidget at this+0x30 (max length 0xD, color 0xE8E8E8) and a checkbox widget at this+0x46. Sets this+0x23 to 600 (timer interval). |
| 0x008E1210 | 1656 | CEquipWnd__create_text_label_and_buttons | Creates a UITextWidget (0x11C bytes) at this+0xC4 for display text with max length 0x14, color (0xF2,0xF2,0xF2), positioned at (0xF0, 0x10). Creates 2 button widgets (0x120 bytes each) with 3 sprite states and cancel button sprites, positioned using layout arrays. Sets this+0x8C to 0xB8. |
| 0x008E1890 | 3116 | CEquipWnd__create_equip_slot_widgets | Creates the equipment window's slot display widgets. Sets this+0x1F8 to 0xC (equip type). Creates a UIColoredScrollListBase at this+0x1B0 with picked background color. Creates a view button at this+0x1B4 with btn_view sprites. Creates 2 UIItemSlotWidget instances at this+0x1B8 with equipment icons (resource IDs 0x50E-0x50F, equip IDs 0x11F-0x120). Creates a UITextLabelWidget at this+0x204 and an optional info widget at this+0x210. Creates an expand button at this+0x214 with ID 0x157. |
| 0x008E24C0 | 125 | CEquipWnd__init_shadow_equip_type | Initializes the equipment window for shadow equipment type. Calls create_equip_slot_widgets for base setup, hides the widget at this+0x208, sets this+0x1F8 to 0xEA (shadow equip type). Picks a custom background color via CColorPicker(0x1E, 6) and applies it to the scroll list at this+0x1B0 with full opacity. |
| 0x008E2540 | 74 | CEquipWnd__init_item_list_with_sprite | Initializes an item list window with a sprite background. Calls FUN_008e2590 for full widget setup, loads title text from string resource 0x20A, and clears this+0xF4 to 0. |
| 0x008E2590 | 2803 | CEquipWnd__create_sprite_list_and_buttons | Creates a sprite-based item list with buttons. Loads title from resource 0x209, initializes control fields (this+0xB8..0xC8). Creates a UISpriteWidget (0xB4 bytes) at this+0xB4 for item display. Calls FUN_008f64b0 for layout setup. Creates 1 close button with 3 sprite states (cancel sprites). Creates a second set of cancel buttons in a separate pass. Sets this+0x8C to 0xB8. |
| 0x008E3C80 | 73 | CEquipWnd__reset_title_text_alt | Resets the title text for the equipment window. Clears flag at this+0xE4, loads string resource 0x20F, sets it as display text, and clears the content display. Identical behavior to CItemListWnd__reset_title_text but for a different widget context. |
| 0x008E3CD0 | 1700 | CEquipWnd__create_buttons_and_colored_scroll_list | Creates 2 button widgets (cancel sprites) with 3 states each, positioned using layout arrays, and a UIColoredScrollListBase at this+0xB4. Picks background color via CColorPicker(2,2), sets the scroll list's color, configures a timer callback with string resource 0, and sets this+0x8C to 0xB8. |
| 0x008E4390 | 1497 | CEquipWnd__render_equip_list_with_tabs | Renders the equipment list with tab navigation (1497 bytes). Handles tabbed equipment categories and item display. |
| 0x008E4970 | 1497 | CEquipWnd__render_equip_list_alt | Alternative equipment list renderer (1497 bytes). Similar to render_equip_list_with_tabs with different layout. |
| 0x008E4F50 | 1369 | CEquipWnd__render_equip_detail_view | Renders the equipment detail view (1369 bytes). Shows detailed item stats, description, and options for equipped items. |
| 0x008E54B0 | 1388 | CEquipWnd__render_equip_summary_view | Renders the equipment summary view (1388 bytes). Shows a compact overview of all equipped items. |
| 0x008E5A20 | 1662 | CEquipWnd__render_equip_slots_display | Renders the equipment slots display (1662 bytes). Draws equipped item icons, slot backgrounds, and highlights for the equipment window. |
| 0x008E60A0 | 2706 | CEquipWnd__render_extended_equip_display | Renders the extended equipment display with shadow/costume slots (2706 bytes). Handles multi-panel equipment views. |
| 0x008E6B40 | 1499 | CEquipWnd__render_costume_equip_display | Renders the costume equipment display (1499 bytes). Shows costume slot items and their equipped states. |
| 0x008E7130 | 1318 | CEquipWnd__render_shadow_equip_display | Renders the shadow equipment display (1318 bytes). Shows shadow gear slots and their equipped items. |
| 0x008E7660 | 1612 | CEquipWnd__render_mount_display | Renders the mount/riding equipment display (1612 bytes). Shows mount-related equipment slots. |
| 0x008F3860 | 102 | CEquipWnd__on_click_close_and_sync_position | Click handler for the equip window close. Only acts if param_2 > 0x3C and param_3 < 0x11. Calls FUN_008ba1e0 to close. For equip type 0xC, syncs position to DAT_014578a0 (cart/falcon widget). For equip type 0x52, syncs position to DAT_014578a4 (mount widget). |
| 0x008F3B70 | 44 | CEquipWnd__on_drag_sync_mount_position | Drag handler that syncs mount widget position. Calls FUN_008ba2c0 for base drag handling, then if DAT_014578a4 (mount widget) exists, copies this window's position (this+0x38, this+0x3C) to the mount widget. |
| 0x008F3C20 | 44 | CEquipWnd__on_drag_sync_cart_position | Drag handler that syncs cart/falcon widget position. Calls FUN_008ba2c0 for base drag handling, then if DAT_014578a0 (cart widget) exists, copies this window's position to it. |
| 0x008F4F80 | 59 | CEquipWnd__update_tooltip_timer | Updates a tooltip display timer. If this+0x1C0 timer is set, checks if 100ms has elapsed via timeGetTime. If so, calls the widget at this+0x1BC's repaint method (vtable 0x98) and resets the timer. |
| 0x008F6640 | 107 | CEquipWnd__hide_text_widget_and_notify | Hides the text widget and notifies related windows. If this+0x33 is set and this+0x30 text widget exists, unregisters it via FUN_00aa9b40(0), moves it off-screen to (0x81, 500), clears the pointer. Also notifies DAT_01457848 with event 0x36 if it exists. Triggers repaint. |
| 0x00973AB0 | 359 | CShopWnd__get_item_at_grid_pos_tab1_00973ab0 | Gets shop item at grid position (param_3, param_4) for tab 1. Iterates linked list at this+0xe8, skips first (rows*cols_per_page) items, uses atoi on item string ID, checks availability via FUN_00e1df60, returns copy-constructed CShopItem at matching grid index. |
| 0x00973C20 | 311 | CShopWnd__get_item_at_grid_pos_tab2_00973c20 | Gets shop item at grid position for tab 2 (x offset 0x14). Same logic as tab1 variant but with different coordinate range check (param_3 - 0x14 < 0x20). |
| 0x00973D60 | 311 | CShopWnd__get_item_at_grid_pos_tab3_00973d60 | Gets shop item at grid position for tab 3 (x offset 0x14). Identical to tab2 variant. |
| 0x00973EA0 | 311 | CShopWnd__get_item_at_grid_pos_tab4_00973ea0 | Gets shop item at grid position for tab 4 (x offset 0x28). Same linked list iteration and grid index matching as other tab variants. |
| 0x00973FE0 | 327 | CShopWnd__get_item_at_grid_pos_tab5_00973fe0 | Gets shop item at grid position for tab 5 (x range check param_3 >= 0x28 and < this+0x14 - 0x14). Uses wider bounds validation. |
| 0x00974130 | 339 | CShopWnd__get_item_at_grid_pos_search_tab_00974130 | Gets shop item at grid position for search results tab. Uses linked list at this+0x148, different grid layout (0x2a row height), checks x < 0x23 for valid column. Items per page from this+0x138 * this+0x13c. |
| 0x00974910 | 1842 | CShopWnd__init_buy_ui_00974910 | Initializes the buy shop window UI. Creates text widget at this+0xb4 for displaying zeny amount, editable text widget at this+0xb8 for search/input, and a dialog button with cancel texture. Sets up button textures (normal/hover/pressed) from resource paths, positions widgets relative to window size. |
| 0x00975050 | 3187 | CShopWnd__init_cancel_buttons_00975050 | Initializes shop window with text widget at this+0x100, editable text widgets, label widget with checkbox texture, scrollbar, and two dialog buttons (cancel). Creates button textures with 3 states (normal/hover/pressed), positions relative to window dimensions. Sets up page count from param_3. |
| 0x00975CD0 | 3011 | CShopWnd__init_exchange_buttons_00975cd0 | Initializes shop window with exchange + cancel buttons. Creates editable text widget, label, checkbox, scrollbar, and two dialog buttons (btn_exchange and btn_cancel). Uses btn_exchange_a/b textures for the first button. Otherwise very similar to the cancel-only variant. |
| 0x009768A0 | 3175 | CShopWnd__init_sell_buttons_009768a0 | Initializes shop window with sell + cancel buttons. Creates editable text widget with "Total: %d Zeny" format, label, checkbox, scrollbar, and two dialog buttons (btn_sell and btn_cancel). Uses btn_sell_a/b textures. Sets up page count from param_3. |
| 0x00977510 | 665 | CShopWnd__init_simple_ui_variant1_00977510 | Initializes a simple shop window variant with editable text widget, label with checkbox texture, dialog button with auto-resize, scrollbar. Creates page rows from height calculation. Sets up radio button selection and scrollbar orientation. |
| 0x009777B0 | 665 | CShopWnd__init_simple_ui_variant2_009777b0 | Identical to variant1 at 00977510. Initializes simple shop window with editable text, label/checkbox, dialog button, scrollbar. Same layout and widget creation logic. |
| 0x00977A50 | 486 | CShopWnd__init_scrollbar_and_search_00977a50 | Initializes shop window scrollbar at this+0xc0, editable text widget at this+0x118 for search, and label widget at this+0x114 with checkbox. Creates close button at this+0xfc via CUIEquipWindow__create_close_button. |
| 0x00977C40 | 450 | CShopWnd__init_scrollbar_and_label_00977c40 | Initializes shop window scrollbar at this+0xc0, editable text widget at this+0x114 for search, and label widget at this+0x110 with checkbox. Similar to 00977a50 but without close button, and stores widgets at different offsets. |
| 0x009792B0 | 1646 | CShopWnd__init_full_ui_with_tabs_009792b0 | Initializes full shop window UI with tabs. Creates: label+checkbox at this+0x2f, scrollbar at this+0x30, button widgets at this+0x3d/0x3e/0x3f (Ctrl_E/Alt_E shortcuts), tab widget at this+0x46 with 4 tabs, two checkbox widgets for settings (this+0x45, this+0x47), dialog buttons (this+0x48, this+0x49, this+0x4b) with various textures. Computes page layout from param_2/param_3. |
| 0x00979920 | 3394 | CShopWnd__init_close_button_ui_00979920 | Initializes shop window UI with close button. Optionally creates text at this+0x3f if this+0x40 is set. Creates editable text, label+checkbox, scrollbar, dialog button at this+0x41 with conditional text based on this+0x40. Creates one close button (btn_close) with 3 texture states. Sets up page layout. |
| 0x0097A670 | 906 | CShopWnd__init_confirm_cancel_ui_0097a670 | Initializes shop confirm/cancel UI. Creates editable text at this+0xb4 with word-wrapped text, two dialog buttons at this+0xc4 and this+0xc8 with different textures (confirm/cancel), editable text at this+0xb8 for input, and another text at this+0xbc/0xc0. |
| 0x0097AA00 | 4600 | CShopWnd__init_sell_or_cancel_ui_0097aa00 | Initializes shop window with either sell or cancel button set based on this+0x42 flag. Creates "Total: %d Zeny" label, editable text with conditional text, and two dialog buttons with either btn_sell or btn_cancel textures. Large function with extensive string/button setup and SEH cleanup. |
| 0x0097BC00 | 292 | CShopWnd__init_optional_text_and_pages_0097bc00 | Optionally initializes text widget at this+0x41 if this+0x43 flag is set (using localized string 0x6c7). Calculates page rows from (param_3 - this+0x46 - 0x11) / 32. Sets up grid layout parameters and calls virtual method 0x94. |
| 0x0097BD30 | 700 | CShopWnd__init_inventory_ui_0097bd30 | Initializes inventory-style shop window. Creates editable text with "Num: %d/%d Weight: %d/%d" format from global inventory stats, label+checkbox, scrollbar, and close button (Alt_W shortcut). Sets column and row counts from param_2/param_3. Hides the stats text initially. |
| 0x0097BFF0 | 567 | CShopWnd__init_mode_dependent_ui_0097bff0 | Initializes shop window with mode-dependent behavior. Creates editable text with text chosen by this+0x3d mode (1=0x6c5, 2=0x6ca, else=0xe8). Creates label+checkbox, scrollbar. After layout, calls different init functions based on mode: mode 1 -> FUN_00dfc170, mode 2 -> FUN_00dfc330, else checks condition and calls FUN_00dd8cc0. |
| 0x0097C230 | 4070 | CUIShopWindow__create_list_widgets | Creates UI child widgets for a shop/vending list window. Creates text label widget, scrollbar, text labels per row for item listing (up to 13 rows compact or 5 rows detailed). Creates cancel/close buttons with texture states. Handles both compact (type 0) and detailed (type != 0) layouts. |
| 0x0097D300 | 4313 | CUIShopWindow__create_detail_widgets | Creates detailed UI widgets for a shop window variant. Sets up text label, scrollbar, use/close buttons with textures, then creates 3 columns of grid buttons (equip slots/item slots) with texture states. Calculates grid dimensions from window height. |
| 0x0097E3F0 | 926 | CShopWnd__draw_item_grid_basic_0097e3f0 | Draws basic item grid for shop window. Renders border tiles, fills background color, draws column separators, then iterates item linked list rendering each item sprite (with or without count based on this+0xb4), and discount badge sprites if applicable. |
| 0x0097E7A0 | 1591 | CShopWnd__draw_item_grid_with_prices_0097e7a0 | Draws item grid with price display. Similar to basic grid draw but adds: selection highlight for selected item, item tooltips with wrapping, price text (shows "N > Price Unit" format when count differs from max), discount badges, and bottom price labels with separator bar when this+0xfc is set. |
| 0x0097EDE0 | 1078 | CShopWnd__draw_item_grid_with_tooltips_0097ede0 | Draws item grid with inline tooltip text. Renders borders, background, column separators, then iterates items drawing sprites with count, inline tooltips via CItemDesc__render_inline_tooltip_text, selection highlights, and discount badges. |
| 0x0097F220 | 1392 | CShopWnd__draw_item_grid_with_zeny_prices_0097f220 | Draws item grid with Zeny price display. Similar to price variant but formats prices with "Zeny" suffix (e.g., "%s Zeny" or "%d > %s Zeny"). Includes selection highlights, item sprites with counts, tooltips with wrapping, and discount badges. |
| 0x0097F790 | 1110 | CShopWnd__draw_item_grid_offset_layout_0097f790 | Draws item grid with offset layout. Uses this+0x104 vertical offset for border calculations (height = this+0x18 - this+0x104 - 0x11). Similar to tooltip variant but with adjusted grid dimensions. Checks this+0x100 for selection highlight instead of 0xf8. |
| 0x0097FBF0 | 1865 | CShopWnd__draw_item_grid_with_currency_0097fbf0 | Draws item grid with currency display. Most complete variant: offset layout, selection highlights, price with configurable currency label (Point/Zeny/custom based on DAT_016d3b10 mode), discount badges. Shows currency totals at bottom when this+0x10c is set, with before/after amounts formatted via FUN_00e08c70. |
| 0x00980340 | 712 | CShopWnd__draw_item_list_with_label_v1_00980340 | Draws shop item list with tooltip and bottom label. Uses full-width layout (slot background type 1), background fill, column separators, item sprites with counts and tooltips. Displays string from this+0x124 at bottom. |
| 0x00980610 | 712 | CShopWnd__draw_item_list_with_label_v2_00980610 | Nearly identical to v1 at 00980340. Draws shop item list with tooltip and bottom label. Displays string from this+0x120 (different offset than v1's 0x124). |
| 0x009808E0 | 1648 | CShopWnd__draw_item_grid_with_preview_009808e0 | Draws item grid with preview panel. When this+0x190 (preview flag) is off, draws green preview box with decorations, sprite, and text labels. When preview is active, draws standard item grid with tooltips, plus currency amount display at bottom comparing current vs max values (red if over limit). |
| 0x00980F50 | 2075 | CUIShopWindow__draw_grid_view | Draws shop window in grid/icon view mode. Renders slot backgrounds, border decorations, item grid cells (32x32), item sprites with counts, card slot indicators, weight display text. Handles special rendering for type==3 mode with alternate background sprites and card overlay icons. |
| 0x00981770 | 538 | CShopWnd__draw_item_grid_with_timer_00981770 | Draws basic item grid then overlays a countdown timer. Uses timeGetTime to calculate remaining time from this+0x114/0x110 deadline. Formats as days:hours:minutes:seconds. Shows timer in red (0xff) when under ~60 seconds remaining. Position depends on this+0x100 mode. |
| 0x009819C0 | 1300 | CUIShopWindow__draw_list_view | Draws shop window in list view mode. Renders slot backgrounds, border lines, row selection highlight, item sprites with card slot counts, item descriptions, and Zeny prices. Shows price ranges (min->max) when buy/sell prices differ. Uses linked list of items from offset 0xe8. |
| 0x00981EE0 | 2270 | CUIShopWindow__draw_list_view_with_timer | Draws shop window list view variant with timer support. Renders slot backgrounds, border sprites, item list with prices (Zeny), card slot indicators, item descriptions. Includes countdown timer display for timed shop events (shows seconds vs minutes format). Handles view mode 0 (icon) and mode 1 (price display). |
| 0x009827C0 | 691 | CUIShopWindow__draw_weight_and_zeny_footer | Draws the bottom footer area of the shop window showing weight and Zeny information. Renders weight icon + current/max weight values (turns red when over limit) and Zeny icon + current/max Zeny values (turns red when insufficient). Uses item grid basic drawing as background. |
| 0x00982A80 | 2670 | CUIShopWindow__draw_buy_sell_view | Draws the buy/sell shop window view with quantity input fields. Renders slot backgrounds, item rows with editable text amounts, validates input as numeric. For sell mode (0x130!=0), shows additional item descriptions, weight info, Zeny totals. Displays item sprites with card slot indicators. Parses quantity from text widgets, formats with number separators. |
| 0x009834F0 | 89 | CShopWnd__draw_header_banner_009834f0 | Draws shop window header banner. Loads and renders a sprite at (0,0), then draws localized text (string 0xb87) at (0,5) spanning the window width, white color, font size 0xc. |
| 0x00983F80 | 98 | CShopWnd__on_mouse_move_tooltip_a0_00983f80 | Mouse move handler for shop window. If global DAT_014576e4 is set and tooltip window DAT_014578d4 exists, calls virtual method 0x64 (base handler), updates tooltip position via FUN_00a82f80 with size 0xa0, then forwards to tooltip's method 0x28. |
| 0x00983FF0 | 95 | CShopWnd__on_mouse_move_tooltip_16_00983ff0 | Mouse move handler variant. Same as 00983f80 but uses tooltip DAT_014578d0 and size 0x16. |
| 0x00984050 | 107 | CShopWnd__on_mouse_move_tooltip_a1_00984050 | Mouse move handler variant. Uses tooltip DAT_014578e0 and size 0xa1. Additionally checks this+0x3e before processing. |
| 0x009840C0 | 104 | CShopWnd__on_mouse_move_tooltip_18_009840c0 | Mouse move handler variant. Uses tooltip DAT_014578dc and size 0x18. Also checks this+0x3e before processing. |
| 0x00984170 | 247 | CShopWnd__on_click_item_handler_00984170 | Click handler for shop item grid. If y < 0x11, triggers header action. Checks Shift key state. Gets clicked item via get_item_at_grid_pos_tab5. Handles item type-based actions via switch: types 0-2 (buy with confirmation dialog), 4-15 (equip/use with Ctrl+click for linking), 6 (action 0x7b), 10/16/17/19 (action 0x57), 18 (sell confirmation dialog). |
| 0x009844E0 | 178 | CShopWnd__on_click_vending_item_009844e0 | Click handler for vending window items. If y < 0x11, handles header click. Otherwise gets item at this+0x46 index via UIVendingWnd__get_item_at_index, validates item data (fields must be non-zero), then triggers action 0x3a with item data. |
| 0x00984700 | 467 | CShopWnd__on_hover_item_tab1_show_tooltip_00984700 | Hover handler for tab 1 items. Updates selected item index at this+0x3e via hit test, triggers redraw on change. Gets hovered item via get_item_at_grid_pos_tab1. Shows item tooltip by copying item desc and calling FUN_00cfe140 with mode 5. |
| 0x009848E0 | 467 | CShopWnd__on_hover_item_tab1_show_tooltip_v2_009848e0 | Identical logic to 00984700. Hover handler for tab 1 items showing tooltip on hover. Duplicate variant. |
| 0x00984AC0 | 468 | CShopWnd__on_hover_item_show_tooltip_mode3_00984ac0 | Hover handler for items showing tooltip with mode 3. Updates this+0x40 selection index. Gets item via tab1 grid pos, copies desc via FUN_00ddd5a0, then calls FUN_00cfe140 with mode 3. |
| 0x00984CA0 | 325 | CShopWnd__on_hover_item_show_tooltip_mode3_v2_00984ca0 | Similar to 00984ac0 but simpler - directly gets item via UIShopWnd__get_item_at_index instead of grid pos. Shows tooltip with mode 3. |
| 0x00984DF0 | 278 | CShopWnd__on_hover_item_tab2_tooltip_00984df0 | Hover handler for tab 2 items. Gets item via get_item_at_grid_pos_tab2, checks item is valid and not sold out (local_18e == 0), copies desc via FUN_00de0eb0, shows tooltip with mode 6. |
| 0x00984F10 | 278 | CShopWnd__on_hover_item_tab3_tooltip_00984f10 | Hover handler for tab 3 items. Gets item via get_item_at_grid_pos_tab3, same sold-out check and tooltip mode 6 as tab 2 variant. |
| 0x00985030 | 291 | CShopWnd__on_hover_item_tab4_tooltip_00985030 | Hover handler for tab 4 items. Gets item via get_item_at_grid_pos_tab4. Also checks DAT_016f7144 global flag to skip when set. Shows tooltip with mode 6. |
| 0x00985160 | 531 | CShopWnd__on_hover_item_tab5_with_shift_00985160 | Hover handler for tab 5 items with Shift key support. Gets item via get_item_at_grid_pos_tab5, shows tooltip mode 1. When Shift is held, checks window type at field 0x1a0 and routes to different detail views: 0x1ec -> item tooltip, 0x1ea/0x1ee -> field accessor, 0x1eb -> achievement reward detail, 0x1ed -> edit box dtor. |
| 0x00985380 | 24 | CShopWnd__on_hover_header_only_00985380 | Minimal hover handler that only processes header area (y < 0x11). No item hover logic. |
| 0x009853A0 | 356 | CShopWnd__on_hover_item_conditional_tooltip_009853a0 | Hover handler with conditional tooltip mode. Gets item at index, looks up item name by string in field 0xe0, copies desc via FUN_00ddef40. Shows tooltip mode 0xd or 0x15 based on this+0x42 flag. |
| 0x00985510 | 250 | CShopWnd__on_hover_item_tooltip_mode_c_00985510 | Hover handler showing tooltip with mode 0xc. Only processes when this+0x43 == 0. Updates selection index at this+0x3f, gets item by index, shows tooltip. |
| 0x00985610 | 544 | CShopWnd__on_hover_item_tab1_with_shift_00985610 | Hover handler for tab 1 items with Shift key and auction check (DAT_0145797c). Gets item via tab1 grid pos, copies desc via FUN_00dde9f0, shows tooltip mode 9. Shift+hover routes to various detail views like 00985160. |
| 0x00985830 | 317 | CShopWnd__on_hover_item_mode_dependent_tooltip_00985830 | Hover handler with mode-dependent tooltip. Gets item via tab1 grid pos, copies desc via FUN_00ddeb50. Tooltip mode depends on this+0xf4: 1->0x14, 2->0x16, else->0xb. |
| 0x00985970 | 300 | CShopWnd__on_hover_search_tab_tooltip_00985970 | Hover handler for search tab items. Gets item via get_item_at_grid_pos_search_tab, copies desc via FUN_00dde890. Tooltip mode 10 or 0x13 based on this+0x130 flag. |
| 0x00985AA0 | 232 | CShopWnd__on_hover_vending_item_tooltip_00985aa0 | Hover handler for vending window items. Updates this+0x46 selection via hit_test_item_grid_b. Gets clicked item via CUIWindow__on_click_item_grid, validates item data, looks up item info via FUN_00e089a0, shows tooltip mode 8 via FUN_00cfe2a0. |
| 0x00985B90 | 820 | CShopWnd__on_right_click_item_show_info_00985b90 | Right-click handler for shop items showing item info popup. Gets item at grid pos tab1, computes snapped grid position, builds formatted string with item name, quantity, price (and optional currency label based on DAT_016d3b10), then displays popup via FUN_00ad6510. |
| 0x00985ED0 | 703 | CShopWnd__on_right_click_item_show_zeny_info_00985ed0 | Right-click handler for shop items showing Zeny price info popup. Similar to 00985b90 but always uses "Zeny" suffix in price format strings instead of configurable currency. |
| 0x00986190 | 1059 | CUIShopWindow__show_item_tooltip | Shows item tooltip for a shop grid cell at the given position. Gets item data from grid position, builds tooltip string with item name, quantity, price info. Handles 4 cases: same buy/sell price, different prices, with/without discount amount. Formats prices with Zeny suffix and displays the tooltip at snapped grid position. |
| 0x009865C0 | 931 | CUIShopWindow__show_item_tooltip_tab1_alt | Shows item tooltip for shop grid tab1 with additional quantity display. Similar to show_item_tooltip but checks param_1+0xf8 for display mode. Formats tooltip with item name, quantity, and price (with discount if applicable). Shows price range when buy/sell differ. |
| 0x00986970 | 1669 | CUIShopWindow__show_item_tooltip_with_currency | Shows item tooltip with variable currency type (Zeny/Point/etc). Determines currency label based on game mode (DAT_016d3b10): mode 6=special, mode 0 checks server type. Builds tooltip string with item name, quantity, price info, and currency suffix. Handles discount display and price ranges. |
| 0x00987000 | 507 | CUIShopWindow__show_tooltip_tab2 | Shows item tooltip for shop grid tab 2 items. Gets item at grid position via tab2 lookup, builds tooltip with item name. If item has a special flag and count, includes count in tooltip. Displays at snapped grid position. |
| 0x00987200 | 507 | CUIShopWindow__show_tooltip_tab3 | Shows item tooltip for shop grid tab 3 items. Identical structure to tab2 tooltip but uses tab3 item lookup function. Builds tooltip with item name and optional count. |
| 0x00987400 | 507 | CUIShopWindow__show_tooltip_tab4 | Shows item tooltip for shop grid tab 4 items. Identical structure to tab2/tab3 tooltip but uses tab4 item lookup. Builds tooltip with item name and optional count. |
| 0x00987600 | 584 | CUIShopWindow__show_tooltip_tab5 | Shows item tooltip for shop grid tab 5 items. Gets item at grid position via tab5 lookup. Builds tooltip with item name and additional field (local_12c). Uses different format string IDs (0x9f7/0xb7) compared to other tabs. |
| 0x00987850 | 832 | CUIShopWindow__show_tooltip_sell_tab | Shows item tooltip in the sell tab of the shop window. Gets item at grid position, builds tooltip with item name. Mode 0x100==0 shows Zeny price (with optional discount), mode 0x100!=0 shows quantity and alternate price format. Displays tooltip at snapped grid position. |
| 0x00987B90 | 422 | CUIShopWindow__show_tooltip_with_quantity_price | Shows item tooltip with quantity and Zeny price for shop grid position. Gets item at tab1 grid position, formats tooltip string with item name, quantity, and formatted Zeny price. Always uses the same format regardless of item flags. |
| 0x00987D40 | 936 | CUIShopWindow__show_tooltip_buy_sell_tab | Shows item tooltip for buy/sell tab items. If item found at grid position, shows tooltip directly. If not found, does a secondary hit test + item lookup to find the item from a different data source. Handles items with optional count display. |
| 0x009880F0 | 590 | CUIShopWindow__show_tooltip_with_extra_field | Shows item tooltip for a shop grid position with an extra data field (local_12c). Gets item at tab1 grid position. If flagged item with count, formats with string ID 0x9f7. Otherwise formats with item name, extra field, and quantity label. Uses format '%s %d %s'. |
| 0x00988340 | 590 | CUIShopWindow__show_tooltip_with_extra_field_alt | Shows item tooltip for shop grid position with extra field (variant). Very similar to show_tooltip_with_extra_field but uses format string ID 0xac4 instead of 0x9f7 for the discount case. Same basic structure: item name + extra field + quantity. |
| 0x009886F0 | 1318 | CUIShopWindow__on_tick_update_prices | Tick handler for the buy/sell shop window. If both offset 0x128 and 0x130 are set (sell mode), iterates over price input widgets, parses amounts via _atoi64, multiplies by item prices, sums totals, and updates total display. Otherwise handles price input validation: checks if focused widget changed, validates numeric input, caps values at 1,000,000,000 Zeny, formats with color coding, and updates text length tracking. |
| 0x00988C20 | 51 | CShopWnd__check_timeout_and_close_00988c20 | Checks if shop window has timed out. Compares current timeGetTime with deadline (this+0x2d + this+0x2e). If expired, triggers action 0xc9 (close) via virtual method 0x94. |
| 0x00988C60 | 237 | CShopWnd__on_click_item_send_action_00988c60 | Click handler that sends action 0x18 to parent window. Updates selection at this+0x3e via hit test, gets item by index, finds parent window via FUN_00a978d0(0xc), and forwards action with item data. |
| 0x00988D50 | 181 | CShopWnd__on_click_tab1_item_send_action_00988d50 | Click handler for tab 1 items. Gets item at grid pos tab1, finds parent window (0xc), sends action 0x18 with item data. |
| 0x00988E10 | 181 | CShopWnd__on_click_tab1_item_send_action_v2_00988e10 | Identical to 00988d50. Click handler for tab 1 items sending action 0x18. |
| 0x00988ED0 | 191 | CShopWnd__on_click_tab1_item_with_context_00988ed0 | Click handler for tab 1 items. Similar to 00988d50 but calls FUN_00ad6450 for context before finding parent and sending action 0x18. |
| 0x00988F90 | 237 | CShopWnd__on_click_item_by_index_send_action_00988f90 | Click handler using hit test at this+0x40. Gets item by index, calls FUN_00ad6450, finds parent (0xc), sends action 0x18 with item data. |
| 0x00989080 | 387 | CUIShopWindow__on_click_tab2_item | Handles click on shop tab 2 item grid. Gets item at grid position via tab2 lookup. Without modifier keys: opens item info dialog. With Shift: sends command 0x14d (link item). With Alt: if auction/mail window active, sends 0x38 or 0x4e command depending on flags. |
| 0x00989210 | 387 | CUIShopWindow__on_click_tab3_item | Handles click on shop tab 3 item grid. Identical structure to tab2 click handler but uses tab3 item lookup. Without modifier: opens item info. Shift: links item. Alt: sends item to auction/mail. |
| 0x009893A0 | 374 | CUIShopWindow__on_click_tab4_item | Handles click on shop tab 4 item grid. Same structure as tab2/tab3 handlers but uses tab4 lookup. No modifier: item info. Shift: link (always available, no DAT check). Alt: auction/mail send. |
| 0x00989520 | 890 | CUIShopWindow__on_click_tab5_item | Handles click on shop tab 5 item grid. Gets item via tab5 lookup. No modifier: opens item info. Ctrl: validates item storage (checks weight capacity), conditionally sends storage packet 0xa35. Shift: sends command 0x14e with additional flag. Alt: copies item to drag, attempts auction/mail/trade send via commands 0x33/0x37/0x4c. |
| 0x009898A0 | 191 | CUIShopWindow__on_click_tab1_item_simple | Simple click handler for shop tab 1 item grid. Gets item at grid position via tab1 lookup. If item found, opens item info dialog (no modifier key handling). Used for read-only display modes. |
| 0x00989960 | 411 | CUIShopWindow__on_click_buy_sell_item | Handles click on buy/sell view item. Hit tests grid position, updates selected index. If selection changed, triggers redraw. Gets item at index. No modifier: opens item info dialog. Alt: copies item for trade/enchant window (type 0xd), sends update to target window at DAT_01457980. |
| 0x00989B00 | 319 | CUIShopWindow__on_click_sell_item | Handles click on sell view item grid. Hit tests and updates selection index (offset 0x3f). No modifier: opens item info. Alt: copies item for external window (type 0xc), notifies target window at DAT_01457988. |
| 0x00989C40 | 423 | CUIShopWindow__on_click_tab1_item_with_modifiers | Handles click on tab 1 item with full modifier key support. Gets item at tab1 grid position. No modifier: opens item info. Shift: sends command 0x14f (link item variant). Alt: checks for auction/mail/trade windows and sends appropriate commands (0x4d, 0x4f) to transfer items. |
| 0x00989DF0 | 485 | CUIShopWindow__on_click_tab1_item_for_enchant | Handles click on tab 1 item for enchant/refine operations. Gets item at tab1 grid position. No modifier: opens item info. Alt: copies item for enchant window (type 0xb or 0x14 depending on target). Sends item to either DAT_0145797c (craft window, type 0xb) or DAT_01457a8c (enchant window, type 0x14). |
| 0x00989FE0 | 501 | CUIShopWindow__on_click_search_tab_item | Handles click on search tab item grid. Gets item via search tab lookup. No modifier: opens item info. Alt: copies item for external window - sends to either DAT_01457978 (type 0xa, craft) or DAT_01457a90 (type 0x13, enchant). Triggers window update notification. |
| 0x0098A1E0 | 50 | CShopWnd__update_hover_selection_b_0098a1e0 | Updates hover selection index at this+0x46 via hit_test_item_grid_b. Triggers redraw (virtual 0x98) if selection changed. No tooltip or click action. |
| 0x0098A240 | 23 | CShopWnd__call_parent_method_8c_0098a240 | Calls virtual method 0x8c on parent widget at this+0x10 if it exists. Used as a delegate/forward handler. |
| 0x0098A260 | 66 | CShopWnd__on_mouse_wheel_scroll | Mouse wheel scroll handler for shop grid window. If this+0x39 (has scrollable items), computes scroll amount = min(this+0x37 - 1, 3). Negates for scroll down. Sends scroll action 7 to scrollbar at this+0x30. Identical structure to other CShopWnd mouse wheel variants. |
| 0x0098A2B0 | 66 | CShopWnd__on_mouse_wheel_scroll_v1_0098a2b0 | Mouse wheel handler for scrolling shop list. If this+0x39 (has items), computes scroll amount = min(this+0x37 - 1, 3). Negates for scroll down. Sends scroll action 7 to scrollbar at this+0x30. |
| 0x0098A300 | 66 | CShopWnd__on_mouse_wheel_scroll_v2_0098a300 | Identical to v1. Mouse wheel scroll handler using this+0x39 flag, this+0x37 rows, scrollbar at this+0x30. |
| 0x0098A350 | 66 | CShopWnd__on_mouse_wheel_scroll_alt_fields_0098a350 | Mouse wheel scroll handler using alternative field offsets: this+0x51 (has items), this+0x50 (rows), scrollbar at this+0x4d. |
| 0x0098A3A0 | 66 | CShopWnd__on_mouse_wheel_scroll_alt_fields_v2_0098a3a0 | Mouse wheel scroll handler using fields: this+0x4a (has items), this+0x49 (rows), scrollbar at this+0x2e. |
| 0x0098A3F0 | 419 | CUIShopWindow__update_layout_on_resize | Updates shop window layout when resized. Recalculates visible rows based on available height, updates scrollbar range and position. Repositions close/cancel buttons and the text input widget. Adjusts scrollbar size to match new window dimensions. Calculates minimum row count as max of actual rows and configured minimum. |
| 0x0098A5A0 | 175 | CShopWnd__update_scrollbar_range_0098a5a0 | Updates scrollbar range based on item count and visible rows. Calculates total rows from item count / columns (this+0xec / this+0xe0), compares with visible rows (this+0xdc). Sets scrollbar range, clamps scroll position, and triggers redraw. Uses scrollbar at this+0xc0. |
| 0x0098A650 | 158 | CShopWnd__update_scrollbar_range_search_tab_0098a650 | Updates scrollbar range for search tab. Uses fields at this+0x134 (scrollbar), this+0x158 (visible rows), this+0x14c (total rows), this+0x138 (scroll position). |
| 0x0098A6F0 | 175 | CShopWnd__update_scrollbar_range_alt_0098a6f0 | Updates scrollbar range for alternate layout. Uses scrollbar at this+0xb8, calculates rows from this+0x130 / this+0x120, visible rows at this+0x124, scroll position at this+0x11c. |
| 0x0098AB40 | 135 | CShopWnd__handle_quantity_input_0098ab40 | Massive message handler for quantity input dialogs. Handles action 6 (button confirm with quantity validation), action 0xd (quantity display update), action 0x1d (text update). The inner switch on this+0xc mode handles 20+ different shop transaction types (buy/sell/exchange/vend/auction/etc), each with specific max quantity lookup, tooltip window updates, and confirmation dialogs. |
| 0x0098B980 | 138 | CShopWnd__handle_buy_window_messages_0098b980 | Main message handler for buy shop window. Handles: action 6 (buy confirm with quantity validation, currency checking), action 0xe (window resize with grid recalculation), action 0x17 (populate item list with total price calculation in Zeny/Koin/Point), action 0x22 (window init with position/size), action 0x24 (toggle mode), action 0x26 (execute purchase with stock validation), action 0x7b (packet 0x50dc/0x50dd buy response). |
| 0x0098CBF0 | 138 | CShopWnd__handle_sell_window_messages_0098cbf0 | Main message handler for sell shop window. Handles: action 6 (sell confirm/cancel), action 0xe (resize), action 0x17 (populate sell item list with Zeny total), action 0x22 (init), action 0x26 (execute sell), action 0x7b (packet 0x510e/0x510f sell response). |
| 0x0098D1F0 | 137 | CShopWnd__handle_generic_shop_messages_0098d1f0 | Generic shop window message handler. Handles: action 6 (toggle visibility flag 0xd5), action 0xe (resize with grid recalculation), action 0x17 (populate items), action 0x22 (init), action 0x24 (set text and button state), action 0x26 (execute action - mode 0 buys, mode 1 sells with tooltip refresh). |
| 0x0098D690 | 138 | CShopWnd__handle_generic_shop_messages_v2_0098d690 | Generic shop window message handler variant. Similar to 0098d1f0 but with extra DAT_016f7144 flag handling on action 6 (visibility toggle propagated to child dialog). Action 0x24 handles toggle of optional text widget and scrollbar resize. |
| 0x0098E6C0 | 86 | CShopWnd__handle_catalog_window_messages_0098e6c0 | Catalog/search shop window message handler. Very large handler supporting: action 6 with sub-actions (0x85 search, 0x92-0x98 tab buttons, 0xc9 close, 0xf6 reset, 0x135 filter, 0x16c category change, 0x16d search execute), action 0xe (resize), action 0x16 (category select), action 0x17 (populate with item type filtering by category), action 0x22 (init tabs), action 0x26 (execute buy/sell), action 0x27 (tab switch), action 0x37 (page update), action 0x7b (packet response). |
| 0x0098F0F5 | 689 | CShopWnd__handle_search_filter_input | CShopWnd: handle search filter input |
| 0x0098F700 | 131 | CShopWnd__handle_full_shop_window_messages_0098f700 | Full shop window message handler with tabs. Handles: action 6 with sub-actions (0xc9 close child, 0xca collapse/expand, 0xd5 toggle, 0x1c8 settings, 0x1fb toggle button texture, 0x221 request), action 0xe (resize with tab/scrollbar repositioning), action 0x16 (category), action 0x17 (populate with category-based filtering for consumables/equips/etc), action 0x22 (full init), action 0x26 (execute transaction by type). |
| 0x00990090 | 144 | CUIEquipWindow__handle_message | Message handler for equipment window. Handles: button clicks (0xc9=equip/unequip with confirm dialogs, 0xd5=toggle show headgear, 0x1fa=delete item), resize (0xe), refresh (0x17 - loads equipment list), layout (0x22), title update (0x24), Zeny display (0x77), packet processing (0x7b - sub-packets 0x5208/5209/523a-c), and item selection (0x1c). |
| 0x00994B90 | 301 | CUIEquipWindow__enter_delete_mode | Enters delete/discard item mode on the equipment window. Sets flag 0x42, creates a delete confirmation button if not already present (with text 0xb6d), hides headgear toggle button, adjusts window height to accommodate the extra button row (0x39 pixels), triggers resize and redraw. |
| 0x00994D10 | 109 | CUIShopWindow__clear_item_marks | Clears item marks/flags in the shop window when param_2 is 0. Iterates all items in the linked list at offset 0xe8, calls cleanup function and clears byte flag at offset 0x7d for each item. Then finds window type 0x133 and sends button click event (0x11e, 0xc2). |
| 0x00995050 | 193 | CUIShopWindow__check_item_matches_view_filter | Checks if an item matches the current view filter based on item type and equipped status. Uses a multi-level filter: main category (0x10c) and sub-category (0x100/0x104/0x108). Category 0=equipment, 1=useable/consumable, 2=etc items, 3=equipped only. Returns 1 if item matches filter. |
| 0x00995170 | 417 | CUIShopWindow__populate_item_list | Populates the shop window's item list from game data. Clears existing linked list, iterates all items from get_field_0x1714, filters by equipped status flag, copies matching items into the linked list. Optionally sorts by item name if DAT_0173a504 is set. Triggers redraw and scrollbar update. |
| 0x009957C0 | 790 | CUIShopWindow__update_sort_button_texture | Updates the sort button texture and label on inventory/shop windows. Builds button texture path from 'inventory_bt_sort' prefix with .bmp/_over.bmp/_press.bmp suffixes. Sets button text based on sort state (DAT_0173a504). Gets localized string 0xbbf for button label. Uses charconv format for texture path building. |
| 0x00995CF0 | 91 | CUIShopWindow__sort_items_and_reverse_list_a | Sorts the item list by type using merge sort, then reverses the doubly-linked list by swapping next/prev pointers on every node. Calls CShopWindow__build_item_tooltips_a first to check if items exist. Returns 1 on success, 0 if no items. |
| 0x00995D50 | 91 | CUIShopWindow__sort_items_and_reverse_list_b | Same pattern as sort_items_and_reverse_list_a but uses CShopWindow__build_item_tooltips_b. Sorts by item type and reverses the linked list. Used by storage window variant. |
| 0x00995DB0 | 91 | CUIShopWindow__sort_items_and_reverse_list_c | Same pattern as sort_items_and_reverse_list_a/b but uses CShopWindow__build_item_tooltips_c. Sorts by item type and reverses the linked list. Third variant for guild storage window. |
| 0x00995E10 | 632 | CUIShopWindow__filter_items_by_search_string | Filters the item list by a search string. Calls CShopWindow__build_item_tooltips_a first, then iterates all items in the linked list. For each item, builds item name string and uses _mbsstr for multibyte substring search. Items that don't match the search string are removed from the doubly-linked list and freed. Returns 1 if filtering was performed. |
| 0x00996870 | 55 | CUIShopWindow__sort_items_by_type_a | Sorts the item list by item type using merge sort. Calls CShopWindow__build_item_tooltips_a to check if items exist. Returns 1 if sorted, 0 if no items. Variant A for inventory window. |
| 0x009968B0 | 55 | CUIShopWindow__sort_items_by_type_b | Sorts the item list by item type using merge sort. Calls CShopWindow__build_item_tooltips_b. Same pattern as sort_items_by_type_a. Variant B for storage window. |
| 0x009968F0 | 55 | CUIShopWindow__sort_items_by_type_c | Sorts the item list by item type using merge sort. Calls CShopWindow__build_item_tooltips_c. Same pattern as sort_items_by_type_a/b. Variant C for guild storage window. |
| 0x00997080 | 29 | CUIShopWindow__set_selected_state_wrapper | Thin wrapper that calls UIRadioButton__set_selected with the given state value. |
| 0x009970A0 | 96 | CUIShopWindow__set_description_text | Sets the description text on the shop window with word wrapping. Takes a string parameter, handles SSO (small string optimization), passes to UITextWidget__word_wrap_text, then cleans up the string. |
| 0x00997100 | 96 | CUIShopWindow__set_description_text_00997100 | Sets description text with word wrapping. Identical to CUIShopWindow__set_description_text but for a different class instance. Takes string, passes to word wrap, cleans up. |
| 0x00997160 | 32 | CUIShopWindow__set_timer_duration | Sets the timer for the shop window. Records current time (timeGetTime) at offset 0x110 and stores the duration at offset 0x114. Used for timed shop events/sales. |
| 0x00997180 | 93 | CUIShopWindowBase__set_timer_and_extend_height | Sets a timer on the shop window base and extends its bottom section height. Records current time (timeGetTime) at offset 0x44, duration at 0x45, sets bottom height to 0x39 at offset 0x46, adjusts total window height by the difference, then triggers resize/reposition event via vtable. |
| 0x009971E0 | 103 | CUIShopWindow__set_search_text | Sets the search text string on the shop window at offset 0x13c. If the input string is not the same object, copies it via STL string assignment. Cleans up temporary string. |
| 0x00997250 | 254 | CUIShopWindowBase__ctor | Constructor for shop window base class. Initializes UIWindowBase, sets vtable, configures default layout constants for item grid (offsets for rows/columns). Checks game option via FUN_00dfbca0 and adjusts layout constants if enabled (wider layout). |
| 0x009973A0 | 71 | CUIShopWindowBase__dtor | Destructor for a shop window base class. Sets vtable pointer and delegates to UIWindowBase destructor. |
| 0x00997460 | 99 | CUIShopWindowBase__scalar_deleting_dtor | Scalar deleting destructor for shop window base. Sets vtable, calls base dtor, optionally frees memory (0x118 bytes) if param_2 bit 0 is set. |
| 0x00999330 | 35 | CUIShopWindow__on_double_click_close | Handles double-click in the header area (y < 0x11). Sends close button event (0xca) to self. Used to close the window by double-clicking the title bar. |
| 0x00999360 | 24 | CUIShopWindow__draw_header_if_visible | Draws the window header area only if the y position is less than 0x11 (header height). Calls UIWindow__draw_header_area when visible. |
| 0x00999380 | 172 | CUIShopWindow__show_weight_tooltip | Shows weight percentage tooltip when hovering over the weight bar area. Only shows when window height matches minimum (0xb8), mouse x is in 0-100 range, and mouse y is in bottom 20 pixels. Formats 'Weight:XX%' string and displays as tooltip at calculated screen position. |
| 0x00999430 | 91 | CUIShopWindow__draw_and_position_child_window | Draws multi-line text content, then finds and repositions a child window (type 0x133) below the current window. Calculates absolute position using parent offset accumulation and positions the child at the bottom edge. |
| 0x00999490 | 263 | CUIShopWindowBase__toggle_window_size | Toggles the shop window between two preset sizes. Checks game option via FUN_00dfbca0 to determine which set of layout constants to use (standard vs wide). Swaps between the two predefined heights (0x2d and 0x2e offsets). Hides extra button when in small mode (moves offscreen to -100,-100). |
| 0x0099F780 | 195 | CVendingWindow__ctor_0099f780 | Constructor for CVendingWindow. Calls UIWindowBase__ctor, sets vtable to 01147928, initializes 6 member pointers to zero (0x2E-0x33), allocates 0x20-byte linked list sentinel node at offset 0x34. |
| 0x0099F850 | 116 | CSearchStoreWindow__ctor_0099f850 | Constructor for CSearchStoreWindow. Calls UIWindowBase__ctor, sets vtable to 01147850, initializes 3 member pointers to zero (0x2E-0x30). |
| 0x0099F8D0 | 115 | CSearchStoreResultWindow__ctor_0099f8d0 | Constructor for CSearchStoreResultWindow. Calls UIWindowBase__ctor, sets vtable to 01147ad8, initializes 3 array elements of 0xF8 bytes each via eh_vector_constructor. |
| 0x0099F950 | 103 | CSearchStoreInfoWindow__ctor_0099f950 | Constructor for CSearchStoreInfoWindow. Calls UIWindowBase__ctor, sets vtable to 01147bb0, initializes flag byte at 0x2E to 0 and pointer at 0x2D to null. |
| 0x0099F9C0 | 150 | CBuyingStoreWindow__ctor_0099f9c0 | Constructor for CBuyingStoreWindow. Calls UIWindowBase__ctor, sets vtable to 01147a00, initializes 6 member fields (0x2E-0x33) to zero. |
| 0x0099FB70 | 176 | CVendingWindow__dtor_0099fb70 | Destructor for CVendingWindow. Frees linked list at offset 0x34, clears two child structures, calls UIWindowBase__dtor. |
| 0x0099FC20 | 95 | CSearchStoreWindow__dtor_0099fc20 | Destructor for CSearchStoreWindow. Sets vtable to 01147850, clears child structure, calls UIWindowBase__dtor. |
| 0x0099FC80 | 108 | CSearchStoreResultWindow__dtor_0099fc80 | Destructor for CSearchStoreResultWindow. Sets vtable to 01147ad8, destructs 3 array elements (0xF8 bytes each), calls UIWindowBase__dtor. |
| 0x0099FCF0 | 71 | CSearchStoreInfoWindow__dtor_0099fcf0 | Destructor for CSearchStoreInfoWindow. Sets vtable to 01147bb0, calls UIWindowBase__dtor. |
| 0x0099FD40 | 110 | CBuyingStoreWindow__dtor_0099fd40 | Destructor for CBuyingStoreWindow. Sets vtable to 01147a00, clears two child structures, calls UIWindowBase__dtor. |
| 0x0099FDB0 | 200 | CVendingWindow__scalar_deleting_dtor_0099fdb0 | Scalar deleting destructor for CVendingWindow (size 0xD8). Full cleanup including linked list and child structures, conditionally frees memory. |
| 0x0099FE80 | 119 | CSearchStoreWindow__scalar_deleting_dtor_0099fe80 | Scalar deleting destructor for CSearchStoreWindow (size 0xC4). Clears child structure, calls UIWindowBase__dtor, conditionally frees memory. |
| 0x0099FF00 | 132 | CSearchStoreResultWindow__scalar_deleting_dtor_0099ff00 | Scalar deleting destructor for CSearchStoreResultWindow (size 0x3A0). Destructs 3 array elements, calls UIWindowBase__dtor, conditionally frees memory. |
| 0x0099FF90 | 99 | CSearchStoreInfoWindow__scalar_deleting_dtor_0099ff90 | Scalar deleting destructor for CSearchStoreInfoWindow (size 0xBC). Sets vtable, calls UIWindowBase__dtor, conditionally frees memory. |
| 0x009A0000 | 134 | CBuyingStoreWindow__scalar_deleting_dtor_009a0000 | Scalar deleting destructor for CBuyingStoreWindow (size 0xD0). Clears two child structures, calls UIWindowBase__dtor, conditionally frees memory. |
| 0x009A0090 | 449 | CSearchStoreResultWindow__handle_item_drop_009a0090 | Handles item drop onto search store result window. For special window IDs (0x3E2-0x3E8), sends command 0x12. Otherwise tries to place item into one of 3 slots (0xF8 bytes each) after validating trade flags and item type. |
| 0x009A0280 | 520 | CVendingWindow__build_vending_packet_009a0280 | Builds vending packet data. Inserts header (0x5686), iterates linked list at offset 0xD0 adding 0x1E-byte entries per item (copying 4 ints), then appends footer (0x5687). Returns vector of packet bytes. |
| 0x009A0490 | 506 | CSearchStoreWindow__build_search_packet_009a0490 | Builds search store packet data. Inserts header (0x5622), iterates items at offset 0xB8 adding 10-byte entries (0x5624 type, 4-byte value), then appends footer (0x5623). Returns vector of packet bytes. |
| 0x009A0690 | 292 | CSearchStoreInfoWindow__build_info_packet_009a0690 | Builds search store info packet. Inserts header (0x55F0/22000), adds 4-byte item data (0x55F2) from offset 0xB4, then appends footer (0x55F1). Returns vector of packet bytes. |
| 0x009A07C0 | 539 | CBuyingStoreWindow__build_buying_packet_009a07c0 | Builds buying store packet data. Inserts header (0x56B8), iterates item arrays at offsets 0xB8 and 0xC4 adding 0xE-byte entries (0x56BA type, item ID + price), then appends footer (0x56B9). Returns vector of packet bytes. |
| 0x009A09E0 | 228 | CSearchStoreResultWindow__handle_click_009a09e0 | Handles click on CSearchStoreResultWindow. For special IDs (0x3E2-0x3E8), clears tooltip. Otherwise checks click position against 3 item slots (0x1F pixels wide, positioned at x=4, 0x24, 0x44) and copies item data. |
| 0x009A0B00 | 2688 | CVendingWindow__handle_event_009a0b00 | Main event handler for CVendingWindow. Handles vending-related UI events (open/close shop, add/remove items, price changes, etc.). |
| 0x009A1590 | 2688 | CSearchStoreWindow__handle_event_009a1590 | Main event handler for CSearchStoreWindow. Handles search store UI events (search, filter, pagination, etc.). |
| 0x009A2020 | 2440 | CSearchStoreResultWindow__handle_event_009a2020 | Main event handler for CSearchStoreResultWindow. Handles search result display, item selection, and purchase interactions. |
| 0x009A29B0 | 1043 | CSearchStoreInfoWindow__handle_event_009a29b0 | Main event handler for CSearchStoreInfoWindow. Handles store info display events. |
| 0x009A2DD0 | 2688 | CBuyingStoreWindow__handle_event_009a2dd0 | Main event handler for CBuyingStoreWindow. Handles buying store UI events (item selection, price setting, open/close). |
| 0x009A38E0 | 609 | CVendingWindow__create_ui_009a38e0 | Creates the UI layout for CVendingWindow (vending shop setup/display). |
| 0x009A3D10 | 206 | CVendingWindow__handle_command_and_render | Handles command processing and rendering for CVendingWindow. Calls handle_click to get item data, then either prepares render context (if no item) or sends command 0x86 with item string to display tooltip/info. |
| 0x009A3DE0 | 211 | CSearchStoreWindow__handle_command | Command handler for CSearchStoreWindow. Handles button clicks (case 6: select item from scroll list), close/cancel (0x12/0x13), add item to search list (0x1f with linked list + vectors), and packet parsing (0x7b: parses 0x5686/0x5687/0x5688 sub-packets). |
| 0x009A42E0 | 202 | CBuyingStoreWindow__handle_command | Command handler for CBuyingStoreWindow. Handles button clicks (case 6: select item, open trade window 0x50 or send item data 0x82), close/cancel (0x12/0x13), add item to buy list (0x1f), and packet parsing (0x7b: parses 0x5622/0x5623/0x5624 sub-packets). |
| 0x009A48C0 | 117 | CBuyingStoreWindow__handle_command_009a48c0 | Command handler for CBuyingStoreWindow (alternate). Handles button clicks (case 6: send buy request via 0x82), item assignment (0x28), item removal by name match (0x4b), and packet parsing (0x7b: parses 0x55F0/0x55F1/0x55F2 sub-packets for store info). |
| 0x009A4C50 | 79 | CSearchStoreInfoWindow__handle_command | Command handler for CSearchStoreInfoWindow. Handles close (case 6: clears window 0x51), item data assignment (0x28: sets item ID at offset 0x2D, sets flag at 0x2E if param is non-zero), and delegates other commands to UIWindow__handle_button_click. |
| 0x009A4CA0 | 202 | CSearchStoreResultWindow__handle_command | Command handler for CSearchStoreResultWindow. Handles button clicks (case 6: select item from scroll list, send 0xB6 command), close/cancel (0x12/0x13), add item with price (0x1f: stores item ID + price in vectors), and packet parsing (0x7b: parses 0x56B8/0x56B9/0x56BA sub-packets). |
| 0x00A17690 | 9 | thunk_to_CShopWnd__update_item_info_display_00a18660_00a17690 | Single-call wrapper that delegates to FUN_00a18660 |
| 0x00A176B0 | 9 | thunk_to_CShopWnd__update_item_info_display_00a18660_00a176b0 | Thunk that calls FUN_00a18660 and returns |
| 0x00A176C0 | 112 | CShopWnd__apply_color_picker_to_parent_00a176c0 | Reads RGB color from CColorPicker at position (10,6) if flag at this+0x90 is set, then sends the packed RGB value to the parent via CEffect__notify_parent_event. If flag is clear, sends 0xFFFFFFFF (white/default). |
| 0x00A17730 | 1169 | CShopWnd__init_shop_item_lists_00a17730 | Initializes a shop window with two lists of 10 items each (buy/sell). Positions the window, formats price text, creates CShopItem entries, sets up scrollable item list controls, and configures button visibility based on item availability. |
| 0x00A17BF0 | 33 | CShopWnd__dispatch_vtable_0x70_00a17bf0 | Virtual dispatch thunk. Calls vtable method at offset 0x70 on the object at this+0xEC. |
| 0x00A17C20 | 769 | CShopWnd__validate_and_set_price_00a17c20 | Validates price input from an editable text widget. Checks if input is numeric, clamps to 0-1,000,000,000 range. If invalid shows error dialog, if over max shows warning and clamps to 1B. Formats the number and updates the price display widget. |
| 0x00A17F30 | 36 | CShopWnd__dispatch_vtable_0x80_00a17f30 | Virtual dispatch thunk. Calls vtable method at offset 0x80 on the object at this+0xEC. |
| 0x00A17F60 | 74 | CShopWnd__refresh_list_scroll_position_00a17f60 | Refreshes a list widget's scroll position. Calculates scroll offset from d8*b8+c0, updates scroll value at +0x18, sets scroll bar position from +0xB0+0x9C, and marks widget dirty (+0xE1=1). |
| 0x00A17FB0 | 165 | CShopWnd__on_message_00a17fb0 | Shop window message handler. Handles messages: 0x17 (refresh buy/sell item lists with prices), 0x26 (close/confirm shop), 0x32 (set item name text with optional quantity formatting), 0x33/0x34 (toggle buy/sell tab visibility and update button state). Falls through to UIWindow__handle_button_click for unhandled messages. |
| 0x00A18660 | 731 | CShopWnd__update_item_info_display_00a18660 | Updates the shop item info display when an item is selected. Enables/disables sub-controls based on item count > 0. Displays item name and tooltip text from CItemDB. If item has special flag (+0xFC), enables a specific mode and hides a control. |
| 0x00A18940 | 76 | CShopWnd__set_price_display_color_00a18940 | Converts an integer price to a 64-bit value via get_number_display_colors, then sets the text color on the price display widget. If color index is -1, resets to default selection; otherwise sets shadow color by index. |
| 0x00A18990 | 270 | CShopWnd__update_price_texts_00a18990 | Updates price text labels in the shop window. Selects between buy (this+0xEC/0xF0) or sell (this+0x100/0x104) prices based on a mode flag. Formats numbers and updates three text display widgets, plus sets the 64-bit price display value. |
| 0x00A18AA0 | 140 | CShopWnd__refresh_item_list_all_dirty_00a18aa0 | Marks all items in a shop list (buy or sell based on param_2) as dirty/needs-redraw. Iterates the linked list at +0xD4, sets each entry's flag at +0x104 to 1, then refreshes scroll position and triggers a repaint. |
| 0x00A71140 | 444 | ShopListCtrl__ctor | Constructor for ShopListCtrl (shop list control similar to UIScrollableList). Calls CEffect__ctor, sets UIBase and own vtable, initializes linked lists, string buffer, selection index (-1), delegate slots, and various flags/counters to 0. |
| 0x00A71300 | 348 | ShopListCtrl__dtor | Destructor for ShopListCtrl. Destroys two delegate callbacks at offsets +0x4D and +0x43, calls FUN_00a71500 and FUN_00a715f0 to clean up data, destroys the string buffer, destroys the map tree at +0x24, releases 4 texture resources at +0x20 through +0x23 via FUN_00af0be0. Finally sets UIBase vtable and calls CEffect__dtor. |
| 0x00A71500 | 145 | ShopListCtrl__destroy_item_data_list | Destroys the shop item data linked list. Zeroes the count, iterates forward through the list, destroys each node's internal map tree (std__map_int__destroy_tree at offset +3), frees each 0x14-byte node, then frees the root sentinel. |
| 0x00A71680 | 164 | ShopListCtrl__copy_delegate_and_init | Copies a delegate callback from source (param_2+0x24) by cloning it into a local buffer, then calls FUN_00a76bf0 for initialization. Properly cleans up the temporary delegate clone after use. |
| 0x00A71730 | 38 | ShopListCtrl__scalar_deleting_dtor | Scalar deleting destructor for ShopListCtrl. Calls ShopListCtrl__dtor, then conditionally frees the 0x138-byte object if param_2 bit 0 is set. |
| 0x00A71760 | 353 | ShopListCtrl__create_item_button | Creates a button item for the ShopListCtrl. Allocates 0x100-byte object via FUN_00a77160, sets size from stored dimensions, hides initially, applies state textures. Sets up two delegate callbacks and adds as child control. Similar to UIListView__create_item_button. |
| 0x00A718D0 | 115 | ShopListCtrl__create_item_window | Creates a window item for the ShopListCtrl. Allocates 0x110-byte object and constructs it via FUN_00a77200. Returns 0 if allocation fails. |
| 0x00A71950 | 85 | ShopListCtrl__clear_visible_items | Clears all visible items from the ShopListCtrl. Iterates the visible items array (+0xC8 to +0xCC), calls FUN_00a82e50 on each with flag 1 to hide/recycle them. Resets the end pointer to begin and selection index to -1. |
| 0x00A719B0 | 36 | ShopListCtrl__set_scroll_params_and_resize | Sets scroll parameters (item width/height at +0xB4/+0xB8) and resizes the control via CEffect__set_size_and_reload. |
| 0x00A719E0 | 82 | ShopListCtrl__init_layout | Initializes the layout of a ShopListCtrl. Clears flags, sets size to 0x159 x 0x17B, positions at (0,0), performs resize/layout via virtual calls, and sets skin colors to all black/transparent. |
| 0x00A71A40 | 183 | ShopListCtrl__create_toggle_button | Creates a toggle button (0x84 bytes) for the ShopListCtrl via FUN_00a77350. Sets its size to 0x46 x 0x15, adds it as a child control, and pushes it into the vector at +0xEC/+0xF0 (growing if needed). |
| 0x00A71B00 | 69 | ShopListCtrl__get_selected_item | Gets the currently selected item from the ShopListCtrl. Same pattern as UIScrollableList__get_selected_item: traverses linked list at +0xD4 using index from +0xDC, returns item data with success flag. |
| 0x00A71B50 | 525 | ShopListCtrl__create_scrollbar_and_dialog | Creates the scrollbar and dialog panel for the ShopListCtrl. Allocates a 0xF0-byte UIInterfaceDialog object, initializes it with various flags (hidden initially), sets up a delegate callback, swaps it into the control's callback slot via std::any::swap. Adds the dialog as a child control. Stored at offset +0xB0. |
| 0x00A71D60 | 824 | ShopListCtrl__create_header_and_columns | Creates the header label and column headers for the ShopListCtrl. Creates a text label (0xFC bytes) at +0xE8 with size 0x2C x 0x15, empty text, truncation disabled, offset (6,6). Decrypts a font name via xor_decrypt_buffer (keys 0x79878559/0xe33f2ff7), sets it as the font. Configures line spacing 12, no bold, black text, no outline/shadow. Then creates 4 toggle button columns positioned at x-offsets 0x2C, 0x72, 0xB8, 0xFE. |
| 0x00A720A0 | 14676 | ShopListCtrl__static_layout_init | ShopListCtrl: static layout init |
| 0x00A75A00 | 636 | ShopListItemButton__create_text_label | Creates and configures a text label for a shop list item button. Allocates 0xFC-byte text label, sets size 0x3C x 0x15, positions at (5,0), initializes with empty text, no truncation, offset (6,6). Decrypts font name via xor_decrypt_buffer (keys 0x8d8dafab/0xd5a78db3), sets font, configures line spacing 12, no bold, black text, no outline/shadow. Adds as child at +0x80. |
| 0x00A75C90 | 63 | ShopListItemButton__on_click_forward | Handles click forwarding for a shop list item button. If the scrollbar at +0xB0 is not at its max and hasn't reached the limit, calls its scroll function (vtable+0x8C). Otherwise forwards the click to the parent at +0x10 if it exists. |
| 0x00A75CD0 | 65 | ShopListCtrl__highlight_selected_item | Highlights the selected item in the shop list. Iterates all visible items (+0xC8 to +0xCC), calling vtable+0xDC with true/false depending on whether each matches the selected item pointer. |
| 0x00A75D20 | 603 | ShopListCtrl__rebuild_visible_items | Rebuilds the visible item pool for the ShopListCtrl. Removes all existing child items, calculates how many visible items are needed based on control height / item height, creates new item buttons with textures and delegate callbacks. Updates scrollbar max/visible range. Reuses or grows the visible items vector as needed. |
| 0x00A75F80 | 522 | ShopListCtrl__load_state_textures | Loads texture resources for ShopListCtrl states (normal, hover, pressed, disabled). Same pattern as UITreeCtrl__load_state_textures: loads 4 textures from map indices 0-2 and +0x98, swaps with old textures, applies to all visible items. |
| 0x00A76190 | 115 | ShopListCtrl__on_resize | Handles resize of the ShopListCtrl. Calls CEffect__resize_surface, rebuilds visible items, resizes the scrollbar, and updates scrollbar max/range/position for the new dimensions. |
| 0x00A76210 | 498 | ShopListCtrl__update_visible_items | Updates the visible items in the ShopListCtrl based on scroll position param_2. Calculates which data items should be visible based on scroll offset / item height. Rotates the visible items array if items can be reused. For each visible slot, sets data index, calls the item content callback (+0x134), sets selection highlight, positions the item, and shows it. Hides any remaining empty slots. |
| 0x00A76410 | 218 | ShopListCtrl__on_item_clicked | Handles item click in the ShopListCtrl. Deselects all other visible items (vtable+0xD8 with 0), selects clicked item (vtable+0xD8 with 1). If selection changed, dynamic casts to get item's data index, stores it, and calls the selection callback at +0x10C with the item data from the linked list. |
| 0x00A764F0 | 216 | ShopListCtrl__set_texture_names | Sets the texture resource names for the ShopListCtrl's different states. Assigns 3 texture name strings to map entries at indices 0, 1, 2 (normal, hover, pressed), and assigns the 4th string to the internal string buffer at +0x26 if different. Calls vtable+0xD4 with 0 and vtable+0x98 to trigger texture reload. |
| 0x00A765D0 | 22 | ShopListCtrl__create_vtable_callback_a | Creates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4. |
| 0x00A765F0 | 22 | ShopListCtrl__create_vtable_callback_b | Creates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4. |
| 0x00A76610 | 22 | ShopListCtrl__create_vtable_callback_c | Creates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4. |
| 0x00A76630 | 22 | ShopListCtrl__create_vtable_callback_d | Creates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4. |
| 0x00A76650 | 22 | ShopListCtrl__create_vtable_callback_e | Creates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4. |
| 0x00A76670 | 22 | ShopListCtrl__create_vtable_callback_f | Creates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4. |
| 0x00A76690 | 22 | ShopListCtrl__create_vtable_callback_g | Creates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4. |
| 0x00A766B0 | 68 | ShopListCtrl__conditional_free_a | Conditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object. |
| 0x00A76700 | 68 | ShopListCtrl__conditional_free_b | Conditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object. |
| 0x00A76750 | 68 | ShopListCtrl__conditional_free_c | Conditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object. |
| 0x00A767A0 | 68 | ShopListCtrl__conditional_free_d | Conditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object. |
| 0x00A767F0 | 68 | ShopListCtrl__conditional_free_e | Conditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object. |
| 0x00A76840 | 68 | ShopListCtrl__conditional_free_f | Conditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object. |
| 0x00A76890 | 68 | ShopListCtrl__conditional_free_g | Conditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object. |
| 0x00A768F0 | 65 | ShopListCtrl__highlight_selected_item_callback | Callback that highlights the selected item in the shop list. Dereferences param_2, iterates all visible items, calling vtable+0xDC with true/false for selection. |
| 0x00A76940 | 20 | ShopListCtrl__wrapper_update_visible_items | Wrapper callback that calls ShopListCtrl__update_visible_items with dereferenced first param. |
| 0x00A76960 | 216 | ShopListCtrl__on_item_clicked_callback | Callback that handles item click in the ShopListCtrl. Same logic as ShopListCtrl__on_item_clicked but accessed through param_1's context pointer at +4. |
| 0x00A76A40 | 23 | ShopListCtrl__wrapper_null_stub_a | Wrapper callback that calls null_stub_00a77b10 with dereferenced first param and second param. |
| 0x00A76A60 | 23 | ShopListCtrl__wrapper_update_item_display | Wrapper callback that calls UIListMenu__update_item_display with dereferenced first param and second param. Not a null stub. |
| 0x00A76B10 | 22 | ShopListCtrl__create_vtable_callback_h | Creates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_a and copies context from +4. |
| 0x00A76B30 | 22 | ShopListCtrl__create_vtable_callback_i | Creates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_b and copies context from +4. |
| 0x00A76B50 | 22 | ShopListCtrl__create_vtable_callback_j | Creates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_c and copies context from +4. |
| 0x00A76B70 | 22 | ShopListCtrl__create_vtable_callback_k | Creates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_d and copies context from +4. |
| 0x00A76B90 | 22 | ShopListCtrl__create_vtable_callback_l | Creates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_e and copies context from +4. |
| 0x00A76BB0 | 22 | ShopListCtrl__create_vtable_callback_m | Creates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_f and copies context from +4. |
| 0x00A76BD0 | 22 | ShopListCtrl__create_vtable_callback_n | Creates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_g and copies context from +4. |
| 0x00A77050 | 123 | ShopListCtrl__destroy_item_data_list_with_maps | Destroys a ShopListCtrl item data linked list. Same as ShopListCtrl__destroy_item_data_list: zeroes count, iterates list destroying each node's internal map tree, frees each 0x14-byte node and sentinel. |
| 0x00D5A380 | 111 | CShopManager__handle_purchase_result | Handles shop purchase result. Switch on result code: 0=success (copies item, adds to inventory, removes from shop, shows message 0xA22), 1=fail msg 0xA46, 2=fail msg 0xA45, 3=fail msg 0xA89, 4=fail msg 0xA8B. Displays result as colored chat message. |
| 0x00DD8CC0 | 232 | CShopManager__copy_items_to_cart | Copies all items from a source list (at this+0x1740) to the cart/target list (at this+0x1750). Creates scroll event, then iterates each item in the source list, copy-constructing a new 0x100-byte CShopItem node and inserting it into the target linked list. |
| 0x00DDA470 | 159 | CShopManager__remove_sold_item_from_list | Removes or decrements a sold item from the shop item list at +0x1758. Finds the item by matching its ID string (atoi comparison), updates the display name if different, decrements quantity by the sold amount. If quantity drops to 0 or below, removes the node from the linked list entirely. |
| 0x00DDA510 | 133 | CShopManager__remove_bought_item | Removes or decrements a bought item from the buying list at +0x1710. Searches by item ID (node+0xC), decrements quantity by param_3. If quantity drops to 0 or below, removes the node. After removal, searches again and clears a flag at node+0x7E. Notifies the UI via CUIWindowMgr after changes. |
| 0x00DDA5A0 | 225 | CShopManager__remove_vending_item | Removes or decrements a vending item from the list at +0x1768. Matches by item ID (node+0xC vs param_2+4). If param_3 is false, decrements quantity; if 0 or below, removes node and notifies buyer window. If param_3 is true, removes node entirely and notifies seller window. Returns 1 if found, 0 if not. |
| 0x00DDA690 | 171 | CShopManager__remove_item_from_buy_list | Removes/decrements an item from the buy list at +0x1740. Matches by item ID, decrements quantity. If quantity <= 0, removes node. After removal, finds the item again and clears flag at +0x7E. Notifies buyer window. Returns 1 on success, 0 if not found. |
| 0x00DDA8B0 | 109 | CShopManager__remove_item_from_sell_list | Removes/decrements an item from the sell item list at +0x1758. Matches by item ID (node+0xC vs param_2+4), updates display name, decrements quantity. Removes node if quantity <= 0. |
| 0x00DDA920 | 79 | CShopManager__remove_item_from_list_1760 | Removes/decrements an item from the list at +0x1760. Matches by item ID, decrements quantity by param_2+0x10 amount. Removes node if quantity <= 0. |
| 0x00DDA970 | 79 | CShopManager__remove_item_from_list_1748 | Removes/decrements an item from the list at +0x1748. Matches by item ID, decrements quantity. Removes node if quantity <= 0. |
| 0x00DDA9C0 | 139 | CShopManager__remove_item_by_name_from_list_1718 | Removes/decrements an item from list at +0x1718 by name string comparison (atoi). Matches node name string vs param_2+0x2C. Handles unlimited quantity (-1). Decrements and removes if <= 0. |
| 0x00DDAA50 | 85 | CShopManager__remove_item_by_id_from_list_1718 | Removes/decrements an item from list at +0x1718 by item ID. Handles unlimited quantity (-1). Decrements and removes if <= 0. |
| 0x00DDAAB0 | 127 | CShopManager__remove_item_by_name_from_list_1720 | Removes/decrements an item from list at +0x1720 by string comparison. Uses std::char_traits comparison to match item name. Decrements quantity and removes node if <= 0. |
| 0x00DDAC40 | 79 | CShopManager__remove_item_from_list_1730 | Removes/decrements an item from list at +0x1730 by item ID. Decrements quantity and removes node if <= 0. |
| 0x00DDAC90 | 79 | CShopManager__remove_item_by_id_from_list_1718_v2 | Removes/decrements an item from list at +0x1718 by item ID. Decrements quantity and removes node if <= 0. Variant that does NOT check for -1 unlimited quantity. |
| 0x00DDB540 | 61 | CShopManager__remove_pending_order_by_id | Removes a pending order from the list at +0x17E4 by matching node+0x10 to param_2. Erases the 0x58-byte node from the linked list. Returns 1 if found and removed, 0 if not found. |
| 0x00E08EE0 | 138 | CShopItem__set_shop_tab_item | Sets a shop item for a given tab index. If param_3 < 10, copies the item into the shop array at offset 0x2B50 + index*0xF8 using CShopItem copy constructor. For index 0xF or >= 10, calls destroy_nodes_recursive_alt (error/cleanup path). |
| 0x00E09900 | 100 | CShopItem__get_tab_item_copy | Returns a copy of a shop item from a tab at the given index. Copies the item at offset 0x5C68 + param_3*0xF8 using CShopItem copy constructor. |
| 0x00E0AAD0 | 138 | CShopItem__set_shop_tab_item_alt | Sets a shop item for a given tab index (alternate array at offset 0x3500). If param_3 < 10, copies item into array at 0x3500 + index*0xF8. For index 0xF or >= 10, calls destroy_nodes_recursive_alt (error/cleanup). |
No function here matches that. Search all 47,061 functions instead.