Back to legacygamers.net
WARPGATE

UI Shop

CSearchShop, CMerchantStore, CVendingWindow, CBuyingStore, CShopWnd, CStylingShop, CEquipWnd, ShopListCtrl

Functions 815Code 355 KBAddresses 0x005D8C50 to 0x00E0AAD0Group UI
815 functions
AddressSizeNameDescription
0x005D8C50163CShopCategory__delete_tree_nodes_recursiveRecursively frees 0x110-byte nodes
0x005D8D00155CShopCategory__erase_tree_nodeErases single tree node
0x005D8DA0267CShopCategory__copy_constructCopy constructs shop category
0x005D8EB0224CShopManager__initInitializes CShopManager
0x005D8F90465CShopItem__copy_constructCopy constructs shop item
0x005D917065CShopItem__cleanup_stringFrees shop item string
0x005D91C070CShopManager__free_tree_sentinelFrees 0x110-byte sentinel
0x005D922079CShopManager__destroy_tree_fullDestroys all tree nodes
0x005D9280143CShopManager__destroy_tree_node_with_stringsDestroys node with string cleanup
0x005D931081CShopManager__free_tree_node_110Frees 0x110-byte tree node
0x005D93A090CShopManager__destroy_tree_and_freeDestroys tree and sentinel
0x005D9400100CShopItem__destroy_stringsCShopItem: destroy strings
0x005D947068CShopItem__destructor_wrapperCShopItem: destructor wrapper
0x005D9590151CShopManager__destructorDestroys CShopManager
0x005D9690172CShopManager__scalar_deleting_destructorScalar deleting destructor
0x005D974097CShopManager__add_to_pending_cartAdds to pending cart
0x005D97B091CShopManager__add_to_completed_cartAdds to completed cart
0x005D9810135CShopManager__add_to_summary_vectorCShopManager: add to summary vector
0x005D98E0530CShopManager__rebuild_item_treeCShopManager: rebuild item tree
0x005D9B00325CShopManager__get_instanceCShopManager: get instance
0x005D9C5068CShopManager__remove_from_pending_cartRemoves from pending cart
0x005D9CA0244CShopManager__remove_from_completed_cartRemoves from completed cart
0x005D9DA0103CShopManager__remove_from_summary_vectorRemoves summary entry
0x005D9E1027CShopManager__destroy_instanceCShopManager: destroy instance
0x005DA1C0470CShopManager__find_completed_by_nameSearches completed by name
0x005DA3B041CShopManager__get_pending_qty_by_idGets pending qty by ID
0x005DA3E0251CShopManager__find_pending_entry_by_idFinds pending entry by ID
0x005DA4E0251CShopManager__find_completed_entry_by_idFinds completed entry by ID
0x005DA5E045CShopManager__get_pending_discount_by_idCShopManager: get pending discount by id
0x005DA6104CShopManager__get_completed_cart_ptrReturns completed cart ptr
0x005DA62024CShopManager__get_completed_cart_countReturns completed cart count
0x005DA64041CShopManager__get_completed_qty_by_idGets completed qty by ID
0x005DA6704CShopManager__get_summary_vector_ptrReturns summary vector ptr
0x005DA68068CShopManager__calc_total_completed_costSums total completed cost
0x005DA6D0346CShopManager__validate_and_consume_summaryValidates and consumes summary
0x005DA830164CShopManager__consume_single_summary_entryConsumes single summary entry
0x005DA8E0327CShopManager__build_and_add_cart_entryBuilds and adds cart entry
0x005DAA3094CShopManager__clear_all_cartsCShopManager: clear all carts
0x005DAA9036CShopItem__destroy_rangeCShopItem: destroy range
0x005DEA30108CShopItem__destroy_range_005dea30Destroys 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).
0x005E07C0168CShopItem__vector_clear_and_freeClears 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.
0x005E09B0110CSearchStoreListWnd__dtorNon-scalar destructor for CSearchStoreListWnd. Sets vtable, calls clear_and_free_item_vector to release the item list, then destroys the UIWindowBase.
0x005E0A201013CSearchStoreListWnd__compare_items_by_nameComparator 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.
0x005E0E20234CSearchStoreWnd__scalar_deleting_dtorScalar 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.
0x005E0F90134CSearchStoreItemPanel__scalar_deleting_dtorScalar deleting destructor for CSearchStoreItemPanel. Sets vtable, calls clear_and_free_item_vector, then destroys UIWindowBase. Frees memory (size 0xF8) if param_2 & 1.
0x005E102093CSearchStoreScrollKnob__scalar_deleting_dtorScalar deleting destructor for the scrollbar knob widget used in search store list. Calls UIBaseWidgetA__dtor. Frees memory (size 0xB4) if param_2 & 1.
0x005E1080160CSearchStoreListWnd__scroll_to_itemScrolls 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.
0x005E1120182CSearchStoreListWnd__hit_test_itemHit-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.
0x005E11E0187CSearchStoreListWnd__get_item_tooltip_stringBuilds 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.
0x005E12A095CSearchStoreListWnd__get_item_data_by_indexGets 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.
0x005E13109CSearchStoreListWnd__thunk_set_positionThunk to CEffect__set_position. Forwards call from CSearchStoreListWnd vtable.
0x005E13202064CSearchStoreWnd__init_child_widgetsInitializes 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.
0x005E1B30208CSearchStoreListWnd__init_scrollbarInitializes 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.
0x005E1C00543CSearchStoreWnd__drawMain 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.
0x005E1E20250CSearchStoreButton__drawDraw 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.
0x005E1F201098CSearchStoreListWnd__draw_itemsDraws 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.
0x005E2370516CSearchStoreScrollbar__drawDraws 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.
0x005E259056CSearchStoreListWnd__on_click_select_itemHandles 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.
0x005E25D0215CSearchStoreListWnd__show_item_tooltipShows 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).
0x005E26B0389CSearchStoreListWnd__show_item_tooltip_with_priceShows 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.
0x005E2850401CSearchStoreWnd__on_search_text_changedHandles 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).
0x005E29F063CSearchStoreListWnd__on_right_click_itemHandles 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.
0x005E2A3049CSearchStoreListWnd__notify_scroll_directionNotifies parent of scroll direction. If param_2 < 0, sends event 10 (scroll down) to the scrollbar's parent; otherwise sends event 9 (scroll up).
0x005E2A70175CSearchStoreListWnd__update_scrollbarUpdates 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.
0x005E2B20747CSearchStoreListWnd__filter_items_by_search_textFilters 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.
0x005E2E10663CSearchStoreWnd__set_selected_item_dataSets 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.
0x005E30B02275CSearchStoreWnd__process_search_resultsProcesses 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.
0x005E39A0304CSearchStoreWnd__send_purchase_requestSends 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.
0x005E3AD072CSearchStoreWnd__send_close_packetSends 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.
0x005E3B2086CSearchStoreListWnd__reset_list_stateResets 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.
0x005E3B80168CSearchStoreListWnd__select_item_at_indexSelects 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.
0x005E3C30148CSearchStoreWnd__on_child_eventHandles 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.
0x005E4170137CSearchStoreListWnd__on_eventMain 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.
0x005E4330398CSearchStoreListWnd__sort_and_rebuild_listSorts 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.
0x005E44C0120CSearchStoreListWnd__scroll_up_by_offsetScrolls 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.
0x005E454022CSearchStoreItem__destruct_range_thunkThunk that forwards to the search store item range destructor. Passes parameters in swapped order (param_2, param_3, this).
0x005E456022CSearchStoreItem__destruct_range_thunk_altThunk that forwards to the search store item range destructor (alternate version). Passes parameters in swapped order (param_2, param_3, this).
0x005E45B0174CSearchStoreListWnd__clear_and_free_item_vectorClears 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.
0x005E467041CSearchStore__zero_init_8byte_arrayCSearchStore: zero init 8byte array
0x005E46A048CSearchStore__zero_init_12byte_arrayCSearchStore: zero init 12byte array
0x005E46D0153CSearchStoreItem__copy_construct_rangeCopy-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.
0x005E4770151CSearchStoreItem__copy_construct_range_voidCopy-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.
0x005E481010CSearchStore__throw_vector_too_longThrows std::length_error with message "vector too long". Called when search store item vector exceeds maximum size.
0x005E482010CSearchStore__throw_vector_too_long_altThrows std::length_error with message "vector too long". Duplicate of 005e4810, called from a different vector growth path in the search store subsystem.
0x005E4830102CSearchStore__allocate_item_arrayAllocates 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.
0x005E48A055CSearchStore__compare_string_to_cstrCompares 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.
0x005E48E067CSearchStore__free_item_arrayFrees 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.
0x005E493059CSearchStore__free_shop_item_arrayFrees 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.
0x005E4970218CSearchStoreEntry__ctorConstructs 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.
0x005E4A50744CSearchStoreMgr__ctorConstructor 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...".
0x005FD270899CSearchShopResultPanel__drawDraws 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.
0x005FD600362CSearchShopItemPanel__draw_titleDraws the title text for an item panel. Gets message string 0xF0E, measures its width, draws it centered, then draws an underline bar beneath it.
0x005FD7E0181CSearchShopItemPanel__draw_item_spriteDraws 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).
0x005FD8A0413CSearchShopResultList__draw_itemsDraws 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.
0x005FDA60153CSearchShopResultList__on_click_select_itemHandles 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.
0x005FDB20189CSearchShopItemPanel__show_tooltipShows 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.
0x005FDBE0107CSearchShopResultList__on_hover_highlight_itemHandles 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.
0x005FDC8055CSearchShopWnd__focus_detail_windowFocuses the detail child window (at offset 0xD4). Calls CGameObject__focus_window_with_priority and positions it relative to global coordinates.
0x005FDCC052CSearchShopItemPanel__open_item_info_windowOpens 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.
0x005FDD10131CSearchShopResultList__on_double_click_open_infoHandles 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.
0x005FDDA049CSearchShopResultList__on_scroll_wheelHandles mouse scroll wheel on the result list. Scrolls up (event 10) or down (event 9) by one position based on the scroll direction parameter.
0x005FDDE0181CSearchShopResultList__update_scrollbarUpdates 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.
0x005FDEA01491CSearchShopWnd__set_selected_recipeSets 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.
0x005FE480120CSearchShopWnd__on_child_eventHandles 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.
0x005FE770148CSearchShopResultList__on_notifyHandles 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.
0x005FEAD021CSearchShopItemPanel__set_data_and_refreshSets the data pointer (field_0x7C) for this item panel and triggers a refresh via virtual method 0x98.
0x005FEAF039CSearchShopItemPanel__set_enabledToggles the enabled/disabled state of the item panel. Sets field_0xAC to inverted param, refreshes display, and sets field_0x28 to the enabled flag.
0x005FECD0111CSearchShopWnd__ensure_hotkey_mgr_existsEnsures the CUserHotKeyMgr singleton (DAT_01389904) exists. If null, allocates 0x20 bytes and calls CUserHotKeyMgr::ctor to initialize it.
0x005FEF40161CSearchShopItemPanel__ctorConstructor for CSearchShopItemPanel. Inherits from UIWindowBase, sets vtable, initializes item info fields, a string member (capacity 0xF), and a counter field to 0.
0x005FEFF0320CSearchShopWnd__ctorConstructor for CSearchShopWnd. Inherits from UIWindowBase, sets vtable, initializes multiple vectors, three string members (capacity 0xF each), search parameters (max 3000), and boolean flags.
0x005FF130222CSearchShopResultList__ctorConstructor 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.
0x005FF21094CSearchShopScrollThumb__ctorConstructor for CSearchShopScrollThumb. Inherits from UISpriteWidget, sets vtable, initializes field_0xA0 to 0.
0x005FF27099CSearchShopItemPanel__cleanup_stringsCleanup helper that destroys two STL strings. Part of CSearchShopItemPanel's exception unwind or partial destructor sequence.
0x005FF2E0129CSearchShopResultList__free_item_vectorFrees the item pointer vector in CSearchShopResultList. Identical pattern to STL_vector_int_free: deallocates buffer with MSVC aligned-allocation support, zeroes begin/end/capacity.
0x005FF370136CSearchShopItemPanel__dtorNon-virtual destructor for CSearchShopItemPanel. Sets vtable, destroys three STL string members, then calls UIWindowBase::dtor.
0x005FF400216CSearchShopWnd__dtorNon-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.
0x005FF4E0110CSearchShopResultList__dtorNon-virtual destructor for CSearchShopResultList. Sets vtable, frees item pointer vector and shop item vector, then calls UIScrollPanel::dtor.
0x005FF550160CSearchShopItemPanel__scalar_deleting_dtorScalar deleting destructor for CSearchShopItemPanel. Calls dtor then conditionally frees memory (0x1D0 bytes) if param_2 bit 0 is set.
0x005FF5F0240CSearchShopWnd__scalar_deleting_dtorScalar 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.
0x005FF6E0134CSearchShopResultList__scalar_deleting_dtorScalar deleting destructor for CSearchShopResultList. Calls dtor then conditionally frees memory (0xD0 bytes) if param_2 bit 0 is set.
0x005FF77093CSearchShopScrollThumb__scalar_deleting_dtorScalar deleting destructor for CSearchShopScrollThumb. Calls UIBaseWidgetA::dtor then conditionally frees memory (0xB4 bytes) if param_2 bit 0 is set.
0x005FF7D035CSearchShopResultList__on_resizeResize handler for CSearchShopResultList. Resizes the drawing surface and then calls the virtual resize method (vtable+0x3C) with the new dimensions.
0x005FF81012CSearchShopScrollThumb__delegate_to_parentDelegates to the parent widget's virtual method at offset 0x28. Used by CSearchShopScrollThumb to forward events to its parent scroll panel.
0x005FF820134CSearchShopResultList__on_item_add_from_searchHandles 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.
0x005FF8B089CSearchShopResultList__on_item_registerHandles 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.
0x005FF9109CSearchShopScrollThumb__set_positionSimple wrapper that calls CEffect__set_position. Used as a virtual method override for CSearchShopScrollThumb.
0x005FF920935CSearchShopWnd__create_ui_widgetsCreates 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.
0x005FFCD0233CSearchShopResultList__init_scrollbarInitializes 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.
0x005FFDC0454CSearchShopItemPanel__draw_item_rowDraws 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).
0x005FFF90720CSearchShopWnd__drawMain 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.
0x006002701096CSearchShopScrollThumb__draw_scrollbarDraws 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.
0x006006D0145CSearchShopItemPanel__on_buy_button_clickHandles 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.
0x00600770186CSearchShopResultList__on_drag_dropHandles 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).
0x0060083059CSearchShopItemPanel__show_item_tooltipShows 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.
0x00600870198CSearchShopResultWnd__draw_item_with_headerDraws 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.
0x0060094057CSearchShopItemPanel__selectSelects 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.
0x00600980101CSearchShopItemPanel__on_mouse_moveMouse 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.
0x006009F0357CSearchShopListPanel__on_mouse_moveMouse 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.
0x00600B60155CSearchShopListPanel__on_tickTick 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.
0x00600C0054CSearchShopItemPanel__open_item_infoOpens 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.
0x00600C40181CSearchShopListPanel__on_double_clickDouble-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.
0x00600D0023CSearchShopItemPanel__invalidate_parentDelegates to parent window's invalidate/redraw method (vtable offset 0x8C) if parent pointer at offset 0x10 is non-null.
0x00600D2060CSearchShopItemPanel__on_mouse_wheelMouse 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.
0x00600D601137CSearchShopListPanel__handle_messageMain 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.
0x006011E0150CSearchShopManagerWnd__handle_messageMessage 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.
0x006016C01251CSearchShopManagerWnd__setup_item_from_luaSets 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.
0x00601BC0339CSearchShopManagerWnd__add_item_to_listAdds 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).
0x00601D20773CSearchShopListPanel__add_item_to_cartAdds 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.
0x00602030927CSearchShopManagerWnd__add_inventory_item_to_cartAdds 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.
0x00602410215CSearchShopResultWnd__hit_test_item_gridHit-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.
0x006024F0141CSearchShopResultWnd__get_item_grid_positionCalculates 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.
0x006025B0103CSearchShopItemPanel__validate_and_add_to_cartValidates 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.
0x00602620670CSearchShopManagerWnd__validate_item_for_purchaseValidates 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.
0x006028C0509CSearchShopItemPanel__update_item_displayUpdates 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.
0x00602AC050CSearchShopListPanel__set_locked_stateSets 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.
0x00602D30301CSearchShopResultWnd__ctorConstructor 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).
0x00602E60159CSearchShopItemPanel__ctor_00602e60Constructor for CSearchShopItemPanel. Initializes base UIWindowBase, sets vtable to PTR_CSearchShopItemPanel, initializes selected flag, item data, and STL string members for tooltip text.
0x00602F00222CSearchShopListPanel__ctorConstructor 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.
0x00602FE099CSearchShopResultWnd__dtor_stringsPartial destructor helper for CSearchShopResultWnd. Destroys two STL string members in sequence within an SEH frame.
0x006030E0307CSearchShopResultWnd__dtorNon-deleting destructor for CSearchShopResultWnd. Sets vtable, sends close packet (0xAB5) to server via CNetworkSession, destroys multiple STL string members, and calls UIWindowBase destructor.
0x00603220136CSearchShopItemPanel__dtor_00603220Non-deleting destructor for CSearchShopItemPanel. Sets vtable, destroys STL string members (tooltip text), and calls UIWindowBase destructor.
0x006032B0110CSearchShopListPanel__dtorNon-deleting destructor for CSearchShopListPanel. Sets vtable, clears int vector via STL_vector_int_clear_and_deallocate, clears shop item vector, and calls UIScrollPanel destructor.
0x00603320325CSearchShopResultWnd__scalar_deleting_dtorScalar 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.
0x00603470160CSearchShopItemPanel__scalar_deleting_dtor_00603470Scalar deleting destructor for CSearchShopItemPanel. Destroys STL string members, calls UIWindowBase dtor, then conditionally frees memory (0x1D0 bytes) if param_2 bit 0 is set.
0x00603510134CSearchShopListPanel__scalar_deleting_dtorScalar 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.
0x006035A035CSearchShopListPanel__on_resizeResize handler for CSearchShopListPanel. Calls CEffect__resize_surface with new dimensions, then dispatches to the virtual layout method (vtable 0x3C).
0x006035E0104CSearchShopListPanel__on_dropDrop 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.
0x0060365040CSearchShopItemPanel__delegate_move_to_childDelegates 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).
0x0060368072CSearchShopResultWnd__on_dropDrop 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).
0x006036D09CSearchShopItemPanel__set_positionThin wrapper that delegates to CEffect__set_position. Sets the position of the search shop item panel.
0x006036E0935CSearchShopResultWnd__init_uiInitializes 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.
0x00603A90205CSearchShopListPanel__init_scrollbarInitializes 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).
0x00603B60319CSearchShopResultWnd__drawDraw 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.
0x00603CA0246CSearchShopItemPanel__drawDraw 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).
0x00603DB059CSearchShopResultWnd__on_click_item_spriteClick 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.
0x00603E2091CSearchShopResultWnd__on_mouse_moveMouse 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).
0x00603E8050CSearchShopItemPanel__show_item_tooltip_00603e80Shows 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.
0x00603EC048CSearchShopItemPanel__select_and_notify_parentSelects this panel unconditionally (unlike CSearchShopItemPanel__select which checks purchased state). Sets selected flag at 0x6C, triggers redraw, and notifies parent with message 6.
0x00603EF0126CSearchShopWnd__on_mouse_move_show_tooltipCSearchShopWnd 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.
0x00603F70101CSearchShopWnd__on_mouse_move_show_result_tooltipCSearchShopWnd 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.
0x00603FE0245CSearchShopWnd__update_panel_visibilityUpdates 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.
0x006040E083CSearchShopWnd__on_click_show_item_windowClick 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.
0x0060414054CSearchShopItemPanel__on_click_show_item_windowClick handler for CSearchShopItemPanel. If item data at +0xBC is set, creates window type 0xC and sends message 0x18 with item info string at +0xB8.
0x0060418023CSearchShopItemPanel__on_click_forward_to_parentForwards click to parent window. If parent pointer at +0x10 is not null, calls parent virtual method at vtable offset 0x8C.
0x006041A060CSearchShopWnd__on_scroll_wheelMouse 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).
0x006041E0130CSearchShopWnd__handle_messageMain 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.
0x00604680145CSearchShopResultPanel__handle_messageMessage 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).
0x006049B01491CSearchShopWnd__query_lapine_upgrade_box_requirementsQueries 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.
0x00604F9010CSearchShopWnd__throw_vector_too_longThrows std::_Xlength_error with "vector too long" message. Called when search shop item vector exceeds maximum capacity.
0x00604FA0330CSearchShopWnd__add_item_to_search_listAdds 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.
0x006050F0512CSearchShopWnd__load_and_display_item_detailsLoads 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.
0x006052F0861CSearchShopWnd__try_add_result_item_panelAttempts 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.
0x00605690191CSearchShopWnd__try_clear_selected_itemTries 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.
0x00605750553CSearchShopWnd__validate_and_select_result_itemValidates 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.
0x006059B0509CSearchShopItemPanel__populate_item_infoPopulates 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.
0x00605BB050CSearchShopWnd__set_filter_panel_visibilitySets 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.
0x00605BF0265CSearchShopFilterEntry__ctorConstructor 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).
0x00605D00100CSearchShopFilterEntry__cleanup_stringsCleanup helper for CSearchShopFilterEntry. Destroys two SSO strings during exception unwinding or partial construction cleanup.
0x00605D70117CSearchShopFilterEntry__dtorDestructor for CSearchShopFilterEntry. Sets vtable, clears the shop item vector via CShopItem__vector_clear_and_free, then destroys 3 SSO strings at +0x3C, +0x24, +0xC.
0x00605DF0138CSearchShopFilterEntry__scalar_deleting_dtorScalar 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.
0x00605E8050CMerchantStore__push_back_shop_itemAppends 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.
0x00605EC025CMerchantStore__clear_shop_itemsClears 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.
0x00605EE088CMerchantStore__copy_construct_name_stringCopy-constructs the name string (at +0x24) during CMerchantStore copy/move operations. Uses STL_string_copy_construct on the source's +0x24 field.
0x00605F4088CMerchantStore__copy_construct_save_pathCopy-constructs the save path string (at +0xC) during CMerchantStore copy/move operations. Uses STL_string_copy_construct on the source's +0xC field.
0x00605FA0482CMerchantStore__parse_json_responseParses 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.
0x006061902269CMerchantStore__parse_item_list_from_jsonParses 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.
0x00606A70310CMerchantStore__init_lua_save_load_pathsInitializes 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.
0x00606BB0554CMerchantStore__match_items_with_inventoryMatches 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.
0x00606DE0205CMerchantStore__register_filter_entryRegisters 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.
0x00606EB0545CMerchantStore__save_item_list_to_jsonSaves 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.
0x006070E0342CMerchantStore__reset_and_init_lua_pathsResets 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.
0x006072401488CMerchantStore__serialize_items_to_jsonSerializes 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.
0x00607810529CMerchantStore__handle_save_responseHandles 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.
0x00607A30218CMerchantStoreWebRequest__init_fieldsInitializes 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.
0x00607B10754CMerchantStoreSaveRequest__ctorConstructor 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...".
0x00607E10210CMerchantStoreSaveRequest__dtorDestructor 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).
0x00607EF0234CMerchantStoreSaveRequest__scalar_deleting_dtorScalar deleting destructor for CMerchantStoreSaveRequest. Calls the full dtor chain, then conditionally frees the 0xD0-byte object if bit 0 of param_2 is set.
0x00607FE0647CMerchantStoreSaveRequest__populate_from_entryPopulates 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.
0x00608280206CMerchantStoreSaveRequest__execute_saveExecutes 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.
0x006083502575CMerchantStoreSaveRequest__send_http_requestSends 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.
0x00608D60795CMerchantStoreLoadRequest__ctorConstructor 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).
0x00609080225CMerchantStoreLoadRequest__dtorDestructor 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.
0x00609170249CMerchantStoreLoadRequest__scalar_deleting_dtorScalar deleting destructor for CMerchantStoreLoadRequest. Calls the full dtor chain, then conditionally frees the 0xE8-byte object if bit 0 of param_2 is set.
0x00609270675CMerchantStoreLoadRequest__populate_from_entryPopulates 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.
0x00609530178CMerchantStoreLoadRequest__execute_loadExecutes the load operation. Copies string fields from the store entry (at +0x94, +0xAC) and then calls handle_save_response to process the loaded data.
0x006095F03570CMerchantStoreLoadRequest__send_http_requestSends 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.
0x0060A3F0181CMerchantStoreRequestEntry__ctorConstructor 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.
0x007C4D301376EmotionShopWnd__update_useable_itemsUpdates useable emotion items: filters by EMSG_EMOTION_USEABLE_EXPIRE_TIME, creates/reuses item controls with expiry text
0x007C65401376EmotionShopWnd__update_sale_itemsUpdates sale emotion items: filters by EMSG_EMOTION_SALE_END_TIME, creates/reuses item controls with sale end text
0x007C6CB0269EmotionShopWnd__constructorConstructs emotion shop window: inits base, sets vtable 01124954, allocates RB tree sentinel, zeros UI fields
0x007C6FD0136EmotionShopWnd__destructorDestructor: resets global ID to -1, unregisters packet handler 7, destroys RB tree, calls base destructor
0x007C70D0160EmotionShopWnd__scalar_deleting_destructorScalar deleting destructor: full cleanup then optionally frees 0xF0-byte object
0x007C7170165EmotionShopWnd__set_search_panel_visibleShows/hides search panel at +0xD8: handles focus, sets visibility, clears text; also toggles +0xD4 and +0xDC
0x007C7240644EmotionShopWnd__create_button_controlCreates a button control with sprite states (normal/press/disable) and optional text label
0x007C74D01868EmotionShopWnd__create_ui_controlsCreates all emotion shop UI: 4 tab buttons, text input, item grid, emotion grid, search grid, sale grid, and timer
0x007C7CD053EmotionShopWnd__update_preview_displayUpdates preview display at +0xE8: passes text from input or 0 based on search state
0x007C7D10233EmotionShopWnd__select_itemHandles item selection: validates via format, switches to unpurchased tab, updates preview and text display
0x007C7E0076EmotionShopWnd__send_purchase_packetSends emotion shop purchase packet 0xBEC with item ID and format info to server
0x007C7E50169EmotionShopWnd__update_grid_search_stateUpdates grid panels with search text for active tab (2=emotion, 3=search, 4=sale); clears if no search
0x007C7F0088EmotionShopWnd__clear_all_grid_displaysClears search input and resets all 3 grid displays (emotion, search, sale) to empty state
0x007C7F60337EmotionShopWnd__update_usage_period_displayUpdates usage period label: shows days remaining from EMSG_PERIOD_OF_USE or hides if no expiry
0x007C80C0168EmotionShopWnd__register_refresh_timerRegisters 30-second periodic timer for shop data refresh via packet handler 7
0x007C8170137EmotionShopWnd__process_messageMain message handler: tab switch, item select, purchase confirm with cash/free check, search, close
0x007C87A088EmotionShopWnd__select_tab_by_idSelects tab in RB tree by char ID and sends tab-switch message 0xD7 to parent
0x007C8800493EmotionShopWnd__switch_active_tabSwitches active tab (1-4): updates button states, sets active grid panel, manages search/preview visibility
0x007C89F041EmotionShopWnd__set_search_textSets search text input at +0xD8: passes param or empty string
0x007C8A2026EmotionShopWnd__update_purchase_buttonCalls virtual +0xD4 on purchase button control at +0xE4 if present
0x007C8A40155EmotionShopWnd__register_refresh_timer_altRegisters 30-second periodic timer for shop data refresh (alternate entry, no packet unregister)
0x007C8AF056EmotionShopWnd__sync_rect_to_parentCopies position rect (w,h,x,y) from this control to parent object at +0xB4
0x007C8B3023EmotionShopWnd__update_emotion_item_modeDelegates to emotion grid at +0xBC to update item display mode if grid exists
0x007C8B5089EmotionShopWnd__refresh_purchase_stateRefreshes purchase button and usage period based on active tab and selected item ID
0x007C8BB023EmotionShopWnd__update_search_item_modeDelegates to search grid at +0xC0 to update item display mode if grid exists
0x007C8DE067EmotionShopWnd__find_tab_nodeFinds RB tree node matching char key; returns sentinel if not found
0x00822C60136CStylingShopColorPanel__ctorConstructor for CStylingShopColorPanel. Inherits base panel. Sets vtable to PTR_FUN_0112eae0. Zeroes child pointers 0x22-0x23.
0x00822CF0116CStylingShopListPanel__ctorConstructor for CStylingShopListPanel. Inherits base panel. Sets vtable to PTR_FUN_0112e92c.
0x00822D70141CStylingShopAccessoryPanel__ctorConstructor for CStylingShopAccessoryPanel. Inherits from scroll panel via FUN_009ac040. Sets vtable PTR_FUN_0112ea04. Zeroes fields 0x2f-0x31. Queries accessory table sizes.
0x00822E00146CStylingShopHairPanel__ctorConstructor for CStylingShopHairPanel. Inherits base panel. Sets vtable PTR_FUN_0112e854. Zeroes child pointers 0x22-0x24.
0x00822EA0116CStylingShopPreviewPanel__ctorConstructor for CStylingShopPreviewPanel. Inherits base panel. Sets vtable PTR_CStylingShopPreviewPanel__dtor.
0x00822F20297CStylingShopCharPanel__ctorConstructor 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.
0x00823050299CStylingShopCharPanel__ctor_with_flagConstructor for CStylingShopCharPanel with initial flag. Same as default ctor but sets byte at offset 0x2c to param_2 value instead of 0.
0x00823180137CStylingShopItemListPanel__ctorConstructor for CStylingShopItemListPanel. Inherits base panel. Sets vtable PTR_CStylingShopItemListPanel__dtor. Zeroes fields 0x22-0x24.
0x00823210220CStylingShopMainWnd__ctorConstructor 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.
0x008232F0116CStylingShopPreviewSlot__ctorConstructor for CStylingShopPreviewSlot. Inherits base panel. Sets vtable PTR_CStylingShopPreviewSlot__dtor.
0x00823370138CStylingShopScrollPanel__ctorConstructor for CStylingShopScrollPanel. Inherits FUN_008a3700. Sets vtable. Allocates RB-tree sentinel (0x18 bytes) at offset 0x2f.
0x0082340067CStylingShop__free_list_node_0xcFrees a linked list node (0xc bytes) at offset 0x4 if not null.
0x0082345067CStylingShop__free_tree_sentinel_0x18Frees a tree sentinel node (0x18 bytes) at offset 0x4 if not null.
0x008234A078CStylingShop__free_list_node_0xc_altFrees a linked list node (0xc bytes) at offset 0x4 if not null. Alternative version.
0x008234F0111CStylingShop__destroy_tree_and_sentinel_0x18Destroys all nodes in a tree with 0x18-byte nodes, then frees the sentinel node. Uses std__tree__destroy_nodes_recursive_18 for child nodes.
0x0082357078CStylingShop__free_tree_sentinel_0x18_altFrees a tree sentinel node (0x18 bytes) at offset 0x4 if not null. Alternative version for styling shop.
0x008235C078CStylingShop__free_tree_sentinel_0x18_alt2Frees a tree sentinel node (0x18 bytes) at offset 0x4 if not null. Another alternative version.
0x00823610103CStylingShop__destroy_linked_listDestroys a linked list. Walks list from first node, frees each 0xc-byte node, then frees the sentinel node.
0x0082368065CStylingShop__destroy_tree_wrapperWrapper that calls CStylingShop__destroy_tree_and_sentinel_0x18 to destroy a tree.
0x008237F071CStylingShopConfirmDialog__dtorDestructor for CStylingShopConfirmDialog. Sets vtable PTR_FUN_0112e4f0, calls UIDialogBoxBase destructor.
0x0082384084CStylingShopListPanel__dtorDestructor for CStylingShopListPanel. Sets vtable chain (list panel then base panel), calls base UI dtor.
0x008238A095CStylingShopAccessoryPanel__dtorDestructor for CStylingShopAccessoryPanel. Sets vtable, deallocates vector, calls scroll panel base dtor FUN_009ac2b0.
0x00823900108CStylingShopHairPanel__dtorDestructor for CStylingShopHairPanel. Sets vtable, deallocates vector via std__vector_ptr__deallocate_alt, sets base vtable, calls FUN_00a79e90.
0x00823970178CStylingShopCharPanel__dtor_00823970Destructor for CStylingShopCharPanel. Sets vtable, destroys tree nodes at offset 0x32, destroys tree sentinel, calls base dtor FUN_00a79e90.
0x00823A30102CStylingShopItemListPanel__dtor_00823a30Destructor for CStylingShopItemListPanel. Sets vtable, calls CStylingShop__save_and_load_like_list cleanup, calls base panel dtor, then base UI dtor.
0x00823AA0146CStylingShopMainWnd__dtor_00823aa0Destructor for CStylingShopMainWnd. Sets vtable, walks and frees linked list at offset 0x2d (0xc-byte nodes), frees sentinel, calls base dtor.
0x00823B4084CStylingShopPreviewSlot__dtor_00823b40Destructor for CStylingShopPreviewSlot. Sets vtable chain, calls base panel dtor.
0x00823BA071CStylingShopButton__dtor_00823ba0Destructor for CStylingShopButton. Sets vtable, calls UIDialogBoxBase destructor.
0x00823BF0155CStylingShopScrollPanel__dtor_00823bf0Destructor for CStylingShopScrollPanel. Sets vtable, sends packet 0xa48, calls network cleanup functions. Destroys tree at offset 0x2f. Calls base FUN_008a4e90 dtor.
0x00823C9071CStylingShopBasePanel__dtor_00823c90Destructor for CStylingShopBasePanel. Sets vtable, calls base UI dtor FUN_00a79e90.
0x00823CE0174CStylingShopCharPanel__CopyAppearanceDataCopies 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.
0x00823DF093CStylingShopPreviewPanel__scalar_deleting_dtorScalar deleting destructor for CStylingShopPreviewPanel (extends UIComplexDialog). Calls complex dialog dtor, frees 0x10c bytes if bit 0 set.
0x00823E50112CStylingShopColorPanel__scalar_deleting_dtorScalar deleting destructor for CStylingShopColorPanel. Sets vtable chain, calls base dtors, frees 0x90 bytes if bit 0 set.
0x00823EC099CStylingShopConfirmDialog__scalar_deleting_dtorScalar deleting destructor for CStylingShopConfirmDialog. Sets vtable, calls UIDialogBoxBase dtor, frees 0x128 bytes if bit 0 set.
0x00823F30112CStylingShopListPanel__scalar_deleting_dtorScalar deleting destructor for CStylingShopListPanel. Sets vtable chain, calls base dtors, frees 0x88 bytes if bit 0 set.
0x00823FA0119CStylingShopAccessoryPanel__scalar_deleting_dtorScalar deleting destructor for CStylingShopAccessoryPanel. Sets vtable, deallocates vector, calls scroll panel base dtor, frees 200 bytes if bit 0 set.
0x00824020132CStylingShopHairPanel__scalar_deleting_dtorScalar deleting destructor for CStylingShopHairPanel. Sets vtable, deallocates vector, calls base panel dtor, frees 0x98 bytes if bit 0 set.
0x008240B0112CStylingShopPreviewPanel__scalar_deleting_dtor_008240b0Scalar 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.
0x00824120204CStylingShopCharPanel__scalar_deleting_dtorScalar 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.
0x008241F0126CStylingShopItemListPanel__scalar_deleting_dtorScalar 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.
0x00824270170CStylingShopMainWnd__scalar_deleting_dtorScalar 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.
0x0082432096CStylingShopSlotPanel__scalar_deleting_dtorScalar deleting destructor for CStylingShopSlotPanel. Simple chain: sets vtable, calls CEffect dtor. Frees 0x7C bytes if bit 0 of param_2 is set.
0x00824380112CStylingShopPreviewSlot__scalar_deleting_dtorScalar 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.
0x008243F099CStylingShopButton__scalar_deleting_dtorScalar deleting destructor for CStylingShopButton. Sets vtable, calls UIDialogBoxBase dtor. Frees 0x120 bytes if bit 0 of param_2 is set.
0x00824460179CStylingShopScrollPanel__scalar_deleting_dtorScalar 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.
0x0082452099CStylingShopBasePanel__scalar_deleting_dtorScalar deleting destructor for CStylingShopBasePanel. Sets base vtable 0112e77c, calls CEffect dtor. Frees 0x88 bytes if bit 0 of param_2 is set.
0x0082459035CStylingShop__set_preview_modeSets preview data pointer based on param (0=normal, 1=alternate) and triggers virtual refresh
0x008245C042CStylingShop__set_child_preview_modeSets preview mode on child panel at offset 0x7C if it exists
0x008245F0359CStylingShop__update_confirm_button_stateChecks NPC type 0x1F0, validates slot availability, updates confirm button enable/disable state
0x00824760404CStylingShop__check_appearance_match_all_slotsIterates NPC tree, finds active appearance and 0x1F0 NPC, compares 7 styling fields per slot
0x00824900375CStylingShop__update_confirm_for_childUpdates confirm button state for child panel at offset 0x7C; checks 0x1F0 NPC slot availability
0x00824A80367CStylingShop__create_preview_slot_in_npcCreates 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.
0x00824BF0571CStylingShop__create_preview_slot_if_emptyCreates new preview slot (0x88 bytes) if an empty slot exists in 0x1F0 NPC; positions and links it
0x00824E30175CStylingShop__apply_style_to_active_slotIterates NPC tree for 0x1F0 type with active flag, applies style change and triggers animation
0x00824EE02077CStylingShop__build_change_packetBuilds styling change packet from category list; handles 7 types (head/body palette/style, accessories) via Lua
0x00825720103CStylingShop__remove_active_preview_slotRemoves current active preview slot if it has content; frees slot and disables associated button
0x008257D0180CStylingShop__update_all_confirm_buttonsIterates all 0x1F0 NPCs and updates confirm button enabled state based on active slot content
0x00825890119CStylingShop__validate_payment_amountValidates if player has enough zeny; shows error message for insufficient funds or over-limit
0x00825910619CStylingShop__check_and_add_changed_categoriesChecks Lua coloring flag, compares all 7 styling fields against current values, adds changed ones to list
0x00825B80119CStylingShop__compare_appearance_fieldsCompares 7 appearance fields (head/body palette, style, accessories) between preview and target
0x00825C00148CStylingShop__find_matching_slot_by_appearanceSearches up to 2 slots for one matching all 7 appearance fields; returns true if found
0x00825CA0585CStylingShop__query_accessory_table_sizesQueries StylingShop_GetSizeInTable for Top/Mid/BottomAccessory via Lua and populates accessory lists
0x00825EF0261CStylingShop__BuildCharacterSaveStringBuilds 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.
0x00826000472CStylingShop__render_character_preview_00826000Renders 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.
0x008261E0534CStylingShop__draw_accessory_item_spriteDraws 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.
0x0082647039CStylingShop__set_active_slot_from_clickSets 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.
0x008264A0746CStylingShop__build_category_name_stringBuilds 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.
0x008267E01634CStylingShop__populate_item_listPopulates 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.
0x00826E50589CStylingShop__load_costume_change_dataLoads 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.
0x008270A01379CStylingShop__create_navigation_buttonsCreates 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.
0x0082761089CStylingShop__LoadCharacterAppearanceLoads character appearance data from global variables (DAT_01733510-01733540) into object fields at offsets 0x88-0xa4. 8 appearance fields total.
0x00827670160CStylingShop__ResetAllSlotsResets 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.
0x0082771057CStylingShop__UpdateButtonStatesUpdates 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.
0x00827750140CStylingShop__SetTabModeSets 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.
0x00827900466CStylingShop__validate_item_for_slotValidates 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.
0x00827AE0543CStylingShop__add_button_and_labelCreates 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).
0x00827D001006CStylingShopHair__create_child_windowsCreates 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.
0x008280F0646CStylingShopCloth__create_child_windowsCreates 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.
0x008283801330CStylingShopAccessory__create_child_windowsCreates 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).
0x008288C0705CStylingShopBody__create_child_windowsCreates 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.
0x00828B90258CStylingShop__on_showOnShow 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.
0x00828CA0986CStylingShopSlotPanel__create_child_windowsCreates 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.
0x00829080416CStylingShopColorPicker__create_child_windowsCreates 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.
0x00829220687CStylingShopCharPanel__create_child_windowsCreates 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.
0x008294D01658CStylingShop__create_main_panelsCreates 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).
0x00829D10535CStylingShop__render_character_previewRenders 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.
0x00829F90132CStylingShopColorPicker__renderRenders the color picker panel. Draws palette indicator sprites for each of 8 color slots, then renders the selection highlight and color value display.
0x0082A03092CStylingShop__render_background_and_titleRenders 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.
0x0082A0C025CStylingShop__check_close_conditionChecks 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.
0x0082A0E039CStylingShopBasePanel__notify_parentNotifies 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.
0x0082A110174CStylingShopButton__on_clickOnClick 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.
0x0082A1C076CStylingShop__show_tooltip_if_emptyShows a tooltip if the styling shop field +0xE4 is empty (==0). Displays tooltip text from DAT_0112fb20 at position offset (0, -20).
0x0082A21081CStylingShopButton__on_mouse_downOnMouseDown 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.
0x0082A270188CStylingShop__update_panel_visibilityUpdates 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.
0x0082A3501836CStylingShop__save_and_load_like_listLoads 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.
0x0082AAC02932CStylingShop__load_like_list_and_create_previewsLoads 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.
0x0082B6801226CStylingShop__get_payment_by_typeGets 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.
0x0082BB703358CStylingShopColorPicker__render_items_and_pricesRenders 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).
0x0082C8901053CStylingShop__detect_and_register_appearance_changesDetects 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.
0x0082CCB0183CStylingShopSlotPanel__on_messageMessage 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).
0x0082CD7034CStylingShopColorPicker__on_messageMessage handler for the color picker panel. Simply triggers redraw on msg type 6, delegates other messages to base handler.
0x0082CDA0854CStylingShopItemListPanel__on_item_selectItem 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.
0x0082D100665CStylingShopHair__on_messageMessage 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.
0x0082D3A0419CStylingShopBody__on_messageMessage 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.
0x0082D550302CStylingShopAccessory__on_messageMessage 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.
0x0082D980334CStylingShopCharPanel__on_messageMessage 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.
0x0082DC6043CStylingShopItemListPanel__on_messageMessage handler for item list panel. Triggers redraw on msg 6/0xBD (color selection), delegates others to base handler.
0x0082DC9034CStylingShopPreviewPanel__on_messageMessage handler for preview panel. Triggers redraw on any msg type 6, delegates others to base handler.
0x0082DCC0837CStylingShop__on_messageMain 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.
0x0082E02063CStylingShopCharPanel__toggle_bottom_accessoryToggles 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).
0x0082E06015CStylingShop__copy_appearance_to_previewWrapper that copies appearance data from saved preset to the active character preview panel via CStylingShopCharPanel__CopyAppearanceData. 15 bytes.
0x0082E07063CStylingShopCharPanel__toggle_mid_accessoryToggles 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).
0x0082E0B01000CStylingShop__setup_scroll_panel_layoutSets 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.
0x0082E4A063CStylingShopCharPanel__toggle_top_accessoryToggles 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).
0x0082E4E025CStylingShop__set_change_flag_by_indexSets 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.
0x0082E500463CStylingShop__toggle_accessory_slotToggles 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.
0x0082E6D0107CStylingShop__update_color_slot_stateUpdates 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.
0x0082E74079CStylingShopCharPreview__set_appearance_paramsSets 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).
0x0082E790159CStylingShopBody__advance_to_next_styleAdvances 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).
0x0082E8301201CStylingShop__query_table_sizeQueries the StylingShop_GetSizeInTable Lua function to get the number of available items for a styling category. Used before navigating palette/style selections.
0x0082ECF0135CStylingShopBody__go_to_prev_styleGoes 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).
0x0082ED801147CStylingShop__navigate_palette_or_styleNavigates 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.
0x0082F4B0165CStylingShop__add_change_to_listAdds 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.
0x0082F720618CEquipWnd__init_layer_prioritiesInitializes 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.
0x0082F990495CEquipWnd__show_item_info_by_typeDisplays 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.
0x0082FBA0339CEquipWnd__render_character_spriteRenders 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).
0x0082FD00143CEquipWnd__render_item_spriteRenders 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.
0x0082FD901455CEquipWnd__load_all_slot_itemsLoads 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.
0x00830340179CEquipWnd__get_slot_index_from_coordsConverts 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.
0x00830400235CEquipWnd__get_item_info_at_coordsGets 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.
0x008304F0611CEquipWnd__load_slot_item_infoLoads 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.
0x00830760527CEquipWnd__create_navigation_windowsCreates 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.
0x00830970190CEquipWnd__draw_with_timed_buttonsDraws 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).
0x00830A30996CEquipWnd__draw_equipment_backgroundDraws 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.
0x00830E20280CEquipWnd__on_slot_clickHandles 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.
0x00830F40491CEquipWnd__on_slot_right_clickHandles 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.
0x00831210968CShopWnd__build_item_tooltip_and_update_equip_highlightCShopWnd: build item tooltip and update equip highlight
0x008315E0181CEquipWnd__on_slot_tooltipHandles 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.
0x008316A0436CEquipWnd__on_button_messageHandles 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.
0x0083186077CEquipWnd__set_slot_propertySets 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.
0x008318D01280CEquipWnd__build_sprite_name_stringsBuilds 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.
0x00831DD061CEquipWnd__get_row_direction_flagReturns 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.
0x00844BE0188CShopCategoryNode__ctorConstructor 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.
0x00844CA084CShopCategoryList__ctorConstructor for CShopCategoryList. Calls CDialogWnd__full_ctor for base initialization, sets vtable to PTR_CShopCategoryList__scalar_dtor_01130ad0.
0x00844D00188CShopCategoryNode__ctor_altAlternate 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.
0x00844DC067CShopCategoryNode__free_linked_list_headFrees the 0x54-byte linked list head allocation at field offset +4, if non-null.
0x00844E10104CShopCategoryNode__destroy_and_free_linked_list_headDestroys (via TownWarpInfo__dtor) and frees the 0x54-byte linked list head allocation at field offset +4, if non-null.
0x00844F1095CShopCategoryNode__dtorDestructor for CShopCategoryNode. Sets vtable to PTR_CShopCategoryNode__scalar_dtor_01130bac, destroys all linked list nodes, then calls UIWindowBase__dtor.
0x00844F7071CShopCategoryList__dtorDestructor for CShopCategoryList. Sets vtable to PTR_CShopCategoryList__scalar_dtor_01130ad0, then calls UIDialogBoxBase__destructor for base cleanup.
0x00844FC095CShopCategoryNode__dtor_baseBase destructor for CShopCategoryNode; sets vtable, destroys linked list nodes, calls heap cleanup
0x00845020129CShopCategory__copy_assignCopy assignment for CShopCategory; copies scalar fields, string, and sub-item vector
0x008450B0119CShopCategoryNode__scalar_dtorScalar deleting destructor for CShopCategoryNode; destroys then optionally frees 0xDC bytes
0x0084513099CShopCategoryList__scalar_dtorScalar deleting destructor for CShopCategoryList; destroys strings then optionally frees 0x120 bytes
0x008451A0119CShopCategoryNode__scalar_dtor_altScalar deleting destructor for CShopCategoryNode variant; destroys linked list, optionally frees 0xD4 bytes
0x008452201820CShopUI__validate_purchase_and_submitValidates cash shop cart: checks weight limit (30000), validates items, builds summary tree, submits purchase
0x00845940164CShopUI__on_purchase_responseHandles purchase response packet (type 0x1F); validates item availability, routes to confirm or error
0x008459F0124CShopUI__on_purchase_resultHandles purchase result packet (type 0x20); success routes to confirm, failure shows error dialog
0x00845A70325CShopUI__draw_grid_background_ADraws shop grid background with tab column separators and selection highlight for variant A
0x00845BC0312CShopUI__draw_grid_background_BDraws shop grid background with tab column separators for variant B (no FUN_008d0920 pre-call)
0x00845D0095CShopUI__clear_item_slot_row_AClears a row of item slots in the shop grid at the given row offset (variant A)
0x00845D6095CShopUI__clear_item_slot_row_BClears a row of item slots in the shop grid at the given row offset (variant B)
0x00845DC095CShopUI__draw_selected_row_highlight_ADraws selection highlight rectangle on the currently selected category row (variant A)
0x00845E2095CShopUI__draw_selected_row_highlight_BDraws selection highlight rectangle on the currently selected category row (variant B)
0x00845E80111CShopUI__get_category_index_at_pos_AReturns linked list index of shop category at given x,y pixel position; -1 if out of bounds (variant A)
0x00845EF0111CShopUI__get_category_index_at_pos_BReturns linked list index of shop category at given x,y pixel position; -1 if out of bounds (variant B)
0x00845F60418CShopUI__get_item_at_pos_AGets shop item info at x,y position in grid; outputs found flag and category data copy (variant A)
0x00846110422CShopUI__get_item_at_pos_BGets shop item info at x,y position in grid; outputs found flag and category data copy (variant B)
0x008462C0708CShopUI__get_item_detail_at_pos_AGets detailed item info at x,y including sub-items; uses itoa for item ID, returns category copy (variant A)
0x00846590773CShopUI__get_item_detail_at_pos_BGets detailed item info at x,y including sub-items; uses itoa for item ID, returns category copy (variant B)
0x008468A062CShopUI__is_pos_in_grid_area_AReturns true if x,y coords are within the shop item grid bounds (variant A)
0x008468E062CShopUI__is_pos_in_grid_area_BReturns true if x,y coords are within the shop item grid bounds (variant B)
0x0084692021CShopUI__check_weight_exceeds_limitReturns true if combined weight exceeds 30000 limit
0x008469401128CShopUI__build_item_price_tooltipBuilds tooltip string with item count and formatted price using msgstringtable entry 0xDE1
0x00846DB0245CShopUI__find_item_in_cart_by_idSearches completed cart entries by item ID via atoi; returns 1 if found, 0 if not
0x00846EB0254CShopUI__find_item_with_min_qtySearches cart for item by ID with minimum quantity check; returns 1 if found with sufficient qty
0x008481E0311CShopUI__on_mouse_moveCShopUI 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.
0x00848320374CShopUI__on_mouse_clickMouse 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.
0x008484A0750CShopUI__show_buy_item_tooltipHandles 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.
0x00848790998CShopUI__show_cart_summary_tooltipBuilds 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.
0x00848B80746CShopUI__show_sell_item_tooltipHandles 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.
0x00848E70209CShopUI__on_right_click_show_item_detail_AHandles 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.
0x00848F50209CShopUI__on_right_click_show_item_detail_BHandles 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.
0x0084903069CShopUI__on_mouse_wheelMouse 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.
0x0084908069CShopUI__on_mouse_wheel_altAlternate 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.
0x008490D0159CShopUI__on_scroll_dragUpdates 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.
0x00849170159CShopUI__on_scroll_drag_altUpdates scroll state for CShopUI variant B. Same logic as on_scroll_drag: calculates scrollable range, configures scrollbar, clamps offset, triggers redraw.
0x00849210137CShopUI__OnMessage_buy_tabMessage 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.
0x00849B30131CShopUI__OnMessage_sell_tabMessage 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.
0x00849EF0134CShopUI__vector_allocate_16byte_elementsAllocates a vector buffer for param_2 elements of 16 bytes each. Handles aligned allocation for buffers >= 0x1000 bytes.
0x00849F80172CShopUI__vector_destroy_0x4c_elementsDestroys all elements in a vector of 0x4c-byte CShopCategory structs by calling TownWarpInfo__dtor on each, then frees the buffer.
0x0084A040170CShopUI__list_push_back_categoryAppends 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.
0x0084A0F0103CShopUI__rbtree_destroy_nodes_recursiveRecursively 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).
0x0084A16075CShopUI__rbtree_lower_boundRed-black tree lower_bound search. Walks the tree comparing key at offset +0x10 against *param_3, returning the first node with key >= target value.
0x0084A1E084CShopUI__ctor_quantity_dialogConstructor for CShopUI quantity dialog variant. Calls CDialogWnd__full_ctor then sets vtable to CShopUI__update_item_quantity vtable.
0x0084A240263CShopUI__ctorFull 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.
0x0084A35067CShopUI__free_sentinel_nodeFrees a 0x18-byte sentinel/header node at field +4 if non-null. Used during CShopUI destruction.
0x0084A3A0111CShopUI__rbtree_destroy_allFully destroys a red-black tree. Recursively destroys all child nodes via rbtree_destroy_nodes_recursive, then frees the sentinel/root node (0x18 bytes).
0x0084A42078CShopUI__free_sentinel_node_AFrees a 0x18-byte sentinel/header node at field +4 if non-null. Variant A of CShopUI sentinel cleanup.
0x0084A47078CShopUI__free_sentinel_node_BFrees a 0x18-byte sentinel/header node at field +4 if non-null. Variant B of CShopUI sentinel cleanup.
0x0084A4C065CShopUI__dtor_baseCShopUI destructor (base level). Calls get_item_at_index with -1 to reset selection before cleanup.
0x0084A51071CShopUI__dtor_dialogCShopUI destructor for dialog variant. Sets vtable to CShopUI, then calls UIDialogBoxBase destructor.
0x0084A560190CShopUI__dtor_fullCShopUI full destructor. Frees linked list at offset 0x31, calls base destructors for get_item_at_index and UIWindowBase.
0x0084A620223CShopUI__tree_insert_itemInserts 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.
0x0084A70099CShopUI__scalar_deleting_dtor_dialogCShopUI scalar deleting destructor (dialog variant). Sets vtable, calls UIDialogBoxBase dtor, optionally frees 0x120 bytes.
0x0084A770214CShopUI__scalar_deleting_dtor_fullCShopUI scalar deleting destructor (full variant). Frees linked list, calls base dtors, optionally frees 0xd8 bytes.
0x0084A880212CShopUI__hit_testCShopUI 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.
0x0084A9A03998CShopUI__OnCreate_tabsCShopUI 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.
0x0084B940980CShopUI__OnDrawCShopUI 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.
0x0084BD40552CShopUI__set_window_titleSets 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).
0x0084C260294CShopUI__OnNotifyCShopUI 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.
0x0084CBD0129CShopWnd__constructorCShopWnd constructor. Calls UIWindowBase base ctor, sets CShopWndBase then CShopWnd vtables, initializes fields 0x2d-0x2e and 0x31 to 0.
0x0084CC60106CShopWndBase__constructorCShopWndBase constructor. Calls UIWindowBase base ctor, sets CShopWndBase vtable, initializes fields 0x2d-0x2e to 0.
0x0084CCD084CShopWnd__destructorCShopWnd destructor. Sets CShopWnd then CShopWndBase vtable, calls UIWindowBase destructor.
0x0084CD3071CShopWndBase__destructorCShopWndBase destructor. Sets CShopWndBase vtable, calls UIWindowBase destructor.
0x0084CD80112CShopWnd__scalar_deleting_dtorCShopWnd scalar deleting destructor. Calls CShopWnd destructor chain, optionally frees 200 (0xC8) bytes.
0x0084CDF099CShopWndBase__scalar_deleting_dtorCShopWndBase scalar deleting destructor. Calls CShopWndBase destructor, optionally frees 0xBC bytes.
0x0084CE60143CShopWnd__OnDraw_0084ce60CShopWnd OnDraw. Draws header bar with color (10,2) and title bar with color (2,2).
0x0084CF00197CShopWnd__OnCreate_0084cf00CShopWnd OnCreate. Creates text label widget (0xd8 bytes) with message 0x933, sets size 0x3e x 0xf, positions at (3, 0x16), adds hotkey label "Ctrl+G".
0x0084CFD0244CShopWnd__OnMessageCShopWnd OnMessage. Creates text label if not exists, resets selection indices to -1, loads NPC sprite, calls init_buttons.
0x0084D0D02071CShopWnd__draw_shop_infoCShopWnd 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.
0x0084D8F0316CShopWnd__draw_backgroundCShopWnd draw background. Fills header bar, title bar, content area with colored rectangles, draws tiled bottom border.
0x0084DA40154CShopWnd__OnNotifyCShopWnd 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.
0x0084DAE0111CShopWnd__OnNotify_baseCShopWnd 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.
0x0084DB50164CShopWnd__load_npc_spriteCShopWnd load NPC sprite. Loads NPC sprite resource based on NPC sprite ID from DAT_016d42f4+0x58. Falls back to default sprite if loading fails.
0x0084DC0056CShopWnd__sync_position_to_parentCShopWnd sync position to parent. Copies this window's position (x, y) and size (w, h) to the object at offset 0xb4.
0x008CE2C01148CUIEquipWindow__create_item_slot_widgetCreates 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.
0x008CE770226CUIEquipWindow__build_slot_list_by_levelBuilds 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.
0x008CE860300CUIEquipWindow__initialize_equipment_slotsInitializes 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.
0x008CE990198CUIEquipWindow__setup_slots_from_dataSets 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.
0x008CEA60353CUIEquipWindow__add_slot_entry_with_stringAdds 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.
0x008CEBD0300CUIEquipWindow__update_slot_timersUpdates 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.
0x008CED0038CUIEquipWindow__measure_slot_textMeasures 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.
0x008CED30361CUIEquipWindow__clip_and_render_text_linesClips 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.
0x008CEEA047CUIEquipWindow__set_mode_and_refreshSets the equipment window mode to param_2, then calls virtual methods at vtable+0x94 (draw 0x23 frames) and +0x98 (refresh) to update the display.
0x008CEED060CUIEquipWindow__handle_select_and_focusHandles 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.
0x008CEF10191CUIEquipWindow__create_button_widgetCreates 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.
0x008CEFD0234CUIEquipWindow__create_button_at_positionCreates 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.
0x008CF0C0231CUIEquipWindow__create_close_buttonCreates 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.
0x008CF1B0231CUIEquipWindow__create_expand_buttonCreates an expand button. Loads 3 distinct textures from DAT_0111a3e0/0111a41c/0111a458, positions at x-offset -0x1c, sets ID 0x20B.
0x008CF2A0231CUIEquipWindow__create_action_buttonCreates an action button with textures from DAT_0113e538/0113e568, positions at x-offset -0x1c, sets ID 0xCA.
0x008CF3901243CUIEquipWindow__create_named_button_3stateCreates 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.
0x008CF8701211CUIEquipWindow__create_named_button_2stateCreates 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.
0x008CFD30286CUIEquipWindow__show_item_tooltipShows 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.
0x008CFE50232CUIEquipWindow__create_radio_button_exCreates 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.
0x008CFF40194CUIEquipWindow__create_radio_buttonCreates a standard radio button widget (0x10c bytes). Uses default textures from DAT_010e1a50/010e1a70, positions at given coordinates, sets ID, selected state, click handler.
0x008D0010505CUIEquipWindow__handle_item_dropHandles 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.
0x008D0230153CUIEquipWindow__handle_item_double_clickHandles 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).
0x008D02D0259CUIEquipWindow__handle_item_right_clickHandles 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).
0x008D0E20270CUIEquipWindow__render_character_spriteRenders 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.
0x008D0F30737CUIEquipWindow__render_slot_page_itemsRenders 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.
0x008D1B20856CUIEquipWindow__render_inline_item_text_with_truncationRenders 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.
0x008D1E801252CUIEquipWindow__render_item_detail_panelRenders the item detail panel showing item name, description, and stats (1252 bytes).
0x008D23702341CUIEquipWindow__draw_full_windowMain draw function for the full equipment window. Renders all panels, slots, borders, character preview, and overlays (2341 bytes).
0x008D2CE0368CUIEquipWindow__draw_slot_background_rowDraws a single row of slot backgrounds in the equipment grid (368 bytes).
0x008D2E50428CUIEquipWindow__draw_item_icon_in_slotDraws an item icon within a specific equipment slot position (428 bytes).
0x008D3000554CUIEquipWindow__draw_slot_grid_rowDraws a full row of the equipment slot grid with item icons and backgrounds (554 bytes).
0x008D3230509CUIEquipWindow__draw_animated_slot_effectsDraws animated effects (glow, highlight) on equipment slots during events like equipping (509 bytes).
0x008D3430645CUIEquipWindow__handle_mouse_eventHandles 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.
0x008D3720807CUIEquipWindow__handle_command_messageHandles command messages (button clicks, close, tab switch) for the equipment window (807 bytes).
0x008D3AB0544CUIEquipWindow__build_scroll_packetsBuilds 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.
0x008D3CD01069CUIEquipWindow__build_keyboard_input_packetsBuilds 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.
0x008D4100544CUIEquipWindow__build_slot_selection_packetsBuilds 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.
0x008D4320726CUIEquipWindow__build_slot_refresh_packetsBuilds 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.
0x008D46001074CUIEquipWindow__build_equip_packetsBuilds 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.
0x008D4A401069CUIEquipWindow__build_unequip_packetsBuilds unequip action packets. Creates packet 0x5492 (start), serializes tab data with message string 0x5D into packet 0x5494, and ends with packet 0x5493.
0x008D4E702149CUIEquipWindow__build_equip_packet_bufferBuilds 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.
0x008D56E0717CUIEquipWindow__build_item_info_packetBuilds 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.
0x008D59B0717CUIEquipWindow__build_item_stats_packetBuilds 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.
0x008D5C801069CUIEquipWindow__build_tab_open_packetBuilds 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.
0x008D60B01069CUIEquipWindow__build_tab_close_packetBuilds a tab-close packet (opcodes 0x5528/0x5529/0x552A). Same structure as build_tab_open_packet but with close opcodes and message text index 0x179.
0x008D64E01069CUIEquipWindow__build_equip_state_packetBuilds 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.
0x008D69101067CUIEquipWindow__build_equip_sync_packetBuilds 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.
0x008D6D40968CUIEquipWindow__build_slot_layout_packetBuilds 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.
0x008D7110775CUIEquipWindow__build_tooltip_packetBuilds a tooltip display packet (opcodes 0x54C4/0x54C5/0x54C6). The 0x54C6 packet carries a single byte from this+0xC0 (tooltip type/mode flag).
0x008D742056CUIEquipWindow__get_slot_ids_to_bufferCopies 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.
0x008D7460259CUIEquipWindow__rbtree_find_or_insertSearches 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).
0x008D76B0215CUIEquipWindow__hit_test_card_slotHit-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.
0x008D77901328CUIEquipWindow__build_sprite_path_stringBuilds a sprite file path string from a slot type ID. Converts type to folder/filename for loading .spr/.act resources (1328 bytes).
0x008D7CC0468CUIEquipWindow__extract_colored_text_segmentsExtracts 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.
0x008D7EA0143CUIEquipWindow__hit_test_grid_cellHit-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.
0x008D7F3093CUIEquipWindow__get_item_desc_at_indexGets an item description at the specified linked list index. Delegates to get_shop_item_by_index with the list at offset 0xbc.
0x008D7F9082CUIEquipWindow__hit_test_page_slotHit-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).
0x008D7FF01187CUIEquipWindow__word_wrap_item_textWord-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.
0x008D84A0220CUIEquipWindow__build_item_desc_by_modeBuilds 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.
0x008D8580326CUIEquipWindow__get_item_desc_from_slot_posGets 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.
0x008D86D0276CUIEquipWindow__get_item_desc_from_list_posGets 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.
0x008D87F0252CUIEquipWindow__get_shop_item_by_indexGets 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.
0x008D88F01170CUIEquipWindow__get_item_desc_from_grid_posGets 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.
0x008E0A202016CEquipWnd__create_tab_buttons_and_textCreates 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).
0x008E12101656CEquipWnd__create_text_label_and_buttonsCreates 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.
0x008E18903116CEquipWnd__create_equip_slot_widgetsCreates 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.
0x008E24C0125CEquipWnd__init_shadow_equip_typeInitializes 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.
0x008E254074CEquipWnd__init_item_list_with_spriteInitializes 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.
0x008E25902803CEquipWnd__create_sprite_list_and_buttonsCreates 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.
0x008E3C8073CEquipWnd__reset_title_text_altResets 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.
0x008E3CD01700CEquipWnd__create_buttons_and_colored_scroll_listCreates 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.
0x008E43901497CEquipWnd__render_equip_list_with_tabsRenders the equipment list with tab navigation (1497 bytes). Handles tabbed equipment categories and item display.
0x008E49701497CEquipWnd__render_equip_list_altAlternative equipment list renderer (1497 bytes). Similar to render_equip_list_with_tabs with different layout.
0x008E4F501369CEquipWnd__render_equip_detail_viewRenders the equipment detail view (1369 bytes). Shows detailed item stats, description, and options for equipped items.
0x008E54B01388CEquipWnd__render_equip_summary_viewRenders the equipment summary view (1388 bytes). Shows a compact overview of all equipped items.
0x008E5A201662CEquipWnd__render_equip_slots_displayRenders the equipment slots display (1662 bytes). Draws equipped item icons, slot backgrounds, and highlights for the equipment window.
0x008E60A02706CEquipWnd__render_extended_equip_displayRenders the extended equipment display with shadow/costume slots (2706 bytes). Handles multi-panel equipment views.
0x008E6B401499CEquipWnd__render_costume_equip_displayRenders the costume equipment display (1499 bytes). Shows costume slot items and their equipped states.
0x008E71301318CEquipWnd__render_shadow_equip_displayRenders the shadow equipment display (1318 bytes). Shows shadow gear slots and their equipped items.
0x008E76601612CEquipWnd__render_mount_displayRenders the mount/riding equipment display (1612 bytes). Shows mount-related equipment slots.
0x008F3860102CEquipWnd__on_click_close_and_sync_positionClick 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).
0x008F3B7044CEquipWnd__on_drag_sync_mount_positionDrag 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.
0x008F3C2044CEquipWnd__on_drag_sync_cart_positionDrag 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.
0x008F4F8059CEquipWnd__update_tooltip_timerUpdates 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.
0x008F6640107CEquipWnd__hide_text_widget_and_notifyHides 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.
0x00973AB0359CShopWnd__get_item_at_grid_pos_tab1_00973ab0Gets 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.
0x00973C20311CShopWnd__get_item_at_grid_pos_tab2_00973c20Gets 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).
0x00973D60311CShopWnd__get_item_at_grid_pos_tab3_00973d60Gets shop item at grid position for tab 3 (x offset 0x14). Identical to tab2 variant.
0x00973EA0311CShopWnd__get_item_at_grid_pos_tab4_00973ea0Gets shop item at grid position for tab 4 (x offset 0x28). Same linked list iteration and grid index matching as other tab variants.
0x00973FE0327CShopWnd__get_item_at_grid_pos_tab5_00973fe0Gets shop item at grid position for tab 5 (x range check param_3 >= 0x28 and < this+0x14 - 0x14). Uses wider bounds validation.
0x00974130339CShopWnd__get_item_at_grid_pos_search_tab_00974130Gets 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.
0x009749101842CShopWnd__init_buy_ui_00974910Initializes 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.
0x009750503187CShopWnd__init_cancel_buttons_00975050Initializes 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.
0x00975CD03011CShopWnd__init_exchange_buttons_00975cd0Initializes 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.
0x009768A03175CShopWnd__init_sell_buttons_009768a0Initializes 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.
0x00977510665CShopWnd__init_simple_ui_variant1_00977510Initializes 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.
0x009777B0665CShopWnd__init_simple_ui_variant2_009777b0Identical to variant1 at 00977510. Initializes simple shop window with editable text, label/checkbox, dialog button, scrollbar. Same layout and widget creation logic.
0x00977A50486CShopWnd__init_scrollbar_and_search_00977a50Initializes 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.
0x00977C40450CShopWnd__init_scrollbar_and_label_00977c40Initializes 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.
0x009792B01646CShopWnd__init_full_ui_with_tabs_009792b0Initializes 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.
0x009799203394CShopWnd__init_close_button_ui_00979920Initializes 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.
0x0097A670906CShopWnd__init_confirm_cancel_ui_0097a670Initializes 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.
0x0097AA004600CShopWnd__init_sell_or_cancel_ui_0097aa00Initializes 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.
0x0097BC00292CShopWnd__init_optional_text_and_pages_0097bc00Optionally 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.
0x0097BD30700CShopWnd__init_inventory_ui_0097bd30Initializes 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.
0x0097BFF0567CShopWnd__init_mode_dependent_ui_0097bff0Initializes 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.
0x0097C2304070CUIShopWindow__create_list_widgetsCreates 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.
0x0097D3004313CUIShopWindow__create_detail_widgetsCreates 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.
0x0097E3F0926CShopWnd__draw_item_grid_basic_0097e3f0Draws 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.
0x0097E7A01591CShopWnd__draw_item_grid_with_prices_0097e7a0Draws 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.
0x0097EDE01078CShopWnd__draw_item_grid_with_tooltips_0097ede0Draws 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.
0x0097F2201392CShopWnd__draw_item_grid_with_zeny_prices_0097f220Draws 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.
0x0097F7901110CShopWnd__draw_item_grid_offset_layout_0097f790Draws 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.
0x0097FBF01865CShopWnd__draw_item_grid_with_currency_0097fbf0Draws 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.
0x00980340712CShopWnd__draw_item_list_with_label_v1_00980340Draws 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.
0x00980610712CShopWnd__draw_item_list_with_label_v2_00980610Nearly 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).
0x009808E01648CShopWnd__draw_item_grid_with_preview_009808e0Draws 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).
0x00980F502075CUIShopWindow__draw_grid_viewDraws 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.
0x00981770538CShopWnd__draw_item_grid_with_timer_00981770Draws 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.
0x009819C01300CUIShopWindow__draw_list_viewDraws 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.
0x00981EE02270CUIShopWindow__draw_list_view_with_timerDraws 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).
0x009827C0691CUIShopWindow__draw_weight_and_zeny_footerDraws 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.
0x00982A802670CUIShopWindow__draw_buy_sell_viewDraws 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.
0x009834F089CShopWnd__draw_header_banner_009834f0Draws 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.
0x00983F8098CShopWnd__on_mouse_move_tooltip_a0_00983f80Mouse 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.
0x00983FF095CShopWnd__on_mouse_move_tooltip_16_00983ff0Mouse move handler variant. Same as 00983f80 but uses tooltip DAT_014578d0 and size 0x16.
0x00984050107CShopWnd__on_mouse_move_tooltip_a1_00984050Mouse move handler variant. Uses tooltip DAT_014578e0 and size 0xa1. Additionally checks this+0x3e before processing.
0x009840C0104CShopWnd__on_mouse_move_tooltip_18_009840c0Mouse move handler variant. Uses tooltip DAT_014578dc and size 0x18. Also checks this+0x3e before processing.
0x00984170247CShopWnd__on_click_item_handler_00984170Click 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).
0x009844E0178CShopWnd__on_click_vending_item_009844e0Click 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.
0x00984700467CShopWnd__on_hover_item_tab1_show_tooltip_00984700Hover 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.
0x009848E0467CShopWnd__on_hover_item_tab1_show_tooltip_v2_009848e0Identical logic to 00984700. Hover handler for tab 1 items showing tooltip on hover. Duplicate variant.
0x00984AC0468CShopWnd__on_hover_item_show_tooltip_mode3_00984ac0Hover 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.
0x00984CA0325CShopWnd__on_hover_item_show_tooltip_mode3_v2_00984ca0Similar to 00984ac0 but simpler - directly gets item via UIShopWnd__get_item_at_index instead of grid pos. Shows tooltip with mode 3.
0x00984DF0278CShopWnd__on_hover_item_tab2_tooltip_00984df0Hover 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.
0x00984F10278CShopWnd__on_hover_item_tab3_tooltip_00984f10Hover 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.
0x00985030291CShopWnd__on_hover_item_tab4_tooltip_00985030Hover 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.
0x00985160531CShopWnd__on_hover_item_tab5_with_shift_00985160Hover 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.
0x0098538024CShopWnd__on_hover_header_only_00985380Minimal hover handler that only processes header area (y < 0x11). No item hover logic.
0x009853A0356CShopWnd__on_hover_item_conditional_tooltip_009853a0Hover 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.
0x00985510250CShopWnd__on_hover_item_tooltip_mode_c_00985510Hover handler showing tooltip with mode 0xc. Only processes when this+0x43 == 0. Updates selection index at this+0x3f, gets item by index, shows tooltip.
0x00985610544CShopWnd__on_hover_item_tab1_with_shift_00985610Hover 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.
0x00985830317CShopWnd__on_hover_item_mode_dependent_tooltip_00985830Hover 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.
0x00985970300CShopWnd__on_hover_search_tab_tooltip_00985970Hover 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.
0x00985AA0232CShopWnd__on_hover_vending_item_tooltip_00985aa0Hover 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.
0x00985B90820CShopWnd__on_right_click_item_show_info_00985b90Right-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.
0x00985ED0703CShopWnd__on_right_click_item_show_zeny_info_00985ed0Right-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.
0x009861901059CUIShopWindow__show_item_tooltipShows 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.
0x009865C0931CUIShopWindow__show_item_tooltip_tab1_altShows 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.
0x009869701669CUIShopWindow__show_item_tooltip_with_currencyShows 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.
0x00987000507CUIShopWindow__show_tooltip_tab2Shows 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.
0x00987200507CUIShopWindow__show_tooltip_tab3Shows 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.
0x00987400507CUIShopWindow__show_tooltip_tab4Shows 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.
0x00987600584CUIShopWindow__show_tooltip_tab5Shows 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.
0x00987850832CUIShopWindow__show_tooltip_sell_tabShows 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.
0x00987B90422CUIShopWindow__show_tooltip_with_quantity_priceShows 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.
0x00987D40936CUIShopWindow__show_tooltip_buy_sell_tabShows 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.
0x009880F0590CUIShopWindow__show_tooltip_with_extra_fieldShows 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'.
0x00988340590CUIShopWindow__show_tooltip_with_extra_field_altShows 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.
0x009886F01318CUIShopWindow__on_tick_update_pricesTick 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.
0x00988C2051CShopWnd__check_timeout_and_close_00988c20Checks 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.
0x00988C60237CShopWnd__on_click_item_send_action_00988c60Click 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.
0x00988D50181CShopWnd__on_click_tab1_item_send_action_00988d50Click handler for tab 1 items. Gets item at grid pos tab1, finds parent window (0xc), sends action 0x18 with item data.
0x00988E10181CShopWnd__on_click_tab1_item_send_action_v2_00988e10Identical to 00988d50. Click handler for tab 1 items sending action 0x18.
0x00988ED0191CShopWnd__on_click_tab1_item_with_context_00988ed0Click handler for tab 1 items. Similar to 00988d50 but calls FUN_00ad6450 for context before finding parent and sending action 0x18.
0x00988F90237CShopWnd__on_click_item_by_index_send_action_00988f90Click handler using hit test at this+0x40. Gets item by index, calls FUN_00ad6450, finds parent (0xc), sends action 0x18 with item data.
0x00989080387CUIShopWindow__on_click_tab2_itemHandles 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.
0x00989210387CUIShopWindow__on_click_tab3_itemHandles 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.
0x009893A0374CUIShopWindow__on_click_tab4_itemHandles 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.
0x00989520890CUIShopWindow__on_click_tab5_itemHandles 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.
0x009898A0191CUIShopWindow__on_click_tab1_item_simpleSimple 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.
0x00989960411CUIShopWindow__on_click_buy_sell_itemHandles 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.
0x00989B00319CUIShopWindow__on_click_sell_itemHandles 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.
0x00989C40423CUIShopWindow__on_click_tab1_item_with_modifiersHandles 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.
0x00989DF0485CUIShopWindow__on_click_tab1_item_for_enchantHandles 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).
0x00989FE0501CUIShopWindow__on_click_search_tab_itemHandles 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.
0x0098A1E050CShopWnd__update_hover_selection_b_0098a1e0Updates hover selection index at this+0x46 via hit_test_item_grid_b. Triggers redraw (virtual 0x98) if selection changed. No tooltip or click action.
0x0098A24023CShopWnd__call_parent_method_8c_0098a240Calls virtual method 0x8c on parent widget at this+0x10 if it exists. Used as a delegate/forward handler.
0x0098A26066CShopWnd__on_mouse_wheel_scrollMouse 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.
0x0098A2B066CShopWnd__on_mouse_wheel_scroll_v1_0098a2b0Mouse 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.
0x0098A30066CShopWnd__on_mouse_wheel_scroll_v2_0098a300Identical to v1. Mouse wheel scroll handler using this+0x39 flag, this+0x37 rows, scrollbar at this+0x30.
0x0098A35066CShopWnd__on_mouse_wheel_scroll_alt_fields_0098a350Mouse wheel scroll handler using alternative field offsets: this+0x51 (has items), this+0x50 (rows), scrollbar at this+0x4d.
0x0098A3A066CShopWnd__on_mouse_wheel_scroll_alt_fields_v2_0098a3a0Mouse wheel scroll handler using fields: this+0x4a (has items), this+0x49 (rows), scrollbar at this+0x2e.
0x0098A3F0419CUIShopWindow__update_layout_on_resizeUpdates 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.
0x0098A5A0175CShopWnd__update_scrollbar_range_0098a5a0Updates 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.
0x0098A650158CShopWnd__update_scrollbar_range_search_tab_0098a650Updates scrollbar range for search tab. Uses fields at this+0x134 (scrollbar), this+0x158 (visible rows), this+0x14c (total rows), this+0x138 (scroll position).
0x0098A6F0175CShopWnd__update_scrollbar_range_alt_0098a6f0Updates 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.
0x0098AB40135CShopWnd__handle_quantity_input_0098ab40Massive 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.
0x0098B980138CShopWnd__handle_buy_window_messages_0098b980Main 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).
0x0098CBF0138CShopWnd__handle_sell_window_messages_0098cbf0Main 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).
0x0098D1F0137CShopWnd__handle_generic_shop_messages_0098d1f0Generic 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).
0x0098D690138CShopWnd__handle_generic_shop_messages_v2_0098d690Generic 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.
0x0098E6C086CShopWnd__handle_catalog_window_messages_0098e6c0Catalog/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).
0x0098F0F5689CShopWnd__handle_search_filter_inputCShopWnd: handle search filter input
0x0098F700131CShopWnd__handle_full_shop_window_messages_0098f700Full 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).
0x00990090144CUIEquipWindow__handle_messageMessage 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).
0x00994B90301CUIEquipWindow__enter_delete_modeEnters 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.
0x00994D10109CUIShopWindow__clear_item_marksClears 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).
0x00995050193CUIShopWindow__check_item_matches_view_filterChecks 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.
0x00995170417CUIShopWindow__populate_item_listPopulates 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.
0x009957C0790CUIShopWindow__update_sort_button_textureUpdates 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.
0x00995CF091CUIShopWindow__sort_items_and_reverse_list_aSorts 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.
0x00995D5091CUIShopWindow__sort_items_and_reverse_list_bSame 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.
0x00995DB091CUIShopWindow__sort_items_and_reverse_list_cSame 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.
0x00995E10632CUIShopWindow__filter_items_by_search_stringFilters 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.
0x0099687055CUIShopWindow__sort_items_by_type_aSorts 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.
0x009968B055CUIShopWindow__sort_items_by_type_bSorts 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.
0x009968F055CUIShopWindow__sort_items_by_type_cSorts 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.
0x0099708029CUIShopWindow__set_selected_state_wrapperThin wrapper that calls UIRadioButton__set_selected with the given state value.
0x009970A096CUIShopWindow__set_description_textSets 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.
0x0099710096CUIShopWindow__set_description_text_00997100Sets 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.
0x0099716032CUIShopWindow__set_timer_durationSets 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.
0x0099718093CUIShopWindowBase__set_timer_and_extend_heightSets 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.
0x009971E0103CUIShopWindow__set_search_textSets 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.
0x00997250254CUIShopWindowBase__ctorConstructor 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).
0x009973A071CUIShopWindowBase__dtorDestructor for a shop window base class. Sets vtable pointer and delegates to UIWindowBase destructor.
0x0099746099CUIShopWindowBase__scalar_deleting_dtorScalar deleting destructor for shop window base. Sets vtable, calls base dtor, optionally frees memory (0x118 bytes) if param_2 bit 0 is set.
0x0099933035CUIShopWindow__on_double_click_closeHandles 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.
0x0099936024CUIShopWindow__draw_header_if_visibleDraws the window header area only if the y position is less than 0x11 (header height). Calls UIWindow__draw_header_area when visible.
0x00999380172CUIShopWindow__show_weight_tooltipShows 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.
0x0099943091CUIShopWindow__draw_and_position_child_windowDraws 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.
0x00999490263CUIShopWindowBase__toggle_window_sizeToggles 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).
0x0099F780195CVendingWindow__ctor_0099f780Constructor 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.
0x0099F850116CSearchStoreWindow__ctor_0099f850Constructor for CSearchStoreWindow. Calls UIWindowBase__ctor, sets vtable to 01147850, initializes 3 member pointers to zero (0x2E-0x30).
0x0099F8D0115CSearchStoreResultWindow__ctor_0099f8d0Constructor for CSearchStoreResultWindow. Calls UIWindowBase__ctor, sets vtable to 01147ad8, initializes 3 array elements of 0xF8 bytes each via eh_vector_constructor.
0x0099F950103CSearchStoreInfoWindow__ctor_0099f950Constructor for CSearchStoreInfoWindow. Calls UIWindowBase__ctor, sets vtable to 01147bb0, initializes flag byte at 0x2E to 0 and pointer at 0x2D to null.
0x0099F9C0150CBuyingStoreWindow__ctor_0099f9c0Constructor for CBuyingStoreWindow. Calls UIWindowBase__ctor, sets vtable to 01147a00, initializes 6 member fields (0x2E-0x33) to zero.
0x0099FB70176CVendingWindow__dtor_0099fb70Destructor for CVendingWindow. Frees linked list at offset 0x34, clears two child structures, calls UIWindowBase__dtor.
0x0099FC2095CSearchStoreWindow__dtor_0099fc20Destructor for CSearchStoreWindow. Sets vtable to 01147850, clears child structure, calls UIWindowBase__dtor.
0x0099FC80108CSearchStoreResultWindow__dtor_0099fc80Destructor for CSearchStoreResultWindow. Sets vtable to 01147ad8, destructs 3 array elements (0xF8 bytes each), calls UIWindowBase__dtor.
0x0099FCF071CSearchStoreInfoWindow__dtor_0099fcf0Destructor for CSearchStoreInfoWindow. Sets vtable to 01147bb0, calls UIWindowBase__dtor.
0x0099FD40110CBuyingStoreWindow__dtor_0099fd40Destructor for CBuyingStoreWindow. Sets vtable to 01147a00, clears two child structures, calls UIWindowBase__dtor.
0x0099FDB0200CVendingWindow__scalar_deleting_dtor_0099fdb0Scalar deleting destructor for CVendingWindow (size 0xD8). Full cleanup including linked list and child structures, conditionally frees memory.
0x0099FE80119CSearchStoreWindow__scalar_deleting_dtor_0099fe80Scalar deleting destructor for CSearchStoreWindow (size 0xC4). Clears child structure, calls UIWindowBase__dtor, conditionally frees memory.
0x0099FF00132CSearchStoreResultWindow__scalar_deleting_dtor_0099ff00Scalar deleting destructor for CSearchStoreResultWindow (size 0x3A0). Destructs 3 array elements, calls UIWindowBase__dtor, conditionally frees memory.
0x0099FF9099CSearchStoreInfoWindow__scalar_deleting_dtor_0099ff90Scalar deleting destructor for CSearchStoreInfoWindow (size 0xBC). Sets vtable, calls UIWindowBase__dtor, conditionally frees memory.
0x009A0000134CBuyingStoreWindow__scalar_deleting_dtor_009a0000Scalar deleting destructor for CBuyingStoreWindow (size 0xD0). Clears two child structures, calls UIWindowBase__dtor, conditionally frees memory.
0x009A0090449CSearchStoreResultWindow__handle_item_drop_009a0090Handles 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.
0x009A0280520CVendingWindow__build_vending_packet_009a0280Builds 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.
0x009A0490506CSearchStoreWindow__build_search_packet_009a0490Builds 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.
0x009A0690292CSearchStoreInfoWindow__build_info_packet_009a0690Builds 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.
0x009A07C0539CBuyingStoreWindow__build_buying_packet_009a07c0Builds 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.
0x009A09E0228CSearchStoreResultWindow__handle_click_009a09e0Handles 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.
0x009A0B002688CVendingWindow__handle_event_009a0b00Main event handler for CVendingWindow. Handles vending-related UI events (open/close shop, add/remove items, price changes, etc.).
0x009A15902688CSearchStoreWindow__handle_event_009a1590Main event handler for CSearchStoreWindow. Handles search store UI events (search, filter, pagination, etc.).
0x009A20202440CSearchStoreResultWindow__handle_event_009a2020Main event handler for CSearchStoreResultWindow. Handles search result display, item selection, and purchase interactions.
0x009A29B01043CSearchStoreInfoWindow__handle_event_009a29b0Main event handler for CSearchStoreInfoWindow. Handles store info display events.
0x009A2DD02688CBuyingStoreWindow__handle_event_009a2dd0Main event handler for CBuyingStoreWindow. Handles buying store UI events (item selection, price setting, open/close).
0x009A38E0609CVendingWindow__create_ui_009a38e0Creates the UI layout for CVendingWindow (vending shop setup/display).
0x009A3D10206CVendingWindow__handle_command_and_renderHandles 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.
0x009A3DE0211CSearchStoreWindow__handle_commandCommand 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).
0x009A42E0202CBuyingStoreWindow__handle_commandCommand 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).
0x009A48C0117CBuyingStoreWindow__handle_command_009a48c0Command 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).
0x009A4C5079CSearchStoreInfoWindow__handle_commandCommand 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.
0x009A4CA0202CSearchStoreResultWindow__handle_commandCommand 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).
0x00A176909thunk_to_CShopWnd__update_item_info_display_00a18660_00a17690Single-call wrapper that delegates to FUN_00a18660
0x00A176B09thunk_to_CShopWnd__update_item_info_display_00a18660_00a176b0Thunk that calls FUN_00a18660 and returns
0x00A176C0112CShopWnd__apply_color_picker_to_parent_00a176c0Reads 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).
0x00A177301169CShopWnd__init_shop_item_lists_00a17730Initializes 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.
0x00A17BF033CShopWnd__dispatch_vtable_0x70_00a17bf0Virtual dispatch thunk. Calls vtable method at offset 0x70 on the object at this+0xEC.
0x00A17C20769CShopWnd__validate_and_set_price_00a17c20Validates 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.
0x00A17F3036CShopWnd__dispatch_vtable_0x80_00a17f30Virtual dispatch thunk. Calls vtable method at offset 0x80 on the object at this+0xEC.
0x00A17F6074CShopWnd__refresh_list_scroll_position_00a17f60Refreshes 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).
0x00A17FB0165CShopWnd__on_message_00a17fb0Shop 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.
0x00A18660731CShopWnd__update_item_info_display_00a18660Updates 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.
0x00A1894076CShopWnd__set_price_display_color_00a18940Converts 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.
0x00A18990270CShopWnd__update_price_texts_00a18990Updates 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.
0x00A18AA0140CShopWnd__refresh_item_list_all_dirty_00a18aa0Marks 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.
0x00A71140444ShopListCtrl__ctorConstructor 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.
0x00A71300348ShopListCtrl__dtorDestructor 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.
0x00A71500145ShopListCtrl__destroy_item_data_listDestroys 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.
0x00A71680164ShopListCtrl__copy_delegate_and_initCopies 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.
0x00A7173038ShopListCtrl__scalar_deleting_dtorScalar deleting destructor for ShopListCtrl. Calls ShopListCtrl__dtor, then conditionally frees the 0x138-byte object if param_2 bit 0 is set.
0x00A71760353ShopListCtrl__create_item_buttonCreates 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.
0x00A718D0115ShopListCtrl__create_item_windowCreates a window item for the ShopListCtrl. Allocates 0x110-byte object and constructs it via FUN_00a77200. Returns 0 if allocation fails.
0x00A7195085ShopListCtrl__clear_visible_itemsClears 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.
0x00A719B036ShopListCtrl__set_scroll_params_and_resizeSets scroll parameters (item width/height at +0xB4/+0xB8) and resizes the control via CEffect__set_size_and_reload.
0x00A719E082ShopListCtrl__init_layoutInitializes 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.
0x00A71A40183ShopListCtrl__create_toggle_buttonCreates 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).
0x00A71B0069ShopListCtrl__get_selected_itemGets 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.
0x00A71B50525ShopListCtrl__create_scrollbar_and_dialogCreates 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.
0x00A71D60824ShopListCtrl__create_header_and_columnsCreates 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.
0x00A720A014676ShopListCtrl__static_layout_initShopListCtrl: static layout init
0x00A75A00636ShopListItemButton__create_text_labelCreates 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.
0x00A75C9063ShopListItemButton__on_click_forwardHandles 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.
0x00A75CD065ShopListCtrl__highlight_selected_itemHighlights 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.
0x00A75D20603ShopListCtrl__rebuild_visible_itemsRebuilds 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.
0x00A75F80522ShopListCtrl__load_state_texturesLoads 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.
0x00A76190115ShopListCtrl__on_resizeHandles resize of the ShopListCtrl. Calls CEffect__resize_surface, rebuilds visible items, resizes the scrollbar, and updates scrollbar max/range/position for the new dimensions.
0x00A76210498ShopListCtrl__update_visible_itemsUpdates 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.
0x00A76410218ShopListCtrl__on_item_clickedHandles 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.
0x00A764F0216ShopListCtrl__set_texture_namesSets 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.
0x00A765D022ShopListCtrl__create_vtable_callback_aCreates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4.
0x00A765F022ShopListCtrl__create_vtable_callback_bCreates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4.
0x00A7661022ShopListCtrl__create_vtable_callback_cCreates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4.
0x00A7663022ShopListCtrl__create_vtable_callback_dCreates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4.
0x00A7665022ShopListCtrl__create_vtable_callback_eCreates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4.
0x00A7667022ShopListCtrl__create_vtable_callback_fCreates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4.
0x00A7669022ShopListCtrl__create_vtable_callback_gCreates a vtable callback for ShopListCtrl. Sets vtable pointer and copies context from +4.
0x00A766B068ShopListCtrl__conditional_free_aConditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object.
0x00A7670068ShopListCtrl__conditional_free_bConditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object.
0x00A7675068ShopListCtrl__conditional_free_cConditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object.
0x00A767A068ShopListCtrl__conditional_free_dConditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object.
0x00A767F068ShopListCtrl__conditional_free_eConditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object.
0x00A7684068ShopListCtrl__conditional_free_fConditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object.
0x00A7689068ShopListCtrl__conditional_free_gConditional free for a ShopListCtrl callback object. If param_2 is nonzero, frees the 8-byte object.
0x00A768F065ShopListCtrl__highlight_selected_item_callbackCallback that highlights the selected item in the shop list. Dereferences param_2, iterates all visible items, calling vtable+0xDC with true/false for selection.
0x00A7694020ShopListCtrl__wrapper_update_visible_itemsWrapper callback that calls ShopListCtrl__update_visible_items with dereferenced first param.
0x00A76960216ShopListCtrl__on_item_clicked_callbackCallback that handles item click in the ShopListCtrl. Same logic as ShopListCtrl__on_item_clicked but accessed through param_1's context pointer at +4.
0x00A76A4023ShopListCtrl__wrapper_null_stub_aWrapper callback that calls null_stub_00a77b10 with dereferenced first param and second param.
0x00A76A6023ShopListCtrl__wrapper_update_item_displayWrapper callback that calls UIListMenu__update_item_display with dereferenced first param and second param. Not a null stub.
0x00A76B1022ShopListCtrl__create_vtable_callback_hCreates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_a and copies context from +4.
0x00A76B3022ShopListCtrl__create_vtable_callback_iCreates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_b and copies context from +4.
0x00A76B5022ShopListCtrl__create_vtable_callback_jCreates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_c and copies context from +4.
0x00A76B7022ShopListCtrl__create_vtable_callback_kCreates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_d and copies context from +4.
0x00A76B9022ShopListCtrl__create_vtable_callback_lCreates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_e and copies context from +4.
0x00A76BB022ShopListCtrl__create_vtable_callback_mCreates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_f and copies context from +4.
0x00A76BD022ShopListCtrl__create_vtable_callback_nCreates a vtable callback for ShopListCtrl. Sets vtable to same pointer as callback_g and copies context from +4.
0x00A77050123ShopListCtrl__destroy_item_data_list_with_mapsDestroys 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.
0x00D5A380111CShopManager__handle_purchase_resultHandles 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.
0x00DD8CC0232CShopManager__copy_items_to_cartCopies 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.
0x00DDA470159CShopManager__remove_sold_item_from_listRemoves 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.
0x00DDA510133CShopManager__remove_bought_itemRemoves 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.
0x00DDA5A0225CShopManager__remove_vending_itemRemoves 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.
0x00DDA690171CShopManager__remove_item_from_buy_listRemoves/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.
0x00DDA8B0109CShopManager__remove_item_from_sell_listRemoves/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.
0x00DDA92079CShopManager__remove_item_from_list_1760Removes/decrements an item from the list at +0x1760. Matches by item ID, decrements quantity by param_2+0x10 amount. Removes node if quantity <= 0.
0x00DDA97079CShopManager__remove_item_from_list_1748Removes/decrements an item from the list at +0x1748. Matches by item ID, decrements quantity. Removes node if quantity <= 0.
0x00DDA9C0139CShopManager__remove_item_by_name_from_list_1718Removes/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.
0x00DDAA5085CShopManager__remove_item_by_id_from_list_1718Removes/decrements an item from list at +0x1718 by item ID. Handles unlimited quantity (-1). Decrements and removes if <= 0.
0x00DDAAB0127CShopManager__remove_item_by_name_from_list_1720Removes/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.
0x00DDAC4079CShopManager__remove_item_from_list_1730Removes/decrements an item from list at +0x1730 by item ID. Decrements quantity and removes node if <= 0.
0x00DDAC9079CShopManager__remove_item_by_id_from_list_1718_v2Removes/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.
0x00DDB54061CShopManager__remove_pending_order_by_idRemoves 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.
0x00E08EE0138CShopItem__set_shop_tab_itemSets 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).
0x00E09900100CShopItem__get_tab_item_copyReturns 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.
0x00E0AAD0138CShopItem__set_shop_tab_item_altSets 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).