Rune
CRuneSystemMgr, CRuneSlotData, rune Lua callbacks
| Address | Size | Name | Description |
|---|---|---|---|
| 0x00764C30 | 430 | CRuneSystemMgr__constructor | Constructs CRuneSystemMgr, inits vtable, 5 maps, vectors, and flag fields for rune data |
| 0x00764DE0 | 446 | CRuneSystemEntry__constructor | Constructs CRuneSystemEntry with default name "NoName" and data "NoData", sets vtable |
| 0x007657D0 | 330 | CRuneSystemMgr__destructor | CRuneSystemMgr destructor, destroys page objects, clears all maps and vectors |
| 0x00765920 | 155 | CRuneSystemPage__destructor | CRuneSystemPage destructor, destroys rune objects in vectors, frees sub-arrays and name string |
| 0x007659D0 | 93 | CRuneSystemEntry__destructor | CRuneSystemEntry destructor, destroys name and data strings |
| 0x00765A30 | 143 | CRuneSystemExtEntry__destructor | CRuneSystemExtEntry destructor, destroys 6 sub-entries and base entry strings |
| 0x00765AC0 | 31 | CRuneSystemEntry__matches_id | Returns true if entry's ID fields at 0x10/0x14 match the given parameter |
| 0x00765AE0 | 42 | CRuneSystemEntry__matches_full | Returns true if entry matches on fields 0x10, 0x14, and 0x48 |
| 0x00765B10 | 42 | CRuneSystemEntry__matches_full_b | Returns true if entry matches on fields 0x10, 0x14, and 0x48 |
| 0x00765B40 | 82 | CRuneSystemEntry__compare_name_less | Compares entry name strings at offset 0x18, returns true if this name less than other |
| 0x00765BA0 | 84 | CRuneSystemEntry__compare_name_greater | Compares entry name strings at offset 0x18, returns true if this name greater than other |
| 0x00765C00 | 35 | CRuneSystemMgr__scalar_destructor | Scalar deleting destructor for CRuneSystemMgr (0x68 bytes) |
| 0x00765C30 | 176 | CRuneSystemPage__scalar_destructor | Scalar deleting destructor for CRuneSystemPage (0x44 bytes) |
| 0x00765CE0 | 36 | CRuneSlot__scalar_destructor | Scalar deleting destructor for CRuneSlot (0x14 bytes) |
| 0x00765D10 | 114 | CRuneSystemEntry__scalar_destructor | Scalar deleting destructor for CRuneSystemEntry (0x50 bytes) |
| 0x00765D90 | 167 | CRuneSystemExtEntry__scalar_destructor | Scalar deleting destructor for CRuneSystemExtEntry (0x138 bytes) |
| 0x00765E40 | 159 | CRuneSystemMgr__set_rune_data_at_index | Sets rune data at given index in vector, auto-resizes to 15 elements if needed |
| 0x00765EE0 | 159 | CRuneSystemMgr__set_rune_data_at_index_b | Sets rune data at given index in vector, auto-resizes to 15 elements if needed |
| 0x00765F80 | 309 | CRuneSystemMgr__add_slot_pair | Adds a key-value pair to map, creates new entry with vector if key not found |
| 0x007660C0 | 501 | CRuneSystemMgr__add_rune_entry | Creates and adds a rune entry (basic or extended) to page's slot vector by type |
| 0x007662C0 | 335 | CRuneSystemMgr__add_rune_description | Adds description data to existing rune entry identified by page and coordinates |
| 0x00766410 | 134 | CRuneSystemMgr__set_rune_field_by_coord | Sets a field at offset 0xA8+index*4 on rune found by page, x, y coordinates |
| 0x007664A0 | 181 | CRuneSystemMgr__set_rune_extended_data | Sets extended data fields on rune found by page and coordinates |
| 0x00766560 | 292 | CRuneSystemMgr__set_rune_set_info | Sets rune set reward info on rune found by page and coordinates |
| 0x00766690 | 44 | CRuneSystemMgr__push_back_upgrade_table | Appends value to upgrade table vector at offset 0x44 |
| 0x007666C0 | 246 | CRuneSystemMgr__add_page | Creates a new rune page and adds it to the page vector |
| 0x007667C0 | 341 | CRuneSystemMgr__add_collection_entry | Creates and adds a rune collection entry to the collection vector |
| 0x00766920 | 73 | CRuneSystemPage__count_active_runes | Counts active runes in a page slot by checking active flag at offset 0xC of each entry |
| 0x00766970 | 159 | CRuneSystemMgr__get_or_create_singleton | Creates the global CRuneSystemMgr singleton (DAT_01450b90) if it doesn't exist. Allocates 0x68 bytes, calls constructor. If creation succeeds and active flag (offset 0xC) is set, returns 1. Otherwise destroys the failed instance and returns 0. |
| 0x00766A10 | 27 | CRuneSystemMgr__destroy_singleton | Destroys the global CRuneSystemMgr singleton via virtual destructor, nulls pointer |
| 0x00766A30 | 64 | CRuneSystemMgr__find_highest_active_grade | Searches backward from (param_2-1) through pairs at offset 0xF8 to find the highest index where either element is non-zero. Returns that index, or -1 if none found. param_2 must be < 8. |
| 0x00766A70 | 10 | CRuneSystemMgr__get_page_count | Returns count of rune pages (size of vector at offset 0x1C) |
| 0x00766A80 | 10 | CRuneSystemMgr__get_collection_count | Returns count of rune collection entries (size of vector at offset 0x5C) |
| 0x00766A90 | 128 | CRuneSystemMgr__get_rune_extra_data | Finds rune by page and ID, returns pointer to extra data block at offset 0xF8 |
| 0x00766B10 | 4 | CRuneSystemMgr__get_active_flag | Returns byte flag at offset 0xC indicating rune system active state |
| 0x00766B20 | 60 | CRuneSystemMgr__find_page_by_id | Finds rune page by ID (or uses current if -1), searches vector for matching page ID at +4 |
| 0x00766B60 | 38 | CRuneSystemMgr__get_page_at_index | Bounds-checked accessor for the rune page pointer vector at offset 0x1C/0x20. Returns the page pointer at the given index, or 0 if out of bounds. |
| 0x00766B90 | 216 | CRuneSystemMgr__count_active_slots | Counts non-null slot pointers in vector at offset 0x50 using SIMD-optimized loop |
| 0x00766C70 | 44 | CRuneSystemMgr__count_active_rune_entries | Counts rune entries in vector at offset 0x50/0x54 where the active flag (offset 0xC in each entry) is set. Returns the count of active entries. |
| 0x00766CA0 | 12 | CRuneSystemEntry__get_name_cstr | Returns a pointer to the raw C string of the entry's name (std::string at offset 0x18). Uses SSO: if capacity (offset 0x2C) > 15, returns heap pointer; otherwise returns inline buffer address. |
| 0x00766CB0 | 34 | CRuneSystemMgr__get_upgrade_table_entry | Returns the value at the given index from the upgrade table vector at offset 0x40/0x44. Returns 0 if index is out of bounds. |
| 0x00766CE0 | 34 | CRuneSystemMgr__get_collection_entry | Returns the value at the given index from the collection vector at offset 0x5C/0x60. Returns 0 if index is out of bounds. |
| 0x00766D10 | 65 | CRuneSystemMgr__find_collection_map_entry | Looks up entry in the collection map (sentinel at offset 0x4C) by key. Uses lower_bound to find the node, returns pointer to node data (node+0x14) if found, 0 otherwise. |
| 0x00766D60 | 65 | CRuneSystemMgr__find_page_map_entry | Looks up entry in the page map (sentinel at offset 0x54) by key. Uses lower_bound to find the node, returns pointer to node data (node+0x14) if found, 0 otherwise. |
| 0x00766DB0 | 4 | CRuneSystemMgr__get_field_14 | Returns value at offset 0x14 of rune system object |
| 0x00766DC0 | 4 | CRuneSystemMgr__get_field_18 | Returns value at offset 0x18 of rune system object |
| 0x00766DD0 | 101 | CRuneSystemMgr__get_grade_fail_info | Looks up grade fail info from map by type key, returns data pointer |
| 0x00766E40 | 7 | CRuneSystemMgr__get_current_page_id_pair | Returns 8-byte value pair at offset 0x10 (current page ID and related field) |
| 0x00766E50 | 9 | CRuneSystemMgr__is_active | Returns true if rune system is active (flag at offset 0xC is non-zero) |
| 0x00766E60 | 80 | CRuneSystemMgr__get_slot_data | Gets rune slot data by page and slot index, returns pointer to 8-byte entry or default |
| 0x00766EB0 | 71 | CRuneSystemMgr__get_slot_count_for_page | Returns number of rune slots for given page, 0 if page not found or invalid |
| 0x00766F00 | 84 | CRuneSystemMgr__get_rune_at_slot | Gets rune data at specific slot index within a page's sub-vector, validates bounds |
| 0x00766F60 | 28 | CRuneSystemMgr__get_upgrade_table_size | Returns size of upgrade table vector at offset 0x44 |
| 0x00766F80 | 228 | CRuneSystemMgr__calculate_rune_offset | Calculates rune display offset using page lookup and optional multiplier from secondary map |
| 0x00767070 | 79 | CRuneSystemMgr__find_rune_by_coord | Finds rune entry by page ID and grid coordinates, delegates to coordinate search |
| 0x007670C0 | 110 | CRuneSystemMgr__find_rune_at_xy | Searches rune vector for entry matching x,y coords at offsets 0x10/0x14, returns found entry |
| 0x00767130 | 4 | CRuneSystemMgr__get_current_page_id | Returns the current rune page ID from offset 0x10 |
| 0x00767140 | 4 | CRuneSystemMgr__get_total_rune_count | Returns total rune count from offset 0x48 |
| 0x00767150 | 4 | CRuneSystemMgr__get_max_rune_count | Returns max rune count from offset 0x4C |
| 0x00767160 | 22 | CRuneSystemMgr__get_rune_by_index | Returns rune data at index from array at offset 0xA8, max 15 entries |
| 0x00767180 | 174 | CRuneSystemMgr__get_linked_page_data | Looks up linked page data via two map lookups, returns pointer to data or null |
| 0x00767230 | 4 | CRuneSystemMgr__get_pending_flag | Returns byte flag at offset 0xD of the rune system object |
| 0x00767240 | 12 | CRuneSystemMgr__get_string_buffer_ptr | Returns pointer to SSO string buffer at offset 0x30, dereferencing if length exceeds small buffer (0xF) |
| 0x00767250 | 2768 | CRuneSystemMgr__load_lua_tables | Loads all rune system Lua files and registers callbacks for grades, items, tags, descriptions |
| 0x00767D20 | 185 | CRuneSystemMgr__reset_all_rune_states | Resets all rune states across pages, clears activation flags and selection data via RTTI cast |
| 0x00767DE0 | 113 | CRuneSystemMgr__reset_page_rune_flags | Resets all rune flags within a single page entry: clears activation flag at +0xC, resets selection fields via RTTI dynamic cast (0xE4, 0xE8, 0xF4) |
| 0x00767E70 | 300 | CRuneSystemMgr__load_default_tag | Loads runesystemInfo Lua file and calls GetDefultTag to set current page ID |
| 0x00767FA0 | 78 | CRuneSystemMgr__check_rune_requirement | Checks if rune meets activation requirements, returns true if all conditions met |
| 0x00767FF0 | 266 | CRuneSystemMgr__check_rune_available | Checks if specific rune is available for activation on current page |
| 0x00768100 | 291 | CRuneSystemMgr__find_substring_in_name | Searches for a substring within the SSO string at offset 0x18, using memchr-based pattern matching. Returns true if found, false if not. |
| 0x00768230 | 16 | CRuneSystemMgr__check_rune_count_equals | Compares field at offset 0x48 with param_2, returns 1 if equal, 0 otherwise |
| 0x00768240 | 529 | CRuneSystemMgr__handle_packet | Handles rune system packets (0xBCB-0xC16), dispatches to UI update or server request |
| 0x007684C0 | 370 | CRuneSystemMgr__on_rune_activate_result | Handles rune activation result from server, updates local rune state and UI |
| 0x00768640 | 108 | CRuneSystemMgr__update_rune_string_field | Finds rune by page ID and coordinates, then copies an SSO string to the rune's string field at offset 0x18 |
| 0x007686B0 | 134 | CRuneSystemMgr__update_rune_link_fields | Finds rune by page ID and coordinates, then updates link fields at offsets 0xEC and 0xF0 with provided values |
| 0x00768740 | 13 | CRuneSystemMgr__set_flag_0xc | Sets byte field at offset 0xC of the object |
| 0x00768750 | 35 | CRuneSystemMgr__assign_string_0x18 | Assigns an SSO string to the string field at offset 0x18, skipping if source is self |
| 0x00768780 | 15 | CRuneSystemMgr__set_field_0x18 | Sets dword field at offset 0x18 from dereferenced pointer param |
| 0x00768790 | 19 | CRuneSystemMgr__set_page_and_selection | Sets fields at offset 0x10 (page ID) and 0x14 (selection index) from two params |
| 0x007687B0 | 236 | CRuneSystemMgr__set_equipped_rune | Sets the currently equipped rune: finds rune by page/coord, manages equip bonus add/remove via CEnchantMgr, tracks activation count from slot vector |
| 0x007688A0 | 87 | CRuneSystemMgr__set_current_page_by_id | Sets current page by searching page vector for matching ID. Falls back to first page if ID not found. |
| 0x00768900 | 13 | CRuneSystemMgr__set_field_0x48 | Sets dword field at offset 0x48 of the object |
| 0x00768910 | 13 | CRuneSystemMgr__set_field_0x4c | Sets dword field at offset 0x4C of the object |
| 0x00768920 | 13 | CRuneSystemMgr__set_pending_flag | Sets byte field at offset 0xD (pending/request flag) of the object |
| 0x00768930 | 35 | CRuneSystemMgr__assign_string_0x30 | Assigns an SSO string to the string field at offset 0x30, skipping if source is self |
| 0x00768960 | 158 | CRuneSystemMgr__activate_rune_at_coord | Activates a rune at given page/coord: sets activation flag at +0xC, updates experience fields at 0xE4/0xE8, returns status code (0=ok, 1=exp increased, 2=level increased, -1=not found) |
| 0x00768A00 | 131 | CRuneSystemMgr__set_rune_grade_at_coord | Finds rune by page/coord and sets its grade field at offset 0xF4. Returns 1 on success, 0 if not found. |
| 0x00768A90 | 37 | CRuneSystemMgr__destroy_objects_in_range | CRuneSystemMgr: destroy objects in range |
| 0x00769240 | 509 | CRuneSystemMgr__lua_AddGradeType | Lua callback for AddGradeType, registers grade type data from Lua table |
| 0x00769440 | 509 | CRuneSystemMgr__lua_AddGradeType_Fail | Lua callback for AddGradeType_Fail, registers grade failure data from Lua table |
| 0x00769640 | 673 | CRuneSystemMgr__lua_AddItemListTable_Type | Lua callback for AddItemListTable_Type, registers item list table data |
| 0x007698F0 | 653 | CRuneSystemMgr__lua_AddRune | Lua callback for AddRune, adds rune entry with coords, name, and type info |
| 0x00769B80 | 860 | CRuneSystemMgr__lua_AddRuneSetReward | Lua callback for AddRuneSetReward, registers set reward data for runes |
| 0x00769EE0 | 855 | CRuneSystemMgr__lua_AddRune_Description | Lua callback for AddRune_Description, sets description text for rune entries |
| 0x0076A240 | 553 | CRuneSystemMgr__lua_AddRune_GradeList | Lua callback for AddRune_GradeList, registers grade list data for runes |
| 0x0076A470 | 530 | CRuneSystemMgr__lua_AddRune_SlotCollectionList | Lua callback for AddRune_SlotCollectionList, registers slot collection data |
| 0x0076A690 | 679 | CRuneSystemMgr__lua_AddTag | Lua callback for AddTag, registers tag data for rune system pages |
| 0x0076A940 | 245 | CRuneSystemMgr__lua_Add_Decom_ItemNum | Lua callback for Add_Decom_ItemNum, registers decompose item number data |
| 0x0076AA40 | 549 | CRuneSystemMgr__lua_AdditemDecom | Lua callback for AdditemDecom, registers item decomposition data |
| 0x0076AC70 | 868 | CRuneSystemMgr__lua_AdditemDecomType | Lua callback for AdditemDecomType, registers item decomposition type data |
| 0x0076AFE0 | 672 | CRuneSystemMgr__lua_SetRune_DisplayName | Lua callback for SetRune_DisplayName, sets display name for rune entries |
| 0x0076B280 | 555 | CRuneSystemMgr__lua_SetRune_UpGradeTable | Lua callback for SetRune_UpGradeTable, configures upgrade table entries |
| 0x0076B4B0 | 219 | CRuneSystemMgr__lua_SetRuneSysteminfo | Lua callback for SetRuneSysteminfo, configures rune system global info |
| 0x00814540 | 864 | UIRuneSystemRequestWnd__ctor | Constructor for UIRuneSystemRequestWnd. Inherits base UI. Sets vtable. Initializes 3 SSO strings with gauge texture paths: 'runesystem_gage_empty.bmp' (0x22), 'runesystem_gage_full.bmp' (0x28), 'runesystem_gage_max.bmp' (0x2e). Fields: mode=0x45 at 0x1f, flags at 0x20-0x21. |
| 0x00814D40 | 159 | UIRuneSystemRequestWnd__constructor | Constructor for rune system request window. Sets vtable PTR_UIWindow_0112ca04, clears fields 0x2E-0x2F, sends network packet 0xBE0 with flag=1 to request rune data from server. |
| 0x00815590 | 65 | UIRuneSystem__destroy_string_wrapper | Simple string destructor wrapper with SEH frame. Destroys a single STL string. |
| 0x00815740 | 105 | UIRuneSystemWnd__destructor | Destructor for the rune system main window. Sets vtable 0112bb98, destroys 3 embedded string objects (0x18 bytes each starting at offset 0x4A*4) via eh_vector_destructor_iterator, then calls base destructor (FUN_008511b0). |
| 0x00815870 | 137 | UIRuneSystemRequestWnd__destructor | Destructor for rune system request window. Sets vtable, sends network packet (0xBE0 with flag=0 to unsubscribe), then calls base window destructor. |
| 0x00815C90 | 143 | UIRuneSystemRequestWnd__scalar_del_dtor | Scalar deleting destructor for rune system request window. |
| 0x00816470 | 444 | UIRuneSystem__append_text_entry | Appends text entry with string, color, and offset to scrollable text buffer at +0xc0 |
| 0x00816630 | 54 | UIRuneSystem__adjust_scroll_position | Adjusts scroll position by delta, clamped to [0, max_scroll], calls redraw on change |
| 0x00816670 | 64 | UIRuneSystem__set_tick_timer | Sets a timeout at +0xb8 if not already active; uses timeGetTime + duration |
| 0x008166B0 | 369 | UIRuneSystem__update_tab_selection | Updates rune tab UI state based on selected tab index; shows/hides sub-panels (0=list, 1=detail, 2=range) |
| 0x00816830 | 209 | UIRuneSystem__reset_ui_state | Clears rune strings, resets selection to -1, hides child controls and refreshes display |
| 0x00816910 | 56 | UIRuneSystem__set_size_and_resize | Sets dirty flag, calls size update and virtual resize/reposition methods |
| 0x00816950 | 238 | UIRuneSystem__show_rune_tooltip | Shows tooltip for rune at given index using predefined position/size arrays from global data |
| 0x00816A40 | 142 | UIRuneSystem__clear_text_entries | Destroys all text entries in buffer +0xc0..+0xc4, resets end pointer to start |
| 0x00816AD0 | 123 | UIRuneSystem__hit_test_rune_grid | Returns rune index from grid x/y coords; cell size 0x36, two columns, bounds checked |
| 0x00816B50 | 54 | UIRuneSystem__hit_test_scroll_row | Returns row index from y coordinate; row height 0x1b, valid range [0x14, width-0x17] |
| 0x00816B90 | 73 | UIRuneSystem__find_button_region | Returns button region index (0-5) from x/y coords; checks 6 regions of size 0x5a x 0x78 |
| 0x00816BE0 | 117 | UIRuneSystem__hit_test_rune_detail_grid | Returns rune detail slot index from x/y in detail panel; 8 slots in 2 rows, cell 0x36x0x27 |
| 0x00816C70 | 63 | UIRuneSystem__deselect_and_reset | Clears hover selection to -1, clamped to max; triggers redraw via virtual calls |
| 0x00816CB0 | 2820 | UIRuneSystem__init_child_controls | Creates rune UI child controls: listbox, 3 tab panels, text label, scrollbar, description area with tabs |
| 0x008177C0 | 1750 | UIRuneSystem__init_rune_detail_panel | Creates rune detail panel with radio buttons (on/off/disabled), scrollbars, checkbox list and description areas |
| 0x00817EA0 | 1110 | UIRuneSystem__init_rune_tab_list | Creates rune tab panel with category list items, radio buttons (runesystem_btn_radio_off/on/disable.bmp) |
| 0x00818300 | 405 | UIRuneSystem__init_rune_list_panel | Creates rune list panel with listbox and 4-tab panel; positions tab at bottom of window |
| 0x008184A0 | 985 | UIRuneSystem__init_labels_and_buttons | Creates UI labels and toggle buttons for rune category view; positions text with measured font widths |
| 0x00818880 | 769 | UIRuneSystem__draw_rune_list_view | Renders rune list view: background, rune icons with names, levels, and stat descriptions |
| 0x00818B90 | 788 | UIRuneSystem__draw_rune_detail_view | Renders rune detail: background image, rune icons with sprites, name, level text, and navigation indicators |
| 0x00818EB0 | 474 | UIRuneSystem__draw_progress_bar | Draws progress bar with percentage text (formatted as %.2f%%) or empty state background |
| 0x00819090 | 426 | UIRuneSystem__draw_rune_slot_grid | Renders 9-slot rune grid: background, slot sprites, rune names, and level labels |
| 0x00819240 | 964 | UIRuneSystem__draw_rune_equip_grid | Renders equipped rune grid with sprites, levels, names and optional greyed-out overlay for locked slots |
| 0x008196D0 | 2598 | UIRuneSystem__draw_main_panel | Renders main rune panel: rune grid with 6 slots, detail text, level/cost display, upgrade path info |
| 0x0081A100 | 199 | UIRuneSystem__draw_text_entries | Renders buffered text entries with color and position from +0xc0 array, row spacing via +0xb4 |
| 0x0081A1D0 | 172 | UIRuneSystem__draw_map_background | Draws background sprite using map name from +0x80 string with zoom level from +0x30 |
| 0x0081A280 | 271 | UIRuneSystem__draw_header_footer_sprites | Draws header and footer background sprites, then renders title text via message ID 0xfd2 |
| 0x0081A390 | 832 | UIRuneSystem__draw_rune_grid_with_sprites | Renders rune grid cells with item sprites, level bars; highlights over-leveled runes in red |
| 0x0081A6D0 | 675 | UIRuneSystem__draw_rune_upgrade_grid | Renders rune upgrade grid with item sprites and level counts; greys out max-level runes |
| 0x0081A980 | 675 | UIRuneSystem__draw_material_grid | Renders material items in 4x2 grid with sprites and count labels; conditional on +0xb4 flag |
| 0x0081AC30 | 330 | UIRuneSystem__draw_map_overlay_text | Draws map background with overlay text label positioned at bottom; handles zoom and conditional map strings |
| 0x0081AD80 | 396 | UIRuneSystem__draw_rune_page_tabs | Renders rune page tab buttons with active/inactive sprites; highlights current page via CRuneSystemMgr |
| 0x0081AF10 | 2213 | UIRuneSystem__draw_rune_inventory_panel | Renders rune inventory with sprites, success rates (formatted %d.%d%%), item counts, and name labels in 4x2 grid |
| 0x0081B7C0 | 564 | UIRuneSystem__draw_rune_summary_panel | Renders rune summary with sprite, name label, active/inactive state indicator, and level text |
| 0x0081BA00 | 780 | UIRuneSystem__draw_rune_page_info | Draws rune page header with cost value, page title, and description text from CRuneSystemMgr |
| 0x0081BD10 | 380 | UIRuneSystem__draw_scrollbar | Draws vertical scrollbar with track, thumb, and arrow sprites; borders with highlight colors |
| 0x0081BEC0 | 268 | UIRuneSystem__on_rune_slot_click | Handles click on rune slot in main grid; navigates to rune page if different from current |
| 0x0081C000 | 118 | UIRuneSystem__on_list_item_click | Handles click in scrollable list; calculates row from y, sets selection, notifies parent with item index |
| 0x0081C080 | 95 | UIRuneSystem__on_tab_click | Handles tab bar click; calculates tab index from x position, updates selection (max 3 tabs) |
| 0x0081C0F0 | 157 | UIRuneSystem__on_page_tab_click | Handles rune page tab click; looks up page by index, navigates to that page via CRuneSystemMgr |
| 0x0081C190 | 148 | UIRuneSystem__on_right_click_by_mode | Handles right-click actions based on +0x124 mode: mode 2 = apply drag offset, mode 3 = show "cannot use" chat message (msg 0x1068), mode 0 = show info message (msg 0x1069), then clears hover window |
| 0x0081C240 | 387 | UIRuneSystem__on_mouse_event_dispatch | Dispatches mouse events to appropriate rune panel handlers based on current tab and mode |
| 0x0081C3E0 | 297 | UIRuneSystem__on_mouse_move_equip_grid | Mouse move handler for equipped rune grid. Hit-tests x,y against rune slot positions (stride 0x28), shows rune name tooltip via CToolTipMgr on hover over valid slots |
| 0x0081C510 | 465 | UIRuneSystem__on_drag_event | Handles drag events in rune system; scrollbar thumb dragging and rune item dragging |
| 0x0081C6F0 | 255 | UIRuneSystem__on_mouse_move_main_grid | Mouse move handler for main 6-slot rune grid. Iterates rune slot positions from DAT_0112cf9c/cfb4 arrays, shows rune name tooltip when hovering over occupied slots |
| 0x0081C7F0 | 365 | UIRuneSystem__on_mouse_move_upgrade_grid | Mouse move handler for upgrade grid. Hit-tests against rune grid cells, shows item tooltip (via CItemDB__build_item_tooltip_string) for the item at the hovered cell position |
| 0x0081C960 | 276 | UIRuneSystem__on_mouse_move_page_tabs | Mouse move handler for rune page tabs. Hit-tests x position against tab spacing (0x1b stride), shows page name tooltip for the hovered tab via CToolTipMgr |
| 0x0081CA80 | 353 | UIRuneSystem__on_mouse_move_detail_grid | Mouse move handler for rune detail grid. Hit-tests against detail panel slots, shows item tooltip for the item at the hovered slot via CItemDB__build_item_tooltip_string |
| 0x0081CC40 | 205 | UIRuneSystem__on_double_click_show_item_info | Double-click handler that opens item info window. Redraws via vtable, creates CItemDesc from item at +0x48, opens window type 0xc with item data notification (msg 0x18) |
| 0x0081CD10 | 249 | UIRuneSystem__on_double_click_upgrade_grid | Double-click handler for upgrade grid. Hit-tests x,y against grid cells, creates CItemDesc from slot item, opens item info window (type 0xc) with notification msg 0x18 |
| 0x0081CE10 | 243 | UIRuneSystem__on_double_click_detail_grid | Double-click handler for detail grid panel. Hit-tests against detail grid slots via hit_test_rune_detail_grid, creates CItemDesc and opens item info window (type 0xc) |
| 0x0081CF10 | 70 | UIRuneSystem__on_scroll_step | Handles single scroll step. Adjusts scroll position +0x21 by +1 or -1 based on param sign, clamped to [0, max]. Triggers redraw if position changed |
| 0x0081CF60 | 323 | UIRuneSystem__on_rune_list_update | Handles rune list data update from server; rebuilds list view and resets selection |
| 0x0081D0B0 | 935 | UIRuneSystem__setup_default_state | Initializes default rune system state; sets first tab active, loads initial rune data |
| 0x0081D460 | 141 | UIRuneSystem__populate_rune_detail | Populates rune detail panel with description, stats, and requirements for selected rune |
| 0x0081D4F0 | 140 | UIRuneSystem__populate_upgrade_info | Populates upgrade panel with cost, materials, and success rate for selected rune |
| 0x0081D580 | 112 | UIRuneSystem__on_child_list_notification | Handles child list control notifications. Msg 0x3c (page change): adjusts scrollbar range and position. Msg 0xab (list item select): sets selected index at +0x2f and redraws |
| 0x0081D5F0 | 189 | UIRuneSystem__on_container_message | Handles container widget messages. Msg 0x22: assigns string text to tab label (up to index 2). Msg 0x66: sets item ID at +0x48, updates state flags at +0x2b based on param4 value, redraws. Falls through to parent handler for other messages |
| 0x0081D6B0 | 64 | UIRuneSystem__on_button_and_control_event | Main button/control event dispatcher. Handles: button clicks (0x23c=equip, 0x158=unequip, 0xc3=select, 0x1fd=upgrade, 0x24e-0x254=slot actions), scroll events (7/9/10), tab changes (0x16), page changes (0x3c). Sends packets 0xbd0/0xbd2/0xc16 to server. Shows confirmation dialogs for equip/unequip |
| 0x0081DA20 | 138 | UIRuneSystem__on_radio_and_text_event | Handles radio button and text field events from child controls. Msg 0xd: radio select - sets tab index at +0xc, redraws, notifies parent. Msg 0x16: sets selection index at +0x1f, redraws. Msg 0x4e: sets text string from param |
| 0x0081DAB0 | 125 | UIRuneSystem__on_message | Main message handler for UIRuneSystem window. Handles button clicks (msg 6), scroll (7/9/10), tab selection (0x16), timer events (0x3c), rune slot clicks (0x61), timer setup (0x69/0x6a), rune selection (0xa9), detail/action commands (0xab), and effect creation (0xb2). Delegates to UIWindow__handle_button_click at the end. |
| 0x0081E3F0 | 302 | UIRuneSystem__on_layout_init | Handles layout initialization (msg 0xD). Parses param_4 data structure to extract 8 child control pointers (at offsets +2/+6/+10/+14/+18/+22/+26/+30) and their sizes (at offsets +34 through +48), storing them in fields 0x2E-0x3D. On msg 6/0xB8: clears a TLS field. Triggers repaint after layout setup. |
| 0x0081E520 | 169 | UIRuneSystem__on_page_navigate | Handles page navigation for rune system. On msg 6/0x13c: decrements page index (scroll left, clamped to 0). On msg 6/0x13d: increments page index (scroll right, clamped to page_count - 10). On msg 0xa9: sets page offset based on selection. |
| 0x0081E5D0 | 543 | UIRuneSystem__on_craft_message | Handles rune crafting/upgrade messages. On msg 6/0xd7: calls switch_tab. On msg 6/0x197: checks inventory space and crafting cooldown, sends packet 0xbd8 (rune craft request) to server, sets pending flag. Shows error dialog if inventory full or cooldown active. On msg 0x3c: updates rune item detail. |
| 0x0081E7F0 | 154 | UIRuneSystem__on_rune_packet_command | Handles rune packet commands. On msg 6/0x23c with rate-limit check: sends packet 0xbce to server with rune ID. On msg 0x3c: refreshes child panels and populates rune detail. Forwards to parent via CEffect__notify_parent_of_state_change. |
| 0x0081E890 | 92 | UIRuneSystem__update_scrollbar_range | Calculates visible item count from control height and element list size, then sets scrollbar range (max, page_size, total) via CUIScrollBar__set_range_and_position. Also resets a control field to 0. |
| 0x0081E8F0 | 37 | UIRuneSystem__set_timer_deadline | Stores a timer deadline at fields 0xB8/0xBC. Computes deadline as timeGetTime() + param_2, with param_3 as the high word carry. |
| 0x0081E920 | 67 | UIRuneSystem__set_selected_rune | Sets the currently selected rune for display. Stores rune data pointer at field 0x1F, updates max rune count on a child control, triggers repaint, and calls populate_rune_detail to fill in the detail panel. |
| 0x0081E970 | 224 | UIRuneSystem__switch_tab | Switches between rune system tabs (field 0x2F is tab index, max 2). Hides all 3 tab panels via msg 0xD/1, then shows the selected one via msg 0xD/0. Updates linked page data from CRuneSystemMgr and triggers repaint. Also manages upgrade table visibility on tab 1. |
| 0x0081EA50 | 710 | UIRuneSystem__populate_info_panel | Populates rune info/tooltip panel. Clears existing text entries, then iterates 5 data categories building formatted text with counts and names. For each category with entries, adds header from message string table and individual item strings. Updates scrollbar range at the end. |
| 0x0081ED20 | 873 | UIRuneSystem__set_rune_item_detail | Sets rune item detail display. Looks up item info, resolves sprite resource path (tries .bmp then .tga format), stores item name string, and updates linked page data. Also manages tab panel visibility based on whether an item is selected. |
| 0x0081F090 | 47 | UIRuneSystem__set_clamped_index | Clamps param_2 to field 0x20 (max value) and stores in field 0x21. Triggers repaint if the value changed. Generic index-setting utility used by rune system UI. |
| 0x0081F0C0 | 357 | UIRuneSystem__update_rune_slot_display | Updates rune slot display panel. Sets rune data pointer, updates max count and rune index on child controls, then iterates 7 slots checking activation flags and sending msg 0x66 with slot state (active/inactive/completed). Triggers layout refresh at the end. |
| 0x0081F230 | 71 | UIRuneSystem__set_selection_index | Sets selection index (field 0x21) clamped to max (field 0x20), triggers repaint if changed, then stores param_2 in field 0x2F and forces a second repaint. |
| 0x0081F280 | 216 | UIRuneSystem__draw_level_bar | Draws level progress bar with current/max values and color at specified position |
| 0x0081F360 | 256 | UIRuneSystem__draw_rune_sprite | Draws rune sprite at given position with optional greyed-out state overlay |
No function here matches that. Search all 47,061 functions instead.