Back to legacygamers.net
WARPGATE

Game Map

CMapInfo, CMapEvent, CMapObjMgr, CTownInfo, CWeather, CSkyData, CNavigatorDB, CWorldView, CReputeDB

Functions 526Code 274 KBAddresses 0x005B9E50 to 0x01094300Group Game Logic
526 functions
AddressSizeNameDescription
0x005B9E50693CMapSkyDataMgr__constructConstructs CMapSkyDataMgr; sets vtable chain, inits 3 string members, decrypts default Lua path, creates initial config entry
0x005BA290195CMapSkyDataMgr__destructDestructs CMapSkyDataMgr; sets vtable chain, destroys 5 string members and base class
0x005BA36087CMapSkyDataMgr__dtor_base_2Partial destructor: sets vtable to purecall, destroys base string member
0x005BA3C074CMapSkyDataMgr__dtor_base_1Base destructor: sets vtable to purecall, destroys single string member
0x005BA410219CMapSkyDataMgr__scalar_dtorScalar deleting destructor for CMapSkyDataMgr (0xB0 bytes); destroys all members, frees if flag set
0x005BA4F0112CMapSkyDataMgr__scalar_dtor_base_2Scalar deleting destructor for base level 2 (0x28 bytes); sets purecall vtable, frees if flag set
0x005BA56099CMapSkyDataMgr__scalar_dtor_base_1Scalar deleting destructor for base level 1 (0x1C bytes); sets purecall vtable, frees if flag set
0x005BA5D0591CMapSkyDataMgr__init_from_configInitializes CMapSkyDataMgr: stores timestamp, ID, copies name/path strings, creates config entry with decrypted path
0x005BA830199CMapSkyDataMgr__copy_strings_and_loadCopies 4 string members from source offsets, then loads all hotkey configs from registry
0x005BA9101488CMapSkyDataMgr__load_and_applyFull load pipeline: formats path, opens config, copies result strings with encrypted key lookups, creates final config entry
0x005E9B20218CSkyDataEntry__ctorConstructs a CSkyDataEntry with: ID from param_5, name string from param_4, URL string moved from param_3, and a boolean flag from param_2. Used by CSkyDataProviderA for sky data entries.
0x005E9C00760CSkyDataProviderA__ctorConstructor for CSkyDataProviderA. Initializes base class vtables (purecall -> PTR_LAB_010e34e4), multiple string fields, default limit of 500. Decrypts an obfuscated key via XOR TLS storage for API authentication. Size: 0xD0 bytes.
0x005E9F00210CSkyDataProviderA__dtorDestructor for CSkyDataProviderA. Tears down in reverse order: resets vtable to PTR_LAB_010e34e4, destroys 5 string fields, resets to purecall vtables, destroys base string.
0x005E9FE0234CSkyDataProviderA__scalar_deleting_dtorScalar deleting destructor for CSkyDataProviderA. Calls dtor then optionally frees 0xD0 bytes if bit 0 of param_2 is set.
0x005EA0D0638CSkyDataProviderA__set_request_dataSets request data on CSkyDataProviderA: records timestamp via timeGetTime(), copies URL/path/extra strings, stores numeric parameters, builds a CSkyDataEntry via XOR-decrypted key, and assigns it via MapSkyDataEntry__move_assign.
0x005EA360193CSkyDataProviderA__copy_strings_and_sendCopies string fields at offsets +0x84, +0x9C, +0xB4 from the source object and calls send_chunked_network_packet to transmit the sky data.
0x005EA4302983CSkyDataProviderA__execute_sky_data_requestMain sky data request executor for ProviderA. Formats numeric IDs into URL strings, converts to UTF8, calls sub-request function, sends multiple encrypted API requests (decrypted via XOR TLS) for different data fields. On success (result=0), fetches response, copies result string, sends final encrypted request. Calls stub_005e9710 at end.
0x005EAFE0137CSkyDataProviderB__ctorConstructor for CSkyDataProviderB. Initializes vtable (PTR_stub_005eb0d0_010e3574), boolean flag at +4 set to 1, two empty strings at +8 and +0x20. Total size: 0x3C bytes.
0x005EB07093CSkyDataProviderB__dtorDestructor for CSkyDataProviderB. Resets vtable, destroys two string fields.
0x005EB0D0114CSkyDataProviderB__scalar_deleting_dtorScalar deleting destructor for CSkyDataProviderB. Calls dtor then optionally frees 0x3C bytes if bit 0 of param_2 is set.
0x005EB150232CSkyDataProviderB__get_or_create_singletonGets or creates the CSkyDataProviderB singleton (stored in DAT_013898d4). Allocates 0x3C bytes, initializes via ctor. If singleton exists but is disabled (flag at +4 is 0), calls virtual dtor and nullifies. Returns 1 if active, 0 otherwise.
0x005EB24027CSkyDataProviderB__destroy_singletonDestroys the CSkyDataProviderB singleton (DAT_013898d4) by calling its virtual destructor with delete flag, then nulls the pointer.
0x005EB260427CSkyDataProviderB__register_sky_textureRegisters a sky texture via CEffectTexture__register_effect_type_d. Builds a string, copies it, and copies a string from offset +0x20 of param_1.
0x005EB410360CSkyDataProviderB__register_sky_texture_if_neededConditionally registers a sky texture. Checks if flag at param_1+0x38 is not 1; if so, builds strings from param_1 fields and calls CEffectTexture__register_effect_type_e. Returns true if registration was performed.
0x005EB580630CSkyDataProviderB__build_sky_texture_paths_from_luaBuilds sky texture file paths from Lua table data. Reads a string from Lua, decrypts two XOR-encrypted suffixes from TLS, concatenates them to form two file paths (stored at param_1+8 and param_1+0x20). Only processes if Lua value is non-null.
0x005EB800712CSkyDataProviderA__send_chunked_network_packetSends sky data as a chunked network packet. Allocates 0x408-byte buffer with 0xDDDD sentinel, header 0x0B36. Splits large data into chunks of max 0x3F2 bytes, sending each via CNetworkSession__recv_data. Final chunk has subtype=0 (end). Frees buffer on sentinel match.
0x005EBAD0910CSkyDataProviderB__handle_json_responseHandles JSON response for CSkyDataProviderB. Parses JSON string via JsonReader, decrypts field name via XOR TLS, reads command type. Type 1: sends packet 0xB46 with sprite data. Type 2/3/4: shows error dialog via CMessageStringTable (msg 0xE02). Clears flag at +0x38 on the data entry after processing.
0x005EBE70218CSkyDataEntryB__ctorConstructs a CSkyDataEntryB with: ID from param_5, name string from param_4, URL string moved from param_3, and boolean flag from param_2. Identical structure to CSkyDataEntry__ctor but used by ProviderB.
0x005EBF50777CSkyDataProviderB__base_ctorConstructor for CSkyDataProviderB base object. Initializes vtables, 6 empty string fields, counter fields. Decrypts API key from XOR TLS storage. Creates initial CSkyDataEntryB. Larger object than ProviderA, uses vtable PTR_LAB_010e3594. Size: 0xE0.
0x005EC260225CSkyDataProviderB__base_dtorDestructor for CSkyDataProviderB base. Destroys 7 string fields in reverse order, resets vtable through purecall chain, destroys base class string.
0x005EC350249CSkyDataProviderB__base_scalar_deleting_dtorScalar deleting destructor for CSkyDataProviderB base. Calls base_dtor then optionally frees 0xE0 bytes if bit 0 of param_2 is set.
0x005EC450666CSkyDataProviderB__set_request_dataSets request data on CSkyDataProviderB. Records timestamp, copies 4 string parameters (URL, path, extra, additional), stores numeric params. Builds CSkyDataEntryB via XOR-decrypted key and assigns via MapSkyDataEntry__move_assign.
0x005EC700186CSkyDataProviderB__copy_strings_and_sendCopies string fields at offsets +0x84, +0xAC, +0xC4 from the source object and calls handle_json_response to process the sky data response.
0x005EC7C03566CSkyDataProviderB__execute_sky_data_requestMain sky data request executor for ProviderB. Formats URLs, converts to UTF8, extracts substring and uppercases it, creates CCurlRequest, sends 6 encrypted API requests for different data fields, fetches response, converts UTF8 result to local codepage. Similar to ProviderA but with additional string field and curl request object.
0x0060C75076CReputeDB__destroy_tree_string_vectorDestroys an STL tree with string+vector nodes (0x50 bytes each) and frees the sentinel node. Used for repute group data trees.
0x0060C7B076CReputeDB__destroy_tree_two_stringsDestroys an STL tree with two-string nodes (0x4c bytes each) and frees the sentinel node. Used for repute info data trees.
0x0060C81076CReputeDB__destroy_tree_string_dataDestroys an STL tree with string+data nodes (0x40 bytes each) and frees the sentinel node. Used for repute key-value trees.
0x0060C87076CReputeDB__destroy_tree_string_keyDestroys an STL tree with string-key-only nodes (0x58 bytes each) and frees the sentinel node. Used for repute info trees.
0x0060C8D0139CReputeDB__cleanup_optional_string_data_nodeCleans up an optional node at offset +4: destroys a vector via helper_0060ee60, destroys a string, then frees the 0x40-byte node if non-null.
0x0060C960123CReputeDB__cleanup_optional_string_key_nodeCleans up an optional node at offset +4: destroys a string, then frees the 0x58-byte node if non-null.
0x0060C9E078CReputeDB__free_optional_node_0x40Frees an optional 0x40-byte node at offset +4 if non-null. No destructor logic, just raw deallocation.
0x0060CA3078CReputeDB__free_optional_node_0x58Frees an optional 0x58-byte node at offset +4 if non-null. No destructor logic, just raw deallocation.
0x0060CA8087CReputeDB__destroy_tree_string_vector_no_sehDestroys an STL tree with string+vector nodes (0x50 bytes) and frees sentinel. Similar to CReputeDB__destroy_tree_string_vector but without SEH unwind index manipulation.
0x0060CAE087CReputeDB__destroy_tree_two_strings_no_sehDestroys an STL tree with two-string nodes (0x4c bytes) and frees sentinel. Similar to CReputeDB__destroy_tree_two_strings but without SEH unwind index manipulation.
0x0060CB4087CReputeDB__destroy_tree_string_data_no_sehDestroys an STL tree with string+data nodes (0x40 bytes) and frees sentinel. Similar to CReputeDB__destroy_tree_string_data but without SEH unwind index manipulation.
0x0060CBA087CReputeDB__destroy_tree_string_key_no_sehDestroys an STL tree with string-key-only nodes (0x58 bytes) and frees sentinel. Similar to CReputeDB__destroy_tree_string_key but without SEH unwind index manipulation.
0x0060CC0099CReputeDB__dtor_vector_and_string_pairSEH unwind handler: destroys a vector (via helper_0060ee60) then a string. Used during stack unwinding in repute data construction.
0x0060CC7080CReputeDB__dtor_embedded_stringSEH unwind handler: destroys a string at offset +8 of the given object. Used during stack unwinding in repute data construction.
0x0060CCC0111CReputeDB__dtor_vector_and_two_stringsSEH unwind handler: destroys a 4-byte-element vector, then two strings in sequence. Used during stack unwinding for repute group entry construction.
0x0060CD3099CReputeDB__dtor_two_stringsSEH unwind handler: destroys two strings in sequence. Used during stack unwinding for repute info entry construction.
0x0060CDA099CReputeDB__dtor_vector_and_stringSEH unwind handler: destroys a vector (via helper_0060ee60) then a string. Variant used in a different unwind context than dtor_vector_and_string_pair.
0x0060CE10129CReputeDB__clear_and_free_vectorClears and frees a vector's buffer. Computes buffer size from (capacity - base) aligned to 4 bytes, handles large-block aligned allocation (0x1000+ threshold), then zeroes the vector pointers.
0x0060CEA086CReputeDB__dtor_vector_and_string_v2SEH unwind handler: destroys a vector (via helper_0060ee60) then a string. Another unwind variant for repute data operations.
0x0060CF0065CReputeDB__dtor_single_stringSEH unwind handler: destroys a single string. Used during stack unwinding in repute data construction.
0x0060CF50166CReputeDB__dtorCReputeDB destructor. Sets vtable, destroys the CLuaInstance, destroys the string+data tree (0x40-byte nodes at offset +0xC), and the string-key tree (0x58-byte nodes at offset +4).
0x0060D060986CReputeDB__insert_group_entryInserts a repute group entry into the tree. Converts the name string via codepage conversion, builds a uint64 vector from int array, finds lower bound by uint64 key, inserts a new 0x40-byte node if not found, then copies name string and vector data into the node.
0x0060D440904CReputeDB__insert_info_entryInserts a repute info entry into the tree. Converts name string via codepage, extracts min/max values, parses visibility string (VISIBLE_TRUE/VISIBLE_FALSE/other=2), finds lower bound by uint64 key, inserts 0x58-byte node with name, range, visibility fields, and boolean flag.
0x0060D7D030CReputeDB__base_scalar_deleting_dtorBase scalar deleting destructor for CReputeDB. Conditionally frees the 4-byte object if bit 0 of param_2 is set.
0x0060D7F0187CReputeDB__scalar_deleting_dtorCReputeDB scalar deleting destructor. Sets vtable, destroys CLuaInstance, destroys both trees (string+data 0x40 and string-key 0x58), conditionally frees the 0x20-byte object if bit 0 of param_2.
0x0060D8B0128CReputeDB__get_all_group_keysCopies all keys from the repute group tree (at offset +0xC) into a vector via STL_tree_copy_to_vector_with_strings. Returns the output vector.
0x0060D930370CReputeDB__find_visible_entries_by_nameIterates all repute group entries, matches by name string (param_3). For each matching group, iterates its uint64 vector, looks up the corresponding info entry, and if visible (visibility==0 or visibility==2 with nonzero range), adds the info entry name to the result vector.
0x0060DAB0315CReputeDB__get_all_visible_entriesIterates all repute group entries. For each group, iterates its uint64 vector, looks up info entries, and collects visible entries (visibility==0 or visibility==2 with nonzero range) into the result vector.
0x0060DBF054CReputeDB__load_repute_info_dataLoads repute info and group data files. Calls load_repute_info_file (ReputeInfoData) then load_repute_group_file (ReputeGroupData) on this+4 and this+0xC. Shows 'Failed : LoadReputeInfoData' messagebox on failure.
0x0060DC3061CReputeDB__load_repute_data_from_treesLoads repute data from two tree parameters (info tree and group tree). Calls load_repute_info_file then load_repute_group_file. Shows 'Failed : LoadReputeInfoData' messagebox on failure.
0x0060DC701049CReputeDB__load_repute_group_fileLoads 'ContentData/Repute/ReputeGroupData.json' via CFileStream, parses JSON with STL serializer, extracts repute group entries via json__parse_repute_group_entries, rebuilds the group tree with string+vector nodes by calling insert_group_entry for each parsed entry.
0x0060E0901033CReputeDB__load_repute_info_fileLoads 'ContentData/Repute/ReputeInfoData.json' via CFileStream, parses JSON with STL serializer, extracts repute info entries via json__parse_repute_info_entries, rebuilds the info tree with string-key nodes by calling insert_info_entry for each parsed entry (name, min, max, visibility).
0x0060E4A0264CReputeDB__show_repute_windowOpens the repute UI window (type 0x15A). If params are zero, shows a default message (msg ID 0xEF5). Otherwise looks up group entry by uint64 key and sets the window title, then looks up info entry by second uint64 key and sets its visible flag, calling window update method.
0x0060E5B083CReputeDB__set_info_entry_extra_dataLooks up a repute info entry by uint64 key (param_2/param_3) and sets its extra data fields at offsets +0x48 and +0x4C to param_4 and param_5.
0x0060E610533CReputeDB__search_entries_by_nameSearches repute info entries by substring match in their name field. Iterates all entries in the info tree, performs case-sensitive substring search using memchr, and collects matching visible entries (visibility==0 or visibility==2 with nonzero range) into the result vector.
0x0060E83065CReputeDB__set_pause_flag_and_notify_windowSets a pause/toggle flag at offset +0x14 (XOR with 1 of param_2). If param_2==1, finds the repute window (type 0x15A) and sends notification message 0x88 to it.
0x0060EF4054CReputeDB__compare_string_nameCompares a C-string (param_2) against an SSO std::string (param_1). Computes strlen of param_2, then calls std::_Traits_equal for case-sensitive comparison. Used in repute entry name matching.
0x00610E60150CReputeDB__ctorConstructor for CReputeDB. Sets vtable pointer, initializes dirty flag (offset 9) to false, zeroes version counters (offsets 0x10-0x1c), allocates 0x28-byte RB-tree sentinel node with self-referencing left/right/parent pointers and color=0x101, stores at offset 0x18. Sets valid flag (offset 8) to 1.
0x00610F00108CReputeDB__dtor_00610f00Destructor for CReputeDB. Sets vtable, destroys all RB-tree nodes with string keys (0x28-byte nodes), frees the sentinel node.
0x00610F70133CReputeDB__scalar_deleting_dtor_00610f70Scalar deleting destructor for CReputeDB. Destroys the RB-tree and frees sentinel, then conditionally frees the 0x20-byte object itself if bit 0 of the flags parameter is set.
0x0061100051CReputeDB__clear_entriesClears all entries from the CReputeDB RB-tree. Increments the version counter (offsets 0x10/0x14) if the dirty flag (offset 9) is set. Destroys all tree nodes, resets sentinel to self-referencing state, zeroes the node count.
0x00611040247CReputeDB__get_or_create_instanceGets or creates the global CReputeDB singleton stored at DAT_01389940. If null, allocates and constructs a new instance. Returns 1 if the instance is valid (offset 8 flag), otherwise destroys the failed instance and returns 0.
0x0061114027CReputeDB__destroy_instanceDestroys the global CReputeDB singleton (DAT_01389940). Calls the virtual destructor with delete flag, then nulls the global pointer.
0x00611160516CReputeDB__insert_or_update_entryInserts or updates an entry in the CReputeDB RB-tree by string key. Increments version counter if dirty. Performs lower_bound search, and if the key doesn't exist, allocates a new 0x28-byte tree node with the string key. If inserting would exceed 0x6666666 nodes, throws length error. Uses STL tree insert for node placement.
0x00611370339CReputeDB__contains_keyChecks if a string key exists in the CReputeDB RB-tree. Performs lower_bound search and compares the result against the sentinel. Returns true if the key was found (iterator changed from initial position), false otherwise.
0x006114D0282CReputeDB__remove_entries_by_keyRemoves entries matching a string key from the CReputeDB. Increments version counter if dirty, then delegates to CReputeDB__erase_entries_by_key for the actual tree removal.
0x006115F059CReputeDB__resetFully resets the CReputeDB: destroys all tree nodes, resets sentinel to self-referencing state, zeroes node count, clears the dirty flag (offset 9), and resets the version counters (offsets 0x10-0x14) to zero.
0x006119B0477CReputeDB__erase_entries_by_keyErases a range of entries matching a key from the CReputeDB RB-tree. Finds the equal_range (lower_bound to upper_bound) for the key, counts matching entries, then either clears the entire tree (if all entries match) or iterates through the range extracting and freeing each node via STL_rbtree_extract_node. Returns the number of erased entries.
0x00613490191CWorldView__clear_zone_childrenIterates zone children vector at this+0x48..0x4c, destroys 3 strings per child entry (0x5c bytes each), frees memory, resets end pointer. Clears attached child zones from a parent zone entry.
0x0061355099CWorldView__destroy_zone_stringsDestroys 3 STL strings associated with a worldview zone. Called during zone cleanup.
0x006135C0493CWorldView__add_zone_to_groupAdds a zone entry to a group. Searches group vector at this+0x34..0x38 by group ID (param_2 vs +0x30). If group found, extends its bounding box and appends zone to child list. If not found, allocates a new 0x54-byte group entry, copies name string and bounding box from param_4, and appends to group vector.
0x006137B0310CWorldView__load_group_textureBuilds texture path by appending the group's name string (this+0x18) and loads it via CTextureCache__find_or_load_texture. Stores result at this+0x30. Returns true if texture loaded successfully.
0x006138F0262CWorldView__clear_all_groupsIterates all groups in vector at this+0x34..0x38. For each group, clears child zones (destroys strings, frees 0x5c-byte children), then frees the 0x54-byte group itself. Resets end pointer.
0x00613A00163CWorldView__clear_zone_children_simpleSimplified version of clear_zone_children. Iterates children at this+0x48..0x4c, destroys 2 strings per child, frees 0x5c-byte entries, resets end pointer.
0x00613AB0204CWorldView__find_zone_at_pointSearches all groups for a zone containing point (param_3, param_4). For groups with ID < 100 and children, checks first child's bounding box. For others, checks group's own bounding box. Returns found zone pointer and writes group index to param_2. Returns NULL if not found.
0x00613B80163CWorldView__find_zone_by_nameSearches all groups and their child zones for a zone whose name (at child+0x14, STL string) matches param_3 (C string comparison). Writes group index to param_2. Returns zone pointer or 0 if not found.
0x00613C3047CWorldView__find_child_zone_by_name_in_groupsIterates groups at this+0x34..0x38, calling find_child_zone_by_name on each. Returns first matching zone pointer, or 0 if not found in any group.
0x00613C6065CWorldView__find_child_zone_at_pointSearches child zones at this+0x48..0x4c for one whose bounding box (x1,y1,x2,y2) contains point (param_2, param_3). Returns child zone pointer or NULL.
0x00613CB098CWorldView__find_child_zone_by_nameSearches child zones at this+0x48..0x4c for one whose name string (at child+0x14) matches param_2. C string comparison. Returns zone pointer or 0.
0x00613D20163CWorldView__find_group_at_pointSearches groups for one containing point (param_3, param_4). For groups with ID < 100 and children, checks first child's bbox. For others, checks group's own bbox. Returns group pointer and writes index to param_2.
0x00613DD045CWorldView__find_group_by_idSearches groups at this+0x34..0x38 for one with group ID matching param_2 (at group+0x30). Returns group pointer or 0.
0x00613E00163CWorldView__find_group_at_point_strictLike find_group_at_point but only checks groups with ID < 100. For those with no children, checks group bbox directly. For those with children, checks first child's bbox. Returns group pointer and writes index to param_2.
0x00613EB041CWorldView__is_point_in_group_boundsTests whether point (param_2, param_3) is inside this group's bounding box (this+0x34..0x40). Returns 1 if inside, 0 otherwise.
0x00613EE040CWorldView__is_point_in_zone_boundsTests whether point (param_2, param_3) is inside this zone's bounding box (this[0]..this[3] = x1,y1,x2,y2). Returns 1 if inside, 0 otherwise.
0x00613F10323CWorldView__load_and_set_group_textureLoads group texture like load_group_texture, then calls a virtual method on the loaded texture object at vtable+0x2c with position params. Applies the texture with positioning.
0x0061410034CWorldView__copy_range_to_bufferCopies memory range [param_1, param_2) to destination param_3 using memcpy. Returns pointer past copied data in destination buffer.
0x00614130105CWorldView__destroy_zone_entry_rangeIterates zone entries from param_1 to param_2 (stride 0x54 bytes each). For each entry, destroys linked list via CNavigatorWnd__destroy_string_linked_list and destroys an STL string. Used during vector reallocation cleanup.
0x006141A0452CWorldView__vector_insert_ptrSTL vector insert for pointer elements (4-byte stride). Grows vector with 1.5x strategy, copies existing elements around insertion point, inserts new element from param_3. Returns pointer to inserted element.
0x00614370534CWorldView__vector_insert_zone_entrySTL vector insert for zone entries (0x54-byte stride). Grows vector with 1.5x strategy, copies existing elements around insertion point via helper_00617b80/helper_00617c20, calls handler_00614e70 to copy-construct new entry. Frees old buffer.
0x0061459071CWorldView__init_zone_name_entryInitializes a zone name entry struct. Sets first field to 0, string length to 0, and string capacity to 0xf (SSO threshold). Used in _eh_vector_constructor_iterator_ for worldview texture name array.
0x006145E01941CWorldView__ctorCWorldView constructor. Initializes 16 texture name entries (Map.bmp, Mob1-5.bmp, Npc.bmp, Npc_Mob1-5.bmp) from worldview interface path. Sets default colors (0xffffffff, 0xff000000, 0x282828), default sizing (10 for all 4 directional margins). Allocates base path from "worldview\\interface\\wv_Sreach" prefix + NoImage.bmp default.
0x00614D80234CWorldView__move_construct_zone_entryMove-constructs a zone entry (0x54 bytes). Copies numeric fields, move-assigns the STL string (steals buffer), and swaps the linked list head pointer. Used during vector reallocation.
0x00614E70439CWorldView__copy_construct_zone_entryCopy-constructs a zone entry (0x54 bytes). Copies numeric fields, copy-constructs the STL string, and deep-copies the linked list of string nodes (0x20 bytes each with STL string at offset +8).
0x00615030200CWorldView__init_zone_entryInitializes a zone entry struct. Zeros all fields, sets string capacity to 0xf (SSO), zeros vector pointers, and allocates a 0x20-byte self-referential linked list sentinel node at offset +0x4c.
0x00615100112CWorldView__clear_linked_listClears a doubly-linked list. Walks nodes from first to last, destroys STL string in each 0x20-byte node, frees node. Unlinks head and tail.
0x006151A0129CWorldView__free_ptr_vectorFrees the backing buffer of a pointer vector (4-byte stride). Handles aligned allocation cleanup. Resets begin/end/capacity to 0.
0x00615230163CWorldView__free_zone_entry_vectorDestroys all zone entries in a vector (0x54-byte stride) by calling destroy_zone_entry_range, then frees the backing buffer. Resets begin/end/capacity to 0.
0x006152E0266CWorldView__dtorCWorldView destructor. Destroys zone entry vectors, NPC entries, texture name array (16 entries via _eh_vector_destructor_iterator_), pointer vector, linked list, and string members. Frees all allocated resources.
0x006153F087CWorldView__destroy_single_zone_entryDestroys a single zone entry: calls CNavigatorWnd__destroy_string_linked_list and then destroys the STL string member.
0x006154504743CWorldView__load_config_from_luaLoads worldview configuration from Lua scripts. Loads 5 data files via CDataTableMgr, then calls multiple Lua functions: queryWorld_List, Get_Worldview_info_Dungeon_Select, Get_Worldview_info_BoxLine_Color. Reads colors (RGB + alpha), bounding boxes, margins, and 16 per-group color entries. Shows MessageBox error on Lua failure.
0x006166E0523CWorldView__rescale_all_zones_to_screenRescales all group and zone bounding boxes to match current screen resolution. Gets texture dimensions via vtable calls, computes scale factors from screen dimensions (DAT_01389638+0x28/0x2c). Applies scaling + 0x11 vertical offset to both group and child zone rectangles.
0x006168F0117CWorldView__on_resolution_changeHandles screen resolution changes. Sets zoom level (this+0x70) based on screen width: 0 for <=640, 1 for 641-800, 2 for 801-1024, 3 for >1024. Reloads all group textures, then rescales zones to screen if not already done (DAT_0173795c flag).
0x00616970686CWorldView__find_zone_index_by_name_or_currentIf param_2 == -1, gets current map name from mode1 object (via get_field4_if_mode1 + vtable call). Searches for zone by name across all groups. Returns matching zone index or 0 if not found. Used to look up the current zone's tab index.
0x00616C20145CWorldView__reset_selection_stateResets the worldview selection state. Clears indices at +0x18/+0x1c, clears name string at +0x38, zeros bounding box at +0x50..0x5c, clears linked list at +0x64, and resets count at +0x68. Prepares for new selection.
0x00616CC0179CWorldView__select_zone_by_nameSelects a worldview zone by name. Resets selection state, then searches all groups for a zone with group ID >= 100 matching param_2. If found, stores group index, zone name string, and bounding box into the selection state. Returns 1 if found, 0 otherwise.
0x00616D8071CWorldView__clamp_tab_and_set_textureClamps the current tab index (this+0x6c) to valid range [0, group_count-1], then calls load_and_set_group_texture to apply the selected group's texture with positioning parameters.
0x00616DD0672CWorldView__add_npc_zone_entryAdds an NPC zone entry by name. First searches existing entries (0x54-byte stride vector) for a matching name string. If found, returns 1 immediately. If not found, searches groups for a zone with group ID >= 100, creates a new zone entry with the zone data and linked list, and appends to the entry vector. Returns 1 on success, 0 on failure.
0x0061707024CWorldView__clear_zone_entry_vector_contentsDestroys all zone entries in a vector and resets size to 0 (keeps capacity). Calls destroy_zone_entry_range on [begin, end) then sets end = begin.
0x00617090305CWorldView__find_zone_entry_by_nameSearches zone entry vector for an entry whose name string (at entry+0x20, STL string) matches param_2 (C string). Returns pointer to matching entry or 0. Used by add_npc_zone_entry to check duplicates.
0x006171D076CWorldView__get_zone_entry_by_indexReturns a zone entry pointer at index param_2 from the zone entry vector (0x54-byte stride). If param_3 is nonzero, also validates that entry's first field matches this+0x1b (active map ID). Returns NULL if out of bounds or validation fails.
0x0061722077CWorldView__get_zone_entry_name_ptr_by_indexLike get_zone_entry_by_index but returns pointer to entry+0x38 (the name/data portion, 0xe ints past base). Same bounds checking and optional active-map validation. Returns NULL on failure.
0x0061727023CWorldView__get_zone_entry_countReturns the number of zone entries in the vector: (end - begin) / 0x54.
0x0061729015CWorldView__refresh_current_zone_indexCalls find_zone_index_by_name_or_current with -1 (meaning use current map) and stores the result in this+0x6c (current tab index).
0x006172E0752CWorldView__add_or_update_zone_entryAdds or updates a zone entry by name. Searches existing entries (at this+0x0c..0x10, 0x54-byte stride) for a name match. If found and param_3 (priority) is nonzero, updates the entry's priority field (+0x08), handling a 10000-threshold for different priority tiers. If not found, searches groups for matching zone (ID >= 100), creates a new entry with the zone data, and inserts into the entry vector. Returns 1 on add/update, 0 on not found.
0x00663BD04868CNavigatorDB__register_lua_functions_and_load_scriptsRegisters 25+ Lua global functions for Adventure Guide/Navigator DB data insertion: InsertIntro, InsertIntroContents, InsertEpisode, InsertEpisodeSubMenu, InsertEpisodeContents, InsertEpisodeReward, InsertMonster, InsertMonsterContents, InsertMonsterReward, InsertQuest, InsertQuestSubMenu, InsertQuestContents, InsertQuestReward, InsertDungeon, InsertDungeonSubMenu, InsertDungeonContents, InsertDungeonReward, InsertWeapon, InsertWeaponSubMenu, InsertWeaponContents, InsertWeaponObtainGuide, InsertArmor, InsertArmorSubMenu, InsertArmorContents, InsertArmorObtainGuide. Then executes ~9 AdventureGuide Lua script files. Validates via Lua callback at end.
0x00664EE0620CNavigatorDB__lua_insert_entry_with_2strings_vectorLua callback for navigator DB entry insertion. Creates a result struct, finds-or-inserts into nested tree (60-byte nodes), emplaces a 60-byte map entry with 2 strings and a vector. Sets success result with empty error string. Cleans up temporary strings/vectors on exit.
0x00665150481CNavigatorDB__lua_insert_contents_string_by_episode_idLua callback for inserting contents string by episode ID. Iterates tree at this+0x4C, finds node with matching ID via lower_bound, then appends a string to the node's vector (24-byte string elements). Returns error 'cannot be find' if ID not found.
0x00665340408CNavigatorDB__lua_insert_submenu_entry_type4Lua callback for inserting a submenu entry (type 4). Iterates tree at this+0x0C, finds node with type==4, then emplaces a 38-byte map entry (string key + data) into that node's nested tree. Returns success result.
0x006654E0620CNavigatorDB__lua_insert_entry_with_extra_paramLua callback for navigator DB entry insertion (variant with extra parameter). Same as 00664ee0 but takes one additional parameter. Creates result, finds-or-inserts nested tree (60-byte), emplaces 60-byte map entry. Cleans up temps.
0x00665750481CNavigatorDB__lua_insert_contents_string_by_quest_idLua callback for inserting contents string by quest ID. Iterates tree at this+0x3C, finds node with matching ID via lower_bound, appends string to node's vector. Returns error if ID not found. Same pattern as episode contents inserter.
0x00665940398CNavigatorDB__lua_insert_submenu_entry_type1Lua callback for inserting a submenu entry (type 1). Iterates tree at this+0x0C, finds node with type==1, emplaces 38-byte map entry with string into nested tree. Same pattern as type4 variant.
0x00665AD0514CNavigatorDB__lua_insert_entry_with_flags_and_stringLua callback for navigator DB entry insertion with 3 flag bytes and a string. If type is 5 or 6, finds-or-inserts nested tree (44-byte nodes), emplaces a 44-byte map entry with flags and string. Sets success result.
0x00665CE0920CNavigatorDB__lua_insert_obtain_guide_by_weapon_or_armorLua callback for inserting obtain guide string by weapon (type 5, tree at +0x54) or armor (type 6, tree at +0x5C) ID. Searches tree for matching ID, creates 0x44-byte node if not found, appends guide string to node's vector. Returns error if ID not found.
0x00666080409CNavigatorDB__lua_insert_submenu_entry_by_dynamic_typeLua callback for inserting submenu entry by dynamic type. Iterates tree at +0x0C, finds node matching param_3 type, then emplaces 38-byte entry (int key + string + data) into that node's nested tree. Returns success result.
0x00666220643CNavigatorDB__lua_insert_2string_entry_to_treeLua callback for inserting a 2-string entry into the tree at +0x2C. Allocates a 0x44-byte node (int key + 2 strings), inserts via lower_bound + Insert_node if key not found. Sets success result. Cleans up temporary strings.
0x006664B0135CNavigatorDB__make_success_result_with_stringConstructs a success result struct. Copies string from params, sets success flag to 1, sets error string to empty (4-byte placeholder).
0x00666540799CNavigatorDB__lua_insert_guide_type_with_nested_treeLua callback for inserting a guide type with nested tree. Validates param3==param4 (type guard, returns 'GuideType_Error' on mismatch). Creates 0x50-byte tree node with nested 0x38-byte RB-tree, inserts 2 strings. Returns success result.
0x00666860489CNavigatorDB__lua_append_entry_to_intro_listLua callback for appending an entry to the intro/monster list at +0x34. Creates a 0x34-byte list node with move-constructed struct (string + ints + vector), appends to list. Returns success result. Cleans up temp vector.
0x00666A50417CNavigatorDB__lua_append_contents_to_last_intro_entryLua callback for appending contents string to the last entry in the intro list. Returns 'Contents_Empty' if list is empty. Validates last entry's name matches param4 (returns 'cannot be find' on mismatch). Appends param5 string to the entry's vector.
0x00666C00620CNavigatorDB__lua_insert_dungeon_entryLua callback for inserting a dungeon entry. Finds-or-inserts nested tree (60-byte), emplaces 60-byte map entry with 2 strings and vector. Same structure as episode/quest entry inserters. Sets success result.
0x00666E70481CNavigatorDB__lua_insert_dungeon_contents_stringLua callback for inserting dungeon contents string by ID. Iterates tree at +0x44, finds node with matching ID via lower_bound, appends string to node's vector. Returns 'cannot be find' error if ID not found.
0x00667060408CNavigatorDB__lua_insert_dungeon_submenu_entryLua callback for inserting dungeon submenu entry. Iterates tree at +0x0C, finds node with type==3, emplaces 38-byte map entry with string into nested tree. Same pattern as other submenu inserters.
0x00667200756CNavigatorDB__has_entries_for_current_levelChecks if the navigator DB has any entries matching the current player level (DAT_01733c88) for a given category type. Switch on type: 1->quest(+0x3C), 3->monster(+0x44), 4->episode(+0x4C), 5->weapon(+0x54, via check_equip_job), 6->armor(+0x5C, via check_equip_job). Returns 1 if found, 0 if not.
0x00667510383CNavigatorDB__check_equip_job_availabilityChecks if a weapon/armor entry is available for the current player. Validates level range against DAT_01733c88, calls Lua function 'GetEquipJob', creates singleton DAT_0138cf30 if needed (0x14-byte object with 2 nested trees), then calls SpriteGroupMgr__check_sprite_membership for job compatibility check.
0x00668550668CNavigatorDB__lua_insert_armorLua function 'InsertArmor' callback. Validates 3 arguments (number ID, string name, string desc). Calls CNavigatorDB__lua_insert_guide_type_with_nested_tree with type=6 (armor). Pushes boolean success + error string to Lua stack. Returns 2 values.
0x006687F0764CNavigatorDB__lua_insert_armor_contentsLua binding: InsertArmorContents. Takes 7 numbers + 1 string from Lua stack, calls CPacketSerializer to insert armor contents into navigator DB. Returns bool success + error string.
0x00668AF0465CNavigatorDB__lua_insert_armor_obtain_guideLua binding: InsertArmorObtainGuide. Takes 1 number + 1 string from Lua stack, inserts armor obtain guide entry into navigator DB. Returns bool success + error string.
0x00668CD0462CNavigatorDB__lua_insert_armor_submenuLua binding: InsertArmorSubMenu. Takes 3 numbers + 1 string from Lua stack, inserts armor submenu entry into navigator DB. Returns bool success + error string.
0x00668EA0668CNavigatorDB__lua_insert_dungeonLua binding: InsertDungeon. Takes 1 number + 2 strings from Lua stack, inserts dungeon entry into navigator DB. Returns bool success + error string.
0x00669140689CNavigatorDB__lua_insert_dungeon_contentsLua binding: InsertDungeonContents. Takes 5 numbers + 2 strings from Lua stack, inserts dungeon contents into navigator DB. Returns bool success + error string.
0x00669400463CNavigatorDB__lua_insert_dungeon_rewardLua binding: InsertDungeonReward. Takes 1 number + 1 string from Lua stack, inserts dungeon reward entry into navigator DB. Returns bool success + error string.
0x006695D0460CNavigatorDB__lua_insert_dungeon_submenuLua binding: InsertDungeonSubMenu. Takes 3 numbers + 1 string from Lua stack, inserts dungeon submenu entry into navigator DB. Returns bool success + error string.
0x006697A0668CNavigatorDB__lua_insert_episodeLua binding: InsertEpisode. Takes 1 number + 2 strings from Lua stack, inserts episode entry into navigator DB. Returns bool success + error string.
0x00669A40753CNavigatorDB__lua_insert_episode_contentsLua binding: InsertEpisodeContents. Takes 6 numbers + 2 strings from Lua stack, inserts episode contents into navigator DB. Returns bool success + error string.
0x00669D40463CNavigatorDB__lua_insert_episode_rewardLua binding: InsertEpisodeReward. Takes 1 number + 1 string from Lua stack, inserts episode reward entry into navigator DB. Returns bool success + error string.
0x00669F10518CNavigatorDB__lua_insert_episode_submenuLua binding: InsertEpisodeSubMenu. Takes 4 numbers + 1 string from Lua stack, inserts episode submenu entry into navigator DB. Returns bool success + error string.
0x0066A120669CNavigatorDB__lua_insert_infoLua binding: InsertInfo. Takes 1 number + 3 strings from Lua stack, inserts info entry into navigator DB. Returns bool success + error string.
0x0066A3C0393CNavigatorDB__lua_insert_intro_contentsLua binding: InsertIntroContents. Takes 1 number + 2 strings from Lua stack, inserts intro contents into navigator DB. Returns bool success + error string.
0x0066A550668CNavigatorDB__lua_insert_monsterLua binding: InsertMonster. Takes 1 number + 2 strings from Lua stack, inserts monster entry into navigator DB. Returns bool success + error string.
0x0066A7F0516CNavigatorDB__lua_insert_monster_contentsLua binding: InsertMonsterContents. Takes 1 string + 2 numbers from Lua stack, inserts monster contents into navigator DB. Returns bool success + error string.
0x0066AA00612CNavigatorDB__lua_insert_monster_rewardLua binding: InsertMonsterReward. Takes 2 strings from Lua stack, inserts monster reward entry into navigator DB. Returns bool success + error string.
0x0066AC70668CNavigatorDB__lua_insert_questLua binding: InsertQuest. Takes 1 number + 2 strings from Lua stack, inserts quest entry into navigator DB. Returns bool success + error string.
0x0066AF10689CNavigatorDB__lua_insert_quest_contentsLua binding: InsertQuestContents. Takes 5 numbers + 2 strings from Lua stack, inserts quest contents into navigator DB. Returns bool success + error string.
0x0066B1D0463CNavigatorDB__lua_insert_quest_rewardLua binding: InsertQuestReward. Takes 1 number + 1 string from Lua stack, inserts quest reward entry into navigator DB. Returns bool success + error string.
0x0066B3A0460CNavigatorDB__lua_insert_quest_submenuLua binding: InsertQuestSubMenu. Takes 3 numbers + 1 string from Lua stack, inserts quest submenu entry into navigator DB. Returns bool success + error string.
0x0066B570668CNavigatorDB__lua_insert_weaponLua binding: InsertWeapon. Takes 1 number + 2 strings from Lua stack, inserts weapon entry into navigator DB. Returns bool success + error string.
0x0066B810764CNavigatorDB__lua_insert_weapon_contentsLua binding: InsertWeaponContents. Takes 7 numbers + 1 string from Lua stack, inserts weapon contents into navigator DB. Returns bool success + error string.
0x0066BB10465CNavigatorDB__lua_insert_weapon_obtain_guideLua binding: InsertWeaponObtainGuide. Takes 1 number + 1 string from Lua stack, inserts weapon obtain guide entry into navigator DB. Returns bool success + error string.
0x0066BCF0462CNavigatorDB__lua_insert_weapon_submenuLua binding: InsertWeaponSubMenu. Takes 3 numbers + 1 string from Lua stack, inserts weapon submenu entry into navigator DB. Returns bool success + error string.
0x0066BEC0238CNavigatorEntry__ctorConstructor for CNavigatorEntry. Initializes a 32-byte entry with an ID field, 3 empty SSO strings (capacity 0xf each), 3 -1 sentinel ints, and 4 zero fields including an empty string at offset 0x6c.
0x0066C7C0383CNavigatorEntry__move_ctorMove constructor for CNavigatorEntry (full version). Moves 4 SSO strings by stealing internal buffers, copies numeric fields (ints at offsets 0x48-0x64), and transfers vector ownership (begin/end/capacity pointers).
0x0066C940188CNavigatorDB__ctorCNavigatorDB constructor. Sets vtable pointer, initializes category type to 10, allocates sentinel nodes for two rbtree maps (0x94-byte and 0x20-byte sentinels), sets initial counts to 0.
0x0066CA00139CNavigatorEntry__move_ctor_simpleSimplified move constructor for CNavigatorEntry (vector element). Moves one SSO string by stealing buffer ownership, copies two trailing integer fields at offsets 0x18 and 0x1c.
0x0066CE60219CNavigatorDB__dtorCNavigatorDB destructor. Sets vtable, destroys the rbtree map (clears nodes + frees sentinel), destroys the secondary rbtree set (clears + frees 0x20-byte sentinel), then destroys the primary rbtree map (clears + frees 0x94-byte sentinel).
0x006CEFF0368CMapInfoMgr__load_lua_scriptsLoads map info from Lua: registers AddMapDisplayName/AddMapSignName/AddMapBackgroundBmp callbacks, runs mapInfo.lub
0x006CF600605CMapInfoMgr__lua_AddMapBackgroundBmpLua callback: AddMapBackgroundBmp(mapName, bmpPath) - sets background BMP at node offset+0x74
0x006CF860683CMapInfoMgr__lua_AddMapDisplayNameLua callback: AddMapDisplayName(mapName, displayName, isOutdoor) - sets display name at node+0x28 and flag
0x006CFB10777CMapInfoMgr__lua_AddMapSignNameLua callback: AddMapSignName(mapName, signName, subName) - sets two sign name strings at node offsets
0x006CFE20160CMapInfoMgr__create_map_entry_from_stringCreates map info entry from string key via Lua string interning, initializes with move semantics
0x006CFEC0103CMapInfoMgr__destroy_tree_nodes_recursiveRecursively destroys RB-tree nodes by traversing children and freeing 0x14-byte nodes
0x006CFF3075CMapInfoMgr__find_lower_bound_intFinds lower bound in int-keyed RB-tree; traverses left/right based on key comparison
0x006CFF80281CMapInfoMgr__find_or_insert_string_keyFinds or inserts node in string-keyed RB-tree; allocates 0x28-byte node with copied string on miss
0x006D00A0224CMapInfoMgr__initInitializes CMapInfoMgr: sets vtable, allocates 3 RB-tree sentinels (0x28, 0x28, 0x14 bytes)
0x006D018067CMapInfoMgr__scalar_deleter_006d0180Frees 0x14-byte allocation at this+4 if non-null
0x006D01D0111CMapInfoMgr__clear_and_free_treeDestroys all nodes in RB-tree then frees the 0x14-byte sentinel node
0x006D025078CMapInfoMgr__scalar_deleter_006d0250Frees 0x14-byte allocation at this+4 if non-null
0x006D02A078CMapInfoMgr__scalar_deleter_006d02a0Frees 0x14-byte allocation at this+4 if non-null
0x006D02F065CMapInfoMgr__clear_tree_wrapperSEH-wrapped delegate calling CMapInfoMgr__clear_and_free_tree
0x006D0340173CMapInfoMgr__destructorDestructor: sets vtable, destroys int-tree, then destroys both 0x28-byte string-keyed trees
0x006D03F0194CMapInfoMgr__scalar_deleting_destructorScalar deleting destructor: calls destructor then optionally frees 0x20-byte object
0x006D0640106CMapInfoMgr__get_nth_tree_valueReturns the value at the nth node by in-order traversal of the RB-tree at this+0x18
0x006D06C092CMapInfoMgr__ensure_entry_existsEnsures a string-keyed entry exists in the map info tree; creates if missing
0x006D0720216CMapInfoMgr__insert_int_keyInserts an integer key into the RB-tree at this+0x18 if not already present; allocates 0x14-byte node
0x006D080092CMapInfoMgr__ensure_entry_exists_006d0800Ensures a string-keyed entry exists in the second map info tree; creates if missing
0x006D0860165CMapInfoMgr__contains_string_keyChecks if a string key exists in the string-keyed RB-tree at this+0x10
0x006D091064CMapInfoMgr__contains_int_keyChecks if an integer key exists in the int-keyed RB-tree at this+0x18
0x006D0950165CMapInfoMgr__contains_string_key_tree2Checks if a string key exists in the second string-keyed RB-tree at this+0x08
0x0077B7A0180CMapEventDispatch__InvokeHandler_vtable_14Looks up handler by key in std::map, clones via vtable+8, invokes vtable+0x14 on clone, frees clone. Returns result or 0 if not found.
0x0077B860187CMapEventDispatch__InvokeHandler_vtable_40Looks up handler by key in map C, clones via vtable+8, invokes vtable+0x40 with 3 params on clone, frees clone. Returns true if handler found.
0x0077B920193CMapEventDispatch__InvokeHandler_mapA_vtable0Looks up handler by key in map A (+0xC), clones via vtable+8, invokes vtable[0] with (key, 5 params) on clone, frees clone. Returns true if found.
0x0077B9F0184CMapEventDispatch__InvokeHandler_vtable_20Looks up handler by key in map C, clones, invokes vtable+0x20 with 2 params, frees clone. Returns true if found.
0x0077BAB0187CMapEventDispatch__InvokeHandler_vtable_24Looks up handler by key in map C, clones, invokes vtable+0x24 with 3 params, frees clone. Returns true if found.
0x0077BB70230CMapEventDispatch__InvokeHandler_vtable_28_withPosLooks up handler by key in map C, clones, converts (param_5, param_6) shorts to position via FUN_0077ad90, invokes vtable+0x28 with 4 params including position. Returns true if found.
0x0077BC60191CMapEventDispatch__InvokeHandler_mapA_vtable4Looks up handler by key in map A (+0xC), clones, invokes vtable+4 with (key, 4 params). Returns true if found.
0x0077BD20232CMapEventDispatch__InvokeHandler_vtable_30_withPosLooks up handler by key in map C (+0x4), clones via vtable+8, computes world position via CEffect__get_world_position from params, then invokes vtable+0x30 on clone with position and extra params. Returns 1 if handler found, 0 otherwise.
0x0077BE10187CMapEventDispatch__InvokeHandler_vtable_3cLooks up handler by key in map C, clones, invokes vtable+0x3C with 3 params. Returns true if found.
0x0077BED0191CMapEventDispatch__InvokeHandler_mapA_vtable8Looks up handler by key in map A (+0xC), clones, invokes vtable+8 with (key, 4 params). Returns true if found.
0x0077BF90181CMapEventDispatch__InvokeHandler_mapB_vtable4Looks up handler by key in map B (+0x14), clones, invokes vtable+4 with 1 param, frees clone. Returns true if found.
0x0077C050186CMapEventDispatch__InvokeHandler_mapB_vtable0Looks up handler by key in map B (+0x14), clones, invokes vtable[0] with 3 params, frees clone. Returns true if found.
0x0077C110187CMapEventDispatch__InvokeHandler_vtable_2cLooks up handler by key in map C, clones, invokes vtable+0x2C with 3 params, frees clone. Returns true if found.
0x007AEDF0234CMapInfoMgr__insert_or_find_int_keyInserts a new node with an integer key into CMapInfoMgr's red-black tree, or returns the existing node if the key already exists. Node size is 0x14 bytes. Returns iterator (node pointer + inserted flag) via param_2.
0x007AEEE0576CMapInfoMgr__init_default_entriesInitializes CMapInfoMgr with default entries. Creates tree with sentinel node and inserts entries for IDs 0x7F4, 0x19C9, and 0x1998 (map type identifiers for special maps).
0x007AF130361CMapInfoMgr__process_warp_entriesIterates warp entries in CMapInfoMgr tree, maps IDs to nav categories (0x7F4->2, 0x1998->23, 0x19C9->21), looks up nav map info, and sends warp packet (0xB11) with map ID. Clears tree when done.
0x007AF2A0274CMapInfoMgr__iterate_warp_entries_no_clearSame logic as process_warp_entries but does NOT clear the tree when done. Iterates all entries, maps IDs to nav categories (0x7F4->2, 0x1998->23, 0x19C9->21), looks up nav map info, and sends warp packet (0xB11) with map ID.
0x007AF3C060CMapInfoMgr__map_id_to_nav_category_aMaps specific map IDs to navigation category A values: 0x7F4->2, 0x1998->0x17, 0x19C9->0x15. Returns -1 for unknown IDs.
0x007AF40060CMapInfoMgr__map_id_to_nav_category_bMaps specific map IDs to navigation category B values: 0x7F4->4, 0x1998->0x18, 0x19C9->0x16. Returns -1 for unknown IDs.
0x007AF44078CMapInfoMgr__insert_default_map_idsInserts three default map IDs (0x7F4, 0x19C9, 0x1998) into the map info set via insert_or_find_int_key.
0x007AF49076CMapInfoMgr__contains_map_idChecks if a given map ID exists in the CMapInfoMgr set. Uses lower_bound search and validates the result node.
0x007AF4E0175CMapInfoMgr__send_single_warp_packetSends a single warp packet to the server. Constructs a map warp network message with map name and coordinates.
0x007AF590312CMapInfoMgr__send_warp_requestSends warp request packet 0xB10 (10 bytes) then looks up nav category. If nav info found, sends additional 0xB11 packet. Otherwise sets DAT_017387dc to DAT_017387e0 and calls stub with category.
0x00ADAC70367CMapObjMgr__ctorCMapObjMgr constructor. Sets vtable to PTR_FUN_011598e8, initializes 6 vector triplets (begin/end/capacity) for different object types at various offsets, allocates two 0x0C-byte circular linked list sentinels for managing object lists. Zeroes out flags, counters, and pointers.
0x00ADADE0181CMapObjMgr__init_sub_listsInitializes sub-list structures for map object manager. Allocates two 0x0C-byte circular linked list sentinels and initializes 6 vector triplets (3 fields each) to zero.
0x00ADAEA0121CMapObjMgr__dtorCMapObjMgr destructor. Resets vtable, destroys skybox model instance (field 0x6D, 0x32C bytes) if present via CSkybox__DestroyModelInstance, then calls FUN_00adaf20 to clean up linked lists.
0x00ADAF20176CMapObjMgr__destroy_listsDestroys both linked lists in the map object manager. Frees all 0x0C-byte nodes in each list by traversing and freeing. Handles both lists at field[2] and field[0].
0x00ADAFD0145CMapObjMgr__scalar_deleting_dtorCMapObjMgr scalar deleting destructor. Calls CMapObjMgr__dtor then conditionally frees the 0x1B8-byte object if bit 0 of param_2 is set.
0x00ADB07022CMapObjMgr__add_offset_zAdds a float value to the Z offset field at offset 0x4C of the map object manager.
0x00ADB09022CMapObjMgr__add_offset_xAdds a float value to the X offset field at offset 0x44 of the map object manager.
0x00ADB0B022CMapObjMgr__add_offset_yAdds a float value to the Y offset field at offset 0x48 of the map object manager.
0x00ADBA40113CMapObjMgr__clear_both_render_listsClears both render lists (at field[0] and field[2]) by freeing all 0x0C-byte list nodes and adjusting the respective counts (field[1] and field[3]).
0x00ADC1E01469CMapObjMgr__render_visible_objectsRenders all visible map objects. Computes frustum planes, iterates through two object lists (at offsets 0x100 and 0xF8), performs OBB frustum culling on each object's sub-meshes, calls virtual render methods on visible objects. Tracks map bounds (min/max x/z). Normalizes camera look direction for the render pipeline. Clears render lists when done. Calls terrain/water rendering and post-processing.
0x00ADED90330CMapResourceMgr__ctorCMapResourceMgr constructor. Initializes 3 STL strings (offsets 0x04, 0x1C, 0x40), a linked list of 0x24-byte nodes (offset 0x60), and various fields. Allocates a 0x24-byte circular list sentinel. Clears all strings and resets the list. Sets state flag at offset 0 to 1.
0x00ADEF30156CMapResourceMgr__dtorCMapResourceMgr destructor. Clears and destroys the linked list, frees sentinel, destroys 3 STL strings.
0x00ADEFD0177CMapResourceMgr__scalar_deleting_dtorCMapResourceMgr scalar deleting destructor. Destroys linked list, sentinel, 3 STL strings, then conditionally frees the 0x68-byte object.
0x00ADF260112CMapResourceMgr__resetResets the map resource manager. Clears 3 STL strings to empty, zeroes out numeric fields (0x34-0x3C, 0x58, 0x5C), destroys and re-initializes the linked list at offset 0x60.
0x00ADF2D0301CMapResource__ctorCMapResource constructor. Copies vtable from param_3, sets secondary vtable to PTR_FUN_01159a6c, initializes 5 STL strings (at offsets for name, path, etc.), zeroes out numeric fields for dimensions, flags, and state.
0x00ADF4E0135CMapResourceCache__ctorCMapResourceCache constructor. Sets vtable to PTR_FUN_01159a74, allocates a 0xA4-byte red-black tree sentinel node, sets state flag at offset+4 to 1.
0x00ADF76068CMapResource__cleanup_wrapperSEH-wrapped call to FUN_00adf820 for CMapResource cleanup. Used during destruction.
0x00ADF7B0111CMapResourceCache__dtorCMapResourceCache destructor. Resets vtable to PTR_FUN_01159a74, recursively destroys all 0xA4-byte tree nodes, frees the sentinel.
0x00ADF820141CMapResource__dtorCMapResource destructor. Resets vtable to PTR_FUN_01159a6c, destroys 2 CFmt objects and 4 STL strings in sequence. Handles SEH throughout.
0x00ADF8C0242CMapResourceCache__get_or_createGets or creates a CMapResource entry in the cache tree by key (*param_2). If not found, allocates a 0xA4-byte tree node, constructs a CMapResource inside it, and inserts into the tree. Returns pointer to the embedded CMapResource data (tree node + 0x14).
0x00ADF9C0136CMapResourceCache__scalar_deleting_dtorCMapResourceCache scalar deleting destructor. Destroys tree, frees sentinel, conditionally frees the 0x10-byte object.
0x00ADFA5038CMapResource__scalar_deleting_dtorCMapResource scalar deleting destructor. Calls CMapResource__dtor then conditionally frees the 0x90-byte object.
0x00ADFAB049CMapResourceCache__set_dimensionsSets the width and height dimensions on a map resource cache entry. Gets or creates the entry by key (param_1), sets field at offset 0x7C to param_2 (width) and 0x80 to param_3 (height).
0x00ADFAF028CMapResourceCache__set_field_88Sets field at offset 0x88 on a map resource cache entry by key (param_1).
0x00ADFB10166CMapResourceCache__set_name_stringsSets name strings on a map resource cache entry. Gets or creates by key, assigns STL strings to fields at offset 0x40 and 0x58 from the stack params. Destroys temp strings after assignment.
0x00ADFBC0123CMapResourceCache__add_string_to_vectorAdds a string entry to the vector at offset 0x74 of a map resource cache entry. Gets or creates by key, then either copy-constructs a new string at the end (if capacity allows) or calls realloc-based insert.
0x00ADFC4031CMapResourceCache__set_flag_84Sets the flag field at offset 0x84 on a map resource cache entry by key (param_1). Stores param_2 as uint.
0x00ADFC6028CMapResourceCache__set_field_8CSets field at offset 0x8C on a map resource cache entry by key (param_1).
0x00ADFC80166CMapResourceCache__set_path_stringsSets path strings on a map resource cache entry. Gets or creates by key, assigns STL strings to fields at offset 0x04 and 0x1C. Destroys temp strings after.
0x00ADFD30123CMapResourceCache__add_model_stringAdds a model filename string to the vector at offset 0x38 of a map resource cache entry. Gets or creates by key, appends or reallocates as needed.
0x00ADFEC025CMapResourceCache__get_flag_84Gets the flag value at offset 0x84 from a map resource cache entry by key.
0x00ADFEE076CMapResourceCache__get_field_9CGets the value at offset 0x9C from a cache entry looked up by key (param_2). Returns -1 if not found.
0x00ADFF4068CMapResourceCache__get_field_A0Gets the value at offset 0xA0 from a cache entry looked up by key (param_2). Returns 0 if not found.
0x00AE1870157CTownInfoMgr__ctor_00ae1870CTownInfoMgr constructor. Sets vtable to PTR_FUN_01159c1c, allocates 0x34-byte red-black tree sentinel, initializes a vector triplet (begin/end/capacity) to zero, sets state flag at offset+4 to 1.
0x00AE1DE086CTownInfoMgr__clear_and_destroy_entryClears a town info entry by destroying its town vector and STL string.
0x00AE1E50125CTownInfoMgr__dtor_00ae1e50CTownInfoMgr destructor. Resets vtable, clears the town vector, destroys the 0x34-byte red-black tree, frees sentinel.
0x00AE1ED0148CTownInfoMgr__scalar_deleting_dtorCTownInfoMgr scalar deleting destructor. Clears town vector, destroys tree, frees sentinel, conditionally frees the 0x1C-byte object.
0x00AE1F701985CTownInfoMgr__add_town_entryAdds a town entry to the CTownInfoMgr. On first call, initializes global town type icon BMP paths (Store, Weaponshop, ArmorShops, Smithy, Guide) and text strings. Looks up the town key in the string-keyed red-black tree. If found, appends to existing vector. If not found, creates a new tree node with the town name key, inserts it, and adds the entry to its vector.
0x00AE2740254CTownInfoMgr__init_singletonInitializes the CTownInfoMgr singleton. Allocates 0x1c bytes, sets vtable, creates linked list sentinel node (0x34 bytes). Stores instance in global DAT_016d4304. Returns 1 if init succeeded, 0 if failed or already exists.
0x00AE284027CTownInfoMgr__destroy_singletonDestroys the CTownInfoMgr singleton. Calls virtual destructor on DAT_016d4304 with deleteFlag=1, then nulls the global pointer.
0x00AE2860550CTownInfoMgr__load_towninfo_luaLoads town info from Lua script "System_Towninfo_lub". Registers the AddTownInfo callback, executes the script. On error, shows MessageBox with CTownInfoMgr caption. Returns 1 on success, 0 on failure.
0x00AE2A90230CTownInfoMgr__format_stringFormats a string using vsprintf into a 2048-byte buffer, then constructs an STL string from the result. Returns the formatted STL string in param_1.
0x00AE2B8022CTownInfoMgr__destroy_range_adapterThiscall adapter that calls destroy_range_of_3C_elements with reordered parameters. Used as a callback for vector cleanup operations in CTownInfoMgr. Passes param_2 as start, param_3 as end, and this (param_1) as the allocator context.
0x00AE2DB0172CTownInfoMgr__clear_town_vectorClears a vector of 0x3c-byte TownInfo records. Calls FUN_00ae1290 to process elements, then frees the backing array and zeroes the vector pointers (begin/end/capacity).
0x00AE2E80100CTownInfoMgr__alloc_town_arrayAllocates an aligned array for 0x3c-byte TownInfo records. Multiplies count by 0x3c, handles aligned allocation for blocks >= 0x1000 bytes. Throws bad_array_new_length if count >= 0x4444445.
0x00AE2EF064CTownInfoMgr__free_town_arrayFrees an array of 0x3c-byte TownInfo records. Handles aligned deallocation for blocks >= 0x1000 bytes by reading the original allocation pointer at offset -4.
0x00AE2F40934CTownInfoMgr__lookup_town_by_nameLooks up a town info record by name string. Strips duplicate characters from input, searches a sorted tree structure using string comparison. If found, copies the 0x3c-byte record (including two STL strings at offsets +1 and +9) into param_2. Returns param_2.
0x00AE32F0161CTownInfoMgr__push_back_town_recordPushes a 0x3c-byte TownInfo record onto a vector. Copies the record including two STL strings (at offsets +1 and +9) and scalar fields (at offsets +7 and +8). Calls grow function if at capacity.
0x00AE33A0683CTownInfoMgr__lua_AddTownInfoLua callback for AddTownInfo. Reads town info fields from the Lua stack (3 integers, 2 booleans, 2 strings), constructs a TownInfo record and stores it. Returns 2 (number of Lua return values).
0x00AE3650143CTownInfoMgr__destroy_list_0x80_nodesDestroys a linked list of 0x80-byte nodes. Each node contains 3 STL strings that are destructed before freeing the 0x80-byte node memory. Zeroes the list count.
0x00AE36E0111CTownInfoMgr__destroy_list_0x38_nodesDestroys a linked list of 0x38-byte nodes. Each node contains 1 STL string that is destructed before freeing the node. Zeroes the list count.
0x00AE3750111CTownInfoMgr__destroy_list_0x28_nodesDestroys a linked list of 0x28-byte nodes. Each node contains 1 STL string that is destructed before freeing the node. Zeroes the list count.
0x00AE37C0140CTownInfoMgr__destroy_list_0x54_nodesDestroys a linked list of 0x54-byte nodes. Each node contains 3 STL strings that are destructed before freeing the 0x54-byte node memory. Zeroes the list count.
0x00AE3850111CTownInfoMgr__destroy_list_0x34_nodesDestroys a linked list of 0x34-byte nodes. Each node contains 1 STL string that is destructed before freeing the node. Zeroes the list count.
0x00AE38C0626CTownInfoMgr__ctorCTownInfoMgr constructor. Initializes 5 STL strings (at offsets 0, 6, 0xc, 0x12, 0x1d), 8 linked list sentinels of various node sizes (0x38, 0x80, 0x28, 0x54, 0x34, 0x2c, 0x20, 0x44), and a vector. Calls FUN_00ae4740 to load initial data.
0x00AE3B4067CTownInfoMgr__free_0x54_memberFrees a 0x54-byte member buffer if non-null. Simple deallocation helper for CTownInfoMgr cleanup.
0x00AE3B90145CTownInfoMgr__destroy_0x80_memberDestroys a 0x80-byte member node containing 3 STL strings. Destructs each string, then frees the 0x80-byte buffer. Part of CTownInfoMgr cleanup.
0x00AE3C30142CTownInfoMgr__destroy_0x54_memberDestroys a 0x54-byte member node containing 3 STL strings. Destructs each string, then frees the 0x54-byte buffer. Part of CTownInfoMgr cleanup.
0x00AE3CC073CTownInfoMgr__destroy_0x28_list_and_sentinelDestroys the 0x28-byte linked list including all nodes and the sentinel node itself. Calls destroy_list_0x28_nodes then frees the sentinel.
0x00AE3D1073CTownInfoMgr__destroy_0x54_list_and_sentinelDestroys the 0x54-byte linked list including all nodes and the sentinel node itself. Calls destroy_list_0x54_nodes then frees the sentinel.
0x00AE3D6073CTownInfoMgr__destroy_0x34_list_and_sentinelDestroys the 0x34-byte linked list including all nodes and the sentinel node itself. Calls destroy_list_0x34_nodes then frees the sentinel.
0x00AE3DB0388CTownInfoMgr__dtorCTownInfoMgr destructor. Destroys Lua state, then destroys all 8 linked lists (0x44, 0x20, 0x2c, 0x34, 0x54, 0x28, 0x80, 0x38 node sizes), frees their sentinels, and destructs 5 STL strings.
0x00AE3F4081CTownInfoMgr__add_unique_to_id_vectorAdds an ID to the vector at offset +0x114 if not already present. Linear search for duplicates. Uses STL vector realloc if at capacity.
0x00AE3FA0272CTownInfoMgr__add_npc_to_listAdds an NPC to the 0x80-byte linked list at offset +0xDC. Copies NPC data from param_2, increments count at +0xE0. Notifies the game via virtual call if a game object exists. Throws list_too_long if at max capacity (0x1FFFFFF).
0x00AE40C0249CTownInfoMgr__add_warp_to_listAdds a warp portal to the 0x54-byte linked list at offset +0xEC. Copies warp data including 3 STL strings from param_2. Increments count at +0xF0. Calls FUN_00a96730 to notify. Throws list_too_long at max capacity.
0x00AE41C0107CTownInfoMgr__update_npc_fieldUpdates a field on an NPC node in the 0x80-byte list. Searches by matching fields at offsets +2 and +3 (ID pair). Sets field at +0xE and updates string data via map find/insert.
0x00AE423013CTownInfoMgr__clear_id_vectorClears the ID vector by resetting the end pointer to the begin pointer at offset +0x114/+0x118. Does not free memory.
0x00AE424040CTownInfoMgr__clear_npc_listClears the NPC linked list at offset +0xDC. Destroys all 0x80-byte nodes, resets sentinel to point to itself, zeroes the count at +0xE0.
0x00AE427077CTownInfoMgr__remove_from_id_vectorRemoves an ID from the vector at offset +0x114. Linear search, then memcpy to shift remaining elements down. Decrements end pointer by 4.
0x00AE42C0183CTownInfoMgr__remove_warp_from_listRemoves a warp portal from the 0x28-byte linked list at offset +0xE4. Searches by matching fields at offsets +2 and +3. Unlinks node from doubly-linked list, destroys string, frees 0x28 bytes. Decrements count at +0xE8. Calls FUN_00a96730 to notify.
0x00AE438095CTownInfoMgr__find_npc_id_by_nameFinds an NPC ID by name string. Iterates the 0x80-byte NPC linked list at offset +0xDC, comparing the string at offset +4 in each node. Returns the ID at offset +2 if found, or -1 (0xFFFFFFFF) if not.
0x00AE43E019CTownInfoMgr__get_id_at_indexReturns the ID at the given index in the ID vector at offset +0x114. Direct array index (param_2 * 4).
0x00AE4400656CTownInfoMgr__get_npc_data_by_idGets NPC data by ID from the 0x80-byte linked list. Iterates the list at +0xDC, matches by field at offset +2. Copies the full NPC record (0x78 bytes of data) into param_2. Returns zeroed record if not found.
0x00AE469047CTownInfoMgr__count_warps_for_idCounts warp portals for a given ID in the 0x28-byte linked list at offset +0xE4. Iterates all nodes, incrementing count when field at offset +3 matches param_2.
0x00AE46C016CTownInfoMgr__get_id_vector_countReturns the number of elements in the ID vector at offset +0x114. Computed as (end - begin) >> 2.
0x00AE46D099CTownInfoMgr__save_and_reset_stateSaves 5 state fields from offsets +0xA8 through +0xB8, calls reset_all_data, then restores the saved fields. Used to reload data while preserving current UI state.
0x00AE4740685CTownInfoMgr__reset_all_dataResets all CTownInfoMgr data to initial state. Zeroes numerous fields (coordinates, flags, state at offsets +0x60-0xD0), clears 5 strings, destroys and resets all 8 linked lists and 3 tree structures, clears ID vector. Calls virtual method to notify game of reset.
0x00AE49F047CTownInfoMgr__has_warp_with_zero_subtypeChecks if there is a warp portal in the 0x28-byte list at +0xE4 with field +2 matching param_2 and field +3 == 0 (subtype zero). Returns 1 if found, 0 otherwise.
0x00AE4A20477CTownInfoMgr__compute_npc_weightsComputes weight percentages for all NPCs. Sums field +0x1D across all nodes in the NPC list, then calculates each NPC's percentage (field +0x1D * 100.0 / total). Inserts results into the tree at +0xFC keyed by NPC field +0xE, copying string data.
0x00AE4C00157CTownInfoMgr__remove_npc_by_gidRemoves an NPC by GID (field +3) from the 0x80-byte linked list. Calls virtual method on game actor to notify (param 0), then unlinks and destroys the node. Calls FUN_00a96730 to notify UI. Returns 1 if removed, 0 if not found.
0x00AE4CA0139CTownInfoMgr__remove_npc_by_nameRemoves an NPC by name string from the 0x80-byte linked list. Compares string at offset +4 in each node. Calls unlink_and_destroy_npc_node and FUN_00a96730 to notify. Returns 1 if removed, 0 if not found.
0x00AE4D30542CTownInfoMgr__set_map_name_for_idSets the map name string for NPCs and warps matching a given map ID. If param_2 matches current map at +0xD0, updates the main string. Also updates matching NPC nodes in the 0x80 list and warp nodes in the 0x54 list if their name strings match. Calls FUN_00a91400 to refresh UI.
0x00AE4F50117CTownInfoMgr__update_npc_position_and_visibilityUpdates NPC position (x,y,dir as shorts at offsets +0xD, +0xA, +0xB) and visibility flag (offset +0x1E) for the NPC matching param_4 GID. Then recounts visible NPCs and stores at +0x68. Calls FUN_00a96730 to notify UI.
0x00AE4FD092CTownInfoMgr__set_npc_visibility_by_idSets the visibility flag (offset +0x1E) for an NPC by its ID (field +2). Then recounts visible NPCs and stores at +0x68. Calls FUN_00a96730 to notify UI.
0x00AE503033CTownInfoMgr__set_current_map_idSets the current map ID at offset +0xD0. Also sets flag at +0xB4 to 1 if param_2 equals the global DAT_01733c40, otherwise 0.
0x00AE506042CTownInfoMgr__recount_visible_npcsRecounts visible NPCs by iterating the 0x80-byte NPC list and counting nodes where field +0x1E is non-zero. Stores result at offset +0x68.
0x00AE5090173CTownInfoMgr__update_service_nodeUpdates a service node in the 0x38-byte linked list at +0xD4. Finds node by matching field +3 with param_3, then updates fields: +2 (type), +3 (id), string at +4, and scalars at +10/+11/+12/+13.
0x00AE5140152CTownInfoMgr__unlink_and_destroy_npc_nodeUnlinks an NPC node from the doubly-linked list and destroys it. Saves the next pointer, updates prev/next links, decrements the list count at +4, destructs 3 STL strings, frees the 0x80-byte node, and returns the saved next pointer via param_2.
0x00AE54B0248CTownInfoMgr__copy_tips_vectorCopies the tips vector from the manager into param_2. Calls load_guild_tips if data not yet loaded (flag at offset 0). Allocates new vector and copy-constructs each 0xc-byte element.
0x00AE55B01201CTownInfoMgr__load_guild_tipsLoads guild tip strings from GuildTip.txt. Tries filesystem (GRF) first via CFileStream, falls back to fopen. Parses lines split by '#' (section separator) and '\\n' (line separator) into a vector of vector of strings. Sets loaded flag at offset 0.
0x00AE5E3026CTownInfoMgr__get_lowercase_valueCalls str_to_lowercase_inplace on param_2, stores the result in param_1, and returns param_1. Used to get a lowercase-converted value from the manager.
0x00AE5F30275CTownInfoMgr__autocomplete_searchAutocomplete search entry point. If keywords don't fully match (search_keywords_match returns false), performs full string search via perform_string_search and updates the search text. Always returns 1.
0x00AE60503158CTownInfoMgr__perform_string_searchPerforms navigation/minimap string search. Lowercases input, looks for substrings matching global patterns (DAT_0134ac4c/64). Converts between multibyte and wide-char to do substring matching. Updates the search input string with corrected/autocompleted text. Large function handling Korean/multibyte character search with CharNextExA.
0x00AE6CB0101CTownInfoMgr__add_trimmed_keywordTrims whitespace from param_2, lowercases it via str_to_lowercase_inplace, then pushes the pointer into the vector at offset +4. Used to add search keywords.
0x00AE6D2020CTownInfoMgr__is_search_incompleteReturns true if search_keywords_match returns false (i.e., the current search is incomplete/not matching). Negation wrapper.
0x00AE6D40485CTownInfoMgr__search_keywords_matchChecks if all search keywords match the input string. Lowercases the input, then for each keyword in the vector, checks via strncmp if the keyword matches at the current position. Advances through the string using CharNextExA for multibyte support. Returns 1 if all keywords matched, 0 if not.
0x00AE6F30303CTownInfoMgr__load_keywords_from_fileLoads search keywords from a text file. Uses CSVParser__load_text_file_lines to read file, trims whitespace from each line, lowercases it, and adds non-empty lines as keyword pointers to the vector at offset +4.
0x00AE75C0157CTownInfoMgr__copy_npc_to_outputCopies NPC info from internal format to output struct. Copies string via STL_lib_func_004fa8f0, copies scalar fields including type (+7), ID (+6/+8), and sets enabled flag at +0x17.
0x00AE7660173CTownInfoMgr__copy_warp_to_outputCopies warp portal info from internal format to output struct. Copies scalars, string via STL, converts float to short for coordinates. Sets enabled flag at +0x17.
0x00AE771072CTownInfoMgr__get_tip_at_indexReturns pointer to tip entry at given index. Loads tips from file if not yet loaded (flag at offset 0). Bounds-checks against vector size, returns first entry if out of range.
0x00AE77601197CTownInfoMgr__load_tip_of_the_dayLoads tip-of-the-day strings from tipOfTheday.txt (or localized variants). Tries GRF filesystem via CFileStream first, falls back to fopen. Parses lines split by '#' (section separator) and newlines into a vector of vector of strings (0xc-byte elements of 0x18-byte string vectors).
0x00B88AB01573CMapNode__execute_search_queryExecutes a map search query by parsing the input string, splitting it by spaces into tokens, then dispatching to the appropriate search method based on the parsed search type. Type 2 calls CMapNode__collect_search_results, type 3 parses two numeric range parameters and calls CMapNode__collect_entries_in_range, type 4 calls CMapNode__search_entries_by_exact_name, default calls CMapNode__search_all_types. Results are accumulated into the output vector. Returns 1 if results found, 0 otherwise.
0x00B891C01310CMapNode__parse_search_commandParses a search command string to determine the search type and extract parameters. Uses CMessageStringTable entries 0x912-0x915 as prefix patterns. Returns: 1 if no match (simple search), 2 if matches msg 0x915 (keyword search), 3 if matches msg 0x912+0x913 with range delimiters (range search with min/max extracted via atoi), 4 if matches literal "map/" prefix (name search). For type 3, clears existing results and pushes the two range bound strings.
0x00B896E0604CMapNode__search_first_matching_entrySearches through a list of entries by exact name match. For each entry in the input list, calls CMapNode__search_entries_by_exact_name. Returns the value from the first matching result's field offset 4 (second dword), or 0 if no match found. Cleans up allocated 40-byte result entries before returning.
0x00B8994037CMapNode__set_3_paramsSets 3 parameters at +0x18/+0x1c/+0x20. Returns 0 if param_2 is 0, otherwise stores all 3 values and returns 1.
0x00B899901645CMapNode__find_shortest_pathFinds the shortest path through map node connections using a breadth-first/Dijkstra-like algorithm. Clears existing path data, then iteratively explores connections checking type codes (0xCA=one-way-A, 0xCB=one-way-B, 0xCC/0xCD=bidirectional with filtering). Tracks cumulative cost in 12-byte entries (parent_idx, node_ptr, cost). Updates minimum cost path when destination node (field 6) is reached. Max 100 iterations. Outputs path as reversed node pointer list. Resets field 88 and cost (50000) on completion.
0x00B8A0001501CMapNode__find_shortest_path_from_currentVariant of find_shortest_path that starts from the current node (pre-marks it via vtable call at offset 0x20, sets flag 40 to 1). Same Dijkstra-like graph traversal with connection type filtering (0xCA-0xCD). Explores neighbor nodes, accumulates costs, and tracks minimum-cost path to destination. Differs from find_shortest_path by also checking unvisited neighbors (field_88==0) during expansion. Max 100 iterations. Returns path cost or 0 if no path found.
0x00B8C5E0304CMapNode__ctorConstructor for a map node object. Initializes two embedded STL strings (at offsets 0x08 and 0x20), zeroes several fields (0x44-0x64), assigns type at offset 0, param_7 at offset 4, stores string params, and numeric fields at offsets 0x38 and 0x3C.
0x00B8C710342CMapEntry__ctorConstructor for a CMapEntry with vtable PTR_FUN_01198340. Initializes two embedded STL strings (offsets 0x10 and 0x28), zeroes many fields (0x44-0x7C), sets type/id fields, assigns optional string params, and position data at offsets 0x44-0x48.
0x00B8C870273CMapEntry__base_initBase initialization for CMapEntry. Sets vtable to PTR_FUN_01198340, initializes two embedded STL strings (offsets 0x10/0x28), zeroes all numeric fields (0x44-0x7C), sets field 0x04=-1, field 0x08=0x65, field 0x0C=0. Used as base init by multiple constructors.
0x00B8CC10336CMapNode__resetResets a CMapNode to default state. Clears strings, resets ID to 0x1389, zeroes numeric fields. Iterates three vectors of object pointers (offsets 0x44/0x50/0x5C) calling each object's destructor via vtable[0], then resets those vectors. Finally clears helper vectors and destroys embedded strings.
0x00B8CD60205CMapEntry__resetResets a CMapEntry to default state. Restores vtable, sets field 0x04=-1, field 0x08=0x65, field 0x0C=-1. Clears embedded strings, zeroes position fields. Trims vector at offset 0x4C, calls helper cleanup, then destroys strings.
0x00B8CE40180CMapEntry__copy_assignCopy assignment for CMapEntry. Copies numeric fields at 0x08/0x0C, two embedded strings (0x10/0x28) via STL assign, position fields (0x44/0x48), flag fields (0x7C/0x80/0x84), and two 8-byte-pair vectors (0x4C/0x8C).
0x00B8CF7018CMapEntry__compare_idCompares the entry's ID field (offset 0x04) against the value pointed to by param_2. Returns true if they match.
0x00B8CF9033CMapEntry__compare_positionCompares the entry's position (offsets 0x44 and 0x48) against a 2D coordinate pair pointed to by param_2. Returns true if both X and Y match.
0x00B8CFC0257CMapEntry__compare_fullFull equality comparison of two CMapEntry objects. Checks position (0x44/0x48), flags (0x80/0x84), then compares embedded strings at offsets via object pointers at 0x40 and 0x7C using byte-by-byte strcmp. Returns true only if all fields and strings match.
0x00B8D0D0283CMapEntry__compare_nameCompares the entry's embedded string at offset 0x10 against a C string param_2. Creates a temporary STL string from param_2, compares with std::_Traits_equal. Returns true if names match, or returns stack address if param_2 is null.
0x00B8D1F049CMapEntry__compare_string_fieldCompares the entry's string at offset 0x08 against an STL string from param_2 using std::_Traits_equal. Both strings handle SSO (small string optimization) with 0xF threshold.
0x00B8D23052CMapEntry__compare_string_with_entryCompares the embedded strings at offset 0x08 between two CMapEntry objects using std::_Traits_equal. Both handle SSO with 0xF capacity threshold.
0x00B8D27070CMapEntry__compare_string_cstrCompares the entry's embedded string at offset 0x08 against a raw C string (byte*) using byte-by-byte comparison. Returns true if strings match.
0x00B8D4B044CMapEntry__contains_substr_stlstrChecks if the entry's name string at offset 0x10 contains the substring from an STL string param_2. Uses strstr. Returns true if substring found.
0x00B8D4E035CMapEntry__contains_substr_cstrChecks if the entry's name string at offset 0x10 contains the C string param_2 as a substring. Uses strstr. Returns true if substring found.
0x00B8D51044CMapEntry__contains_substr_field8_stlstrChecks if the entry's string at offset 0x08 contains the substring from an STL string param_2. Uses strstr. Returns true if substring found.
0x00B8D54035CMapEntry__contains_substr_field8_cstrChecks if the entry's string at offset 0x08 contains the C string param_2 as a substring. Uses strstr. Returns true if substring found.
0x00B8D5D081CMapEntry__sort_compare_name_lessSort comparator: returns true if this entry's name (offset 0x10) is lexicographically less than param_2's name (offset 0x10). Used for sorting CMapEntry arrays by name.
0x00B8D63081CMapEntry__sort_compare_field8_lessSort comparator: returns true if this entry's string at offset 0x08 is lexicographically less than param_2's string at offset 0x08.
0x00B8D6F085CMapEntry__strcmp_name_forwardString comparison: compares this entry's name (offset 0x10) vs param_2's name (offset 0x10). Returns positive if this > param_2, negative if less. Byte-by-byte with SSO handling.
0x00B8D75085CMapEntry__strcmp_name_reverseString comparison: compares param_2's name (offset 0x10) vs this entry's name (offset 0x10) - reverse order. Returns positive if param_2 > this. Used for reverse sorting.
0x00B8D7B081CMapEntry__sort_compare_field8_reverseSort comparator: compares param_2's string at offset 0x08 vs this entry's string (reverse order). Returns true if param_2 < this. Used for reverse sorting by field 0x08.
0x00B8D81085CMapEntry__strcmp_name_reverse_gtString comparison with reversed operand order for entry name at offset 0x10. Compares param_2 vs this, returns >0 result. Variant comparator for sorting.
0x00B8D97035CMapEntry__scalar_deleting_dtorScalar deleting destructor for CMapEntry. Calls CMapEntry__reset to clean up, then frees the 0x7C-byte object if bit 0 of param_2 is set.
0x00B8D9A058CMapNode__add_child_to_vector48Adds a child pointer to the vector at offset 0x48. Returns 0 if param_2 is null, 1 on success. Uses push_back if capacity available, otherwise inserts with reallocation.
0x00B8D9E058CMapNode__add_child_to_vector60Adds a child pointer to the vector at offset 0x60. Returns 0 if param_2 is null, 1 on success. Similar pattern to add_child_to_vector48.
0x00B8DA2058CMapNode__add_child_to_vector54Adds a child pointer to the vector at offset 0x54. Returns 0 if param_2 is null, 1 on success. Similar pattern to other add_child methods.
0x00B8DA6062CMapEntry__push_back_pair_vector90Pushes an 8-byte pair element onto the vector at offset 0x90. If capacity available, copies directly; otherwise inserts with reallocation.
0x00B8DAA053CMapEntry__push_back_pair_vector50Pushes an 8-byte pair element onto the vector at offset 0x50. If capacity available, copies directly; otherwise inserts with reallocation.
0x00B8DB2018CMapEntry__get_field_8cGetter: copies the value at offset 0x8C into the output pointer param_2.
0x00B8DB4015CMapEntry__get_field_4cGetter: copies the value at offset 0x4C into the output pointer param_2.
0x00B8DB6073CMapEntry__find_by_flags_in_vector8cSearches the pair vector at offset 0x8C for an entry whose fields at 0x80 and 0x84 match param_2 and param_3. Returns the found entry pointer or 0.
0x00B8DBB074CMapEntry__find_by_vtable_position_4cSearches the pair vector at offset 0x4C for an object whose vtable method at offset 0x1C returns a position matching (param_2, param_3). Returns the found object pointer or 0.
0x00B8DC5062CMapEntry__find_by_flags_in_vector4cSearches the pair vector at offset 0x4C for an entry whose fields at 0x80 and 0x84 match param_2 and param_3. Returns the found entry pointer or 0.
0x00B8DCD013CMapEntry__clear_vector90Clears the pair vector at offset 0x8C by resetting the end pointer (0x90) to the begin pointer (0x8C). Does not free memory.
0x00B8DD00137CMapNode__destroy_all_childrenDestroys all children in three child vectors (offsets 0x44, 0x50, 0x5C). For each non-null child pointer, calls its destructor via vtable[0] with flag=1, then nulls the pointer. Resets each vector's end to begin.
0x00B8DD9074CMapEntry__erase_pair_from_vector90Erases an 8-byte pair element from the vector at offset 0x8C by shifting subsequent elements forward. Decrements end pointer by 8. param_2 points to the element address to erase.
0x00B8DDE059CMapEntry__erase_pair_from_vector50Erases an 8-byte pair element from the vector at offset 0x4C by shifting subsequent elements forward. Decrements end pointer (0x50) by 8.
0x00B8DE6018CMapEntry__get_field_90Getter: copies the value at offset 0x90 (end pointer of pair vector at 0x8C) into the output pointer param_2.
0x00B8DE8015CMapEntry__get_field_50Getter: copies the value at offset 0x50 (end pointer of pair vector at 0x4C) into the output pointer param_2.
0x00B8DEC073CMapEntry__get_pair_at_index_8cGets an 8-byte pair from the vector at offset 0x8C by index. Bounds-checks param_3 against vector size. Copies pair to param_2, or zeroes param_2 if out of bounds.
0x00B8DF4081CMapNode__get_child_by_id_or_indexGets a child object from vector at offset 0x5C. If param_3 is set, searches by ID (field 0x04 matching param_2). If param_3 is 0, treats param_2 as an index into the vector. Returns 0 if not found.
0x00B8DFA044CMapNode__find_child_by_pointerSearches the child vector at offset 0x5C for a pointer matching param_2. Returns the pointer if found, 0 otherwise.
0x00B8DFD056CMapNode__find_child_by_positionSearches the child vector at offset 0x5C for an object whose position (0x44, 0x48) matches (param_2, param_3). Returns the found object pointer or 0.
0x00B8E010817CMapNode__find_duplicate_childSearches child vector (0x5C) for a duplicate of a CMapObject being added. Constructs a temporary CMapObject from parameters, then iterates children comparing position, flags, and name strings. Returns the duplicate's address if found, 0 if not found. Cleans up temporary object regardless.
0x00B8E35015CMapNode__get_children_beginGetter: copies the begin pointer of child vector (offset 0x5C) into param_2.
0x00B8E36015CMapNode__get_children_endGetter: copies the end pointer of child vector (offset 0x60) into param_2.
0x00B8E38081CMapNode__get_entry_by_id_or_indexGets an entry from the vector at offset 0x50. If param_3 set, searches by ID (field 0x04 matching param_2). Otherwise uses param_2 as direct index. Returns 0 if not found.
0x00B8E3E044CMapNode__find_entry_by_pointerSearches the entry vector at offset 0x50 for a pointer matching param_2. Returns the pointer if found, 0 otherwise.
0x00B8E41022CMapNode__find_entry_by_nameSearches the entry vector at offset 0x50 for an entry whose string name matches param_2. Delegates to find_element_by_string_name.
0x00B8E43015CMapNode__get_entries_beginGetter: copies the begin pointer of entries vector (offset 0x50) into param_2.
0x00B8E44015CMapNode__get_entries_endGetter: copies the end pointer of entries vector (offset 0x54) into param_2.
0x00B8E46056CMapNode__find_entry_by_vtable_typeSearches entries vector (0x50) for an entry whose vtable method at offset 0x0C returns a value matching param_2. Returns the found entry pointer or 0.
0x00B8E4A0332CMapNode__find_entry_by_vtable_stringSearches entries vector (0x50) for an entry whose vtable method at offset 0x18 returns a string matching param_2. Creates temp STL strings for comparison using _Traits_equal. Returns the found entry or 0.
0x00B8E62012CMapNode__get_description_ptrReturns pointer to the string data at offset 0x20. Handles SSO: if capacity > 0xF, returns the heap pointer; otherwise returns the inline buffer address.
0x00B8E64081CMapNode__get_object_by_id_or_indexGets an object from vector at offset 0x44. If param_3 set, searches by ID (field 0x04). Otherwise uses param_2 as direct index. Returns 0 if not found.
0x00B8E6A044CMapNode__find_object_by_pointerSearches the object vector at offset 0x44 for a pointer matching param_2. Returns the pointer if found, 0 otherwise.
0x00B8E6D022CMapNode__find_object_by_nameSearches the object vector at offset 0x44 for an object whose string name matches param_2. Delegates to find_element_by_string_name.
0x00B8E6F056CMapNode__find_object_by_positionSearches the object vector at offset 0x44 for an object whose position (0x44, 0x48) matches (param_2, param_3). Returns the object pointer or 0.
0x00B8E73015CMapNode__get_objects_beginGetter: copies the begin pointer of objects vector (offset 0x44) into param_2.
0x00B8E74015CMapNode__get_objects_endGetter: copies the end pointer of objects vector (offset 0x48) into param_2.
0x00B8E77088CMapEntry__copy_construct_pair_vectorCopy-constructs a pair vector from the entry's pair vector at offset 0x4C. Uses STL_vector_copy_construct_8byte. Returns param_2.
0x00B8E7D021CMapEntry__get_positionGets the entry's 2D position. Copies X (offset 0x44) and Y (offset 0x48) into the output pair at param_2.
0x00B8E81012CMapEntry__get_name_ptrReturns pointer to the string data at offset 0x08. Handles SSO: if capacity > 0xF, returns the heap pointer; otherwise returns the inline buffer address.
0x00B8E87015CMapEntry__get_secondary_name_ptrReturns pointer to a secondary name string. Accesses object pointer at offset 0x7C, then gets string data at offset 0x08 of that object. Handles SSO.
0x00B8E88027CMapEntry__get_flags_80_84Gets the entry's flag pair. Copies values from offsets 0x80 and 0x84 into the output pair at param_2.
0x00B8E92070CMapNode__search_all_typesDispatches search across map node child types. Always calls search for entries (type 1). If param_1==2 or 0, also searches objects (type 2). If param_1==3 or 0, also searches children (type 3).
0x00B8E970758CMapNode__collect_search_resultsCollects search results from a CMapNode into a result vector (param_3). For type 1 (entries matching name filter), adds self if name matches. For type 2, iterates objects vector (0x44) getting position and name. For type 3, iterates entries vector (0x50). Creates 40-byte result entries (type, ptr, x, y, name string).
0x00B8EC70476CMapNode__collect_entries_in_rangeCollects entries from vector 0x50 whose position (via vtable[0x1C]) falls within range [param_2..param_3]. Creates 40-byte result entries with type, ptr, position, and name string. Appends to result vector at param_4.
0x00B8EE501697CMapNode__search_entries_with_filterSearches map node entries with a wide-string keyword filter. Converts search terms to Unicode, builds wstring search list. For the node itself, converts description to wstring, uses StrStrIW for case-insensitive substring matching. Collects matching entries from vector 0x50 into result vector. Uses MultiByteToWideChar for codepage conversion.
0x00B8F5601755CMapNode__search_objects_with_filterSearches map node objects (vector 0x50) with a wide-string keyword filter. Converts search terms and object names to Unicode, uses StrStrIW for case-insensitive matching. Collects matching objects with their positions into 40-byte result entries. Uses MultiByteToWideChar for codepage conversion.
0x00B8FC40504CMapNode__search_entries_by_exact_nameSearches entries vector (0x50) for entries whose vtable[0x18] string exactly matches param_2. Byte-by-byte string comparison. Collects matching entries with position and name into 40-byte result entries.
0x00B8FE401456CMapNode__search_children_with_filterSearches map node children (objects vector 0x44) with a wide-string keyword filter. Converts search terms and child names to Unicode, uses StrStrIW for case-insensitive matching. Collects matching children with their positions into 40-byte result entries.
0x00B903F013CMapEntry__set_idSetter: sets the entry's ID field at offset 0x04.
0x00B9040016CMapEntry__set_field_88Setter: sets the value at offset 0x88 in the entry.
0x00B9041022CMapNode__set_flag_40Sets field 0x40 of a CMapNode, but only if the node's ID (offset 0x04) equals 0x1389. This acts as a guard to only modify the root/default node.
0x00B9043035CMapEntry__set_positionSets the entry's 2D position. Validates both X and Y >= 0, then stores at offsets 0x44 and 0x48. Returns 1 on success, 0 if invalid.
0x00B9046013CMapEntry__set_field_0cSetter: sets the value at offset 0x0C in the entry.
0x00B9047032CMapEntry__set_typeSets the entry's type field at offset 0x08. Validates that param_2 is in range [200..206]; if out of range, defaults to 200.
0x00B904A027CMapEntry__try_set_idAttempts to set the entry's ID at offset 0x04. Only succeeds if the current ID is -1 (uninitialized). Returns 1 on success, 0 if already assigned.
0x00B904E010CMapNode__get_children_countReturns the count of children in this CMapNode's child vector (offset 0x5C-0x60). Computes (end - begin) / 4 for the pointer array.
0x00B9054039CMapNode__sort_children_vectorSorts the child vector at offset 0x5C using introsort (std::sort on uint*). Sorts child pointers as unsigned integers.
0x00B9057039CMapNode__sort_entries_vectorSorts the entries vector at offset 0x50 using introsort.
0x00B905A039CMapNode__sort_objects_vectorSorts the objects vector at offset 0x44 using introsort.
0x00BC0AE0770update_weather_snow_particlesUpdates snow weather particle system. Retrieves camera position and updates snow fall offsets. Iterates through 4 particle slots, incrementing frame counter for active particles. Every 3 frames, rotates position history (shifts positions through 3 buffer slots). Applies sinusoidal wind drift using lookup tables at DAT_01388af0/DAT_01387fa8 (sine/cosine). Manages particle lifecycle: spawn phase (gravity fall), drift phase (wind + gravity with random jitter), and reset (reinitialize at camera position with random angle and speed). Particles reset after 2000 frames.
0x00BC0DF0642update_weather_fog_particlesUpdates fog/cloud weather particle system. Copies camera position, iterates 3 particle slots. For mode 3 (dissipating), decreases density; otherwise increases density. Alpha fades in during first 10 frames, fades out when lifetime exceeded. Uses cosine lookup table for visual modulation. Different fade rates based on weather subtype (3=fast, 4=medium, 5=slow). Resets particle after alpha reaches 0 (either deactivate or restart).
0x00BC10801007update_weather_shooting_starUpdates shooting star weather effect. Copies camera position. Manages single particle with trail history (4 levels of trail state shifting). Trail positions shift every frame with decaying alpha. Movement governed by state machine: state 0 = initial flight, state 4 = returning arc. Uses camera-relative offsets for trajectory. Resets heading angle and calls virtual function on completion.
0x00BC14F0725update_weather_cloud_layerUpdates cloud layer weather effect with two groups of 2 particles each. First group handles standard clouds, second group handles rotating clouds with an angle offset. Each particle fades in/out based on camera movement detection (resets lifetime if camera moves). Uses cosine table for opacity modulation based on distance/time. Frame counter capped at 29000. Second group additionally updates rotation angle based on speed.
0x00BC1B501058update_weather_fireworksUpdates fireworks weather particle effect. Single particle slot with complex state machine. Finds target position from map node (CBGMManager lookup). Phase 1: launch toward target with angle offset (random L/R deviation). Phase 2 (frame 5+): homing toward target, adjusting angle. Phase 3 (state 10): fade out all 4 trail slots' alpha. Phase 4 (state 20): return to origin, homing back. Trail history shifts every 3 frames with alpha decay. Particle moves using sine/cosine of heading angle.
0x00BC1F80877update_weather_fireworks_altUpdates alternate fireworks weather effect (similar to update_weather_fireworks but with different launch angle randomization). Single particle with target from CBGMManager. Phase 1: launch with random angle offset (25+random(21) degrees). Phase 2: track toward target with angle correction. Phase 3 (state 10): fade all trail slots. Trail history shifts every 3 frames with alpha scaling. Particle position updated by speed * sin/cos of heading.
0x00BC27B0685update_weather_rain_dropUpdates rain drop weather particle. Manages 2 wind angle slots that oscillate between target angles at variable speed. Applies wind drift using cosine table to X/Z positions. When Y exceeds ground level, respawns particle at random position near camera (300 unit spread in X and Z). Copies final position to display and trail positions. Calls CWeather__shift_trail_history and CEffectParticle__advance_animation_frame. Different wind strength based on state (0x450 flag).
0x00BC2A60754update_weather_leaf_fallUpdates falling leaf weather particle. Copies camera position and heading. Single particle with trail history (shifts at every 3rd frame, 4 levels). Heading decreases 15 degrees per frame. Alpha fades in quickly during first 6 frames, then fades out after frame 14. Movement uses speed * sin/cos of heading. First frame computes initial angle toward camera-relative target position.
0x00BC2D601256update_weather_boomerang_leafUpdates boomerang-style leaf weather particle (leaves that fly out, arc, and return). Trail history shifts conditionally based on flag (every 1 or 3 frames). Heading angle rotates -15 degrees/frame. Phase 0: fly outward, when distance threshold reached transitions to phase 1 (with random angle deviation if type 0x452). Phase 1: homing back toward camera. Phase 2: fade out. Y position rises then falls. Movement via speed * sin/cos of heading.
0x00BC3720819update_weather_lightning_flashUpdates lightning flash weather effect. Manages 4 particle slots with 6 wind angle pairs each that oscillate. RGB color channels grow for first 10 frames, then fade after frame 30. Three position components move via cosine-table drift: upward (Y decreasing), horizontal wind, and optional diagonal movement. Position and brightness modulated by multiple independent angle oscillators.
0x00BC3C70812update_weather_screen_tintUpdates weather screen tint/overlay effect (used for night, fog, sandstorm, etc.). Manages gravity-based Y position descent. Controls screen tint intensity (field 0x324) with different ramp-up rates based on weather type (0=basic, 1=gentle, 2/3/4=intensity tiers, 10/11=special). After frame 30, increments frame-skip counter at different rates per type. After reaching threshold frame counts (30-100 depending on type), begins fading tint back to zero. Calls CWeather__shift_trail_history.
0x00BC3FA0920update_weather_spell_trailUpdates spell/magic trail weather particle. Trail history with 4 levels. Alpha fades in if type 0x452 is set. Heading rotates -15 degrees per frame. On first frame, computes angle toward cached position. Movement via speed * sin/cos of heading. Every 4th frame spawns a skill effect (0x1a0) via CEntity__create_skill_effect.
0x00BC4410467update_weather_shooting_particleUpdates shooting/projectile weather particle. Manages 4 particle slots. Each particle: heading rotates -5 degrees per frame, first frame computes angle toward cached position with random +-30 degree deviation. Alpha fades in during first 10 frames (+15/frame), then fades out (-3/frame) until deactivated. Y position changes via gravity accumulator. Movement via speed * sin/cos of heading.
0x00BC4730948update_weather_spiral_particleUpdates spiral weather particle effect. Trail history shifts every other frame. Heading rotates at different speeds (45 degrees for type 0xf, 10 degrees otherwise). On first frame, computes heading toward cached position. Movement based on speed ratio (frame/lifetime) with a cosine-based oscillation for Y offset. Different Y modulation scales per type (0x452). Alpha fades out after lifetime exceeded.
0x00BC4BF0564update_weather_rotating_ringUpdates rotating ring weather particle. 4 particle slots with 2 wind angle pairs each. Alpha fades in for first 50 frames, then fades out after lifetime. Wind angle oscillation for X/Z drift via cosine table. Heading angle increments by 1 per frame (wraps at 360). Rotation angle accumulates. Movement includes cosine-table-based drift for positional wobble.
0x00BC4E701483update_weather_floating_bubblesUpdates floating bubble weather particles. 4 particle slots with 8 wind angle pairs and 4 independent position groups (main, secondary, tertiary, quaternary). Each group has Y that rises then respawns at random position when threshold reached. Position groups drift via cosine table wind angles. Random respawn spread differs based on flag (type 0 = +-22, type 1 = +-12). Optionally swaps X/Z on respawn when flag 0x29 is set.
0x00BC55802176update_weather_auroraUpdates aurora/northern lights weather effect. 4 particle slots with 8 wind angle oscillators each. Different behavior based on type (0x450): type 1 drifts only Y, others drift X/Y/Z. Alpha (0x45b) and RGB channels (0x45c-0x45e) ramp up independently capped at 120. Movement via cosine table with angle oscillators. Periodic flash events: when position nears center (abs < 30), randomly triggers a flash cycle that fades alpha down/up over ~120 frames. On alpha drop below threshold, resets position randomly.
0x00BC5E00729CWeather__update_tint_animationUpdates the weather tint animation state. Manages keyframe-based tint interpolation from arrays at fields 0x258/0x264/0x270. Two modes: mode 0 (simple) applies rate from field 0x328, mode 1 (keyframed) reads tint/limit values from arrays. Clamps tint between min (0x2d8) and max (0x2d4). Detects when animation frame range is exhausted and begins fade-out. Composes final ARGB color at field 0x1c0 from tint alpha + RGB channels (0x23c, 0x240, 0x244). Handles direction reversal when tint reaches bounds.
0x00BC60E0825CWeather__render_ground_overlayRenders weather ground overlay as textured quads. Generates a ring of quads around the player position using sine/cosine lookup tables indexed by angle step (field 0x288). Each quad spans from inner radius (field 0x318 subtracted from 0x348) to outer radius (0x348). Builds vertex data with position, UV coords, and tint color (0x1c0). Submits 2 triangulated quads per step via CRenderPipeline__submit_renderable_object. Texture index from field 0x144.
0x00BC6420421CWeather__render_single_quadRenders a single weather overlay quad. Computes 4 vertices from cross-product and normalized vectors using field 0x314 (angle). Scales by field 0x360 (radius). Sets up textured quad with position, UV coordinates (0.5 center, 0/1 edges), near-zero Z, and tint color (0x1c0). Submits to CRenderPipeline__submit_renderable_object.
0x00BC65D0972CWeather__render_dual_billboardRenders two weather billboard quads (front and back faces). Computes vertex positions using field 0x314 (camera angle) with vec3_normalize and vec3_cross_product. Two quads share center vertices: front quad uses radius 0x360, back quad uses mirrored radius. UV mapping uses animated frame index (field 0x3c) to select texture from array at 0x144. Applies rotation transform via sin/cos of angle to position vertices relative to player. Submits both quads to CRenderPipeline.
0x00BC69A01210CWeather__render_billboard_with_effectsRenders weather billboard with optional map effects. Builds two quads (front/back) using camera angle (field 0x314) normalized/cross-product vectors. Uses animated frame index and texture from 0x144 array. Supports additive blending mode (0x1c4/0x1c8). For type 'b' (0x62), also iterates effect map entries (DAT_014a6938) to render associated map node effects with CTimerBar rendering and flush pending meshes.
0x00BC6E601815CWeather__render_colored_ringRenders weather colored ring effect. Iterates 4 particle slots, generating ring segments using sine/cosine tables with 90-degree offsets per slot. Ring radius modulated by wind rotation angle. Selects different color tints based on weather type field (0x318): white, blue/red, green, purple etc. Submits colored quad strips via CWeather__submit_weather_quad and CWeather__submit_colored_quad_strip.
0x00BC75806258CWeather__render_particle_quadsRenders weather particle quads. 6.2K bytes. Calls rotate_quad_vertices_by_angles and CWeather__submit_weather_quad to draw weather effects (rain, snow, etc). No callers (likely virtual/callback).
0x00BC8E00965CWeather__render_spiral_trailRenders weather spiral trail effect with connected quad strips. Iterates 4 particle slots, generating up to 20 segments per slot at angle increments of heading/9. Each segment computes inner and outer positions using sine/cosine with offset angles per slot (90/270/180/450 degrees). Applies perpendicular displacement from wind angle. Submits colored quad strips connecting consecutive segments.
0x00BC91D0744CWeather__render_wave_trailRenders weather wave/ribbon trail effect. Iterates 4 particle slots with up to 20 segments. Generates curved segments at angle increments of heading/20. Each segment has vertical offset based on perpendicular wind angle. Y displacement varies by weather type: type A gets +2.0 offset, type B gets +1.0. Submits connected colored quad strips for flowing ribbon appearance.
0x00BC94C0786CWeather__render_fire_ring_trailRenders weather fire ring trail effect. Iterates 4 particle slots with up to 10 segments per slot. Generates ring segments at angle increments of heading/10. Applies perpendicular displacement from wind angle. Special handling for type 0x288: rotates displacement using rotation angle from field 0x554, adding sine/cosine modulated offsets. Submits colored quad strips for connected ring segments.
0x00BC97E02175CWeather__render_3d_ground_overlayRenders weather 3D ground overlay with world-to-screen projection. Iterates over particle layers (field 0x1f4 count), generating ring quads around the player. Applies full 4x3 transform matrix (fields 0x160-0x18c) to compute world positions from polar coordinates using inner/outer radii. Projects vertices via CRenderPipeline__project_world_to_screen_with_depth. Builds two quads (front/back) per segment with UV tiling and texture animation. Clips via stub_00569560.
0x00BCA0602649CWeather__render_3d_billboard_pairRenders weather 3D billboard pair with world-to-screen projection. Builds 8 precomputed corner positions from radius fields (0x354, 0x360) applied as offsets in local axes. Projects 4 world positions per quad via CRenderPipeline__project_world_to_screen_with_depth. Generates front and back face quads with different UV orientations. Uses animated frame index for texture selection. Iterates 2 times for dual billboard output.
0x00BCAAC02107CWeather__render_3d_ring_overlayRenders weather 3D ring overlay with world-to-screen projection. Generates ring segments using angle step (0x288) with inner (0x2F4) and outer (0x2F8) radii. Applies 4x3 transform matrix to compute world-space vertex positions. Each segment produces front and back face quads with UV tiling. Projects all vertices via CRenderPipeline__project_world_to_screen_with_depth. Clips via stub_00569560 before submitting to render pipeline.
0x00BCB300423CWeather__render_single_quad_basicRenders a basic single weather quad (identical to CWeather__render_single_quad). Computes 4 vertices from cross-product and normalized angle vectors using field 0x314. Scales by radius (0x360). Sets up textured quad with standard UV coords and tint color (0x1c0). Submits to CRenderPipeline with blend mode 1.
0x00BCB4B0420CWeather__render_shadow_billboardRenders a weather shadow/ground projection billboard. Projects player position to screen space, then projects a point offset by -5.0 in Y (below ground). Builds a screen-aligned quad from the two projected points with 1.0 width offset. Uses semi-transparent color (0x9Cffffff/0x9Bffffff). Submits to CRenderPipeline with blend mode 5 (shadow/darken).
0x00BCB660904CWeather__render_sprite_overlayRenders weather sprite overlay by projecting 3D positions to 2D screen space. Iterates particle layers, projects each position via CRenderPipeline__project_world_to_screen_2d, computes screen scale. Looks up sprite animation details from UISkillWnd tree node entries. Handles horizontal flip flag. Computes depth for Z-ordering. Submits sprite quads via submit_sprite_quad_to_render_queue with per-entry color/rotation properties.
0x00BCB9F02300CWeather__render_flat_strip_quadsRenders a flat strip of 4 quads for weather effects. Transforms vertices through the object's matrix at offset 0x190, projects world coords to screen via CRenderPipeline__project_world_to_screen_with_depth, sets up vertex colors and texture coords, then submits to render pipeline. Type 3 uses random color and render mode 5, others use mode 1. Iterates 4 times building 3 vertices per triangle strip segment.
0x00BCC2F01640CWeather__render_flat_strip_quads_simpleSimplified version of flat strip quad rendering for weather. Similar to CWeather__render_flat_strip_quads but without the type-3 random color branch. Always submits with render mode 1. Transforms vertices through object matrix, projects to screen, builds triangle strips with incrementing texture coords.
0x00BCC960994CWeather__render_segment_quadsRenders weather segment quads from pre-computed vertex data. Iterates over segments (count from offset 0x1F4), each consisting of two triangles formed from 3 projected vertices. Projects world positions via CRenderPipeline__project_world_to_screen_with_depth and submits each pair of triangles to the render pipeline. Vertex data stored at param_1+0x740 with stride 0x8C per segment.
0x00BCCD503076CWeather__render_spherical_mesh_quadsRenders a spherical mesh of weather quads by iterating over latitude/longitude angles. Uses CMatrix__init_rotation_x and CMatrix__set_rotation_y to compute vertex positions on a sphere with radius from offset 0x348. Generates two triangles per grid cell and submits via CRenderPipeline__submit_renderable_object. UV coords advance with angular step computed from param_1+0x288 subdivisions.
0x00BCD9601961CWeather__render_billboard_quadRenders a billboard-style weather quad with 6 vertices (two triangles). Computes 4 corner positions from the object's orientation matrix (offset 0x190) using scale values from offsets 0x354 and 0x360. Handles special flag bits at offset 0x1DC to modify vertex layout. Projects all vertices to screen and submits 2 render objects. Uses texture index from offset 0x144 and frame index at offset 0x3C.
0x00BCE110574CWeather__render_screen_aligned_quadRenders a weather screen-aligned quad pair. Projects player position to 2D screen coords, then builds two quads offset by scale * radius (0x354, 0x360). Uses Z depth of 0.8 (0x3f4ccccd). Submits both quads with tint color (0x1c0) and animated texture from frame index (0x3c). Blend mode from field 0x1c4.
0x00BCFC00625CWeather__render_lightning_bolt_quadsRenders lightning bolt weather quads. Iterates 4 particle slots. For active particles with positive alpha, computes 4 vertex positions using base position offset by sine/cosine of wind angle at fixed angular intervals (from DAT_01388xxx lookup tables). Submits colored quad via CWeather__submit_weather_quad with blue-ish tint (R=60, G=60, B=255).
0x00BCFE802038CWeather__render_weather_particlesRenders weather particles (rain, snow, etc.) as rotated quads. Iterates up to 4 particle slots at stride 0xB4 from offset 0x480. For each active particle (flag at -0x98 offset), processes 10 trail segments. Computes vertex positions using sin/cos lookup tables at DAT_01387fa8/DAT_01388af0 with rotation. Calls rotate_quad_vertices_by_angles and CWeather__submit_weather_quad with type-dependent colors. Types 0x06/0x07 use smaller angular steps, type 0x03 renders an extra half-alpha quad, types 0x05/0x06/0x07 add scaled secondary quads.
0x00BD0680925CWeather__render_double_spiral_trailRenders double spiral trail weather effect. Iterates 4 particle slots with up to 20 segments. Generates two interleaved spiral strips per segment using sine/cosine at different elevation angles. Each strip pair offset by perpendicular wind angle. Submits two colored quad strips per step (one per spiral arm) via CWeather__submit_colored_quad_strip.
0x00BD0A20668CWeather__render_twisted_ribbonRenders twisted ribbon weather trail effect. Iterates 4 particle slots with up to 20 segments. Generates ribbon geometry with an inner and outer edge: inner edge computed from scaled radius along heading sine/cosine, outer edge from scaled outer radius with perpendicular offset. Submits colored quad strips connecting consecutive segments.
0x00BD0CC01547CWeather__render_aurora_particles_00bd0cc0Renders aurora-style weather particles as pairs of quads. Processes 4 particle slots at stride 0xB4. Each active particle generates 2 quads using angular offsets around a central direction (from offset 0x6A). Colors depend on particle type: green (type DAT_010dd080), white (DAT_010df4f0), green-only (DAT_010dc390), gray (DAT_010df490), red-shifted (DAT_010dd844), or cyan. Uses sin/cos lookup tables for vertex positions.
0x00BD12D02513CWeather__render_star_particlesRenders star-shaped weather particles as multiple rotated quads. Processes 4 particle slots. For each active particle with positive lifetime, renders 8 quads: 4 forming a cross pattern and 4 forming an outer ring. Uses rotate_quad_vertices_by_angles for orientation. Lightning-type particles (flag at offset -6) use brighter color (0x1E). Generates additional quads with offset DAT_01114b8c for the outer ring, including negated positions for symmetry.
0x00BD1CB0652CWeather__render_colored_shooting_quadsRenders colored shooting particle weather quads. Iterates 4 particle slots. For active particles, selects color tint based on type field: blue-ish (1.0), green-ish (2.0), red-green (3.0), grey (5.0), or white (default). Builds quad from 4 stored position pairs with Y negation for depth illusion. Submits via CWeather__submit_weather_quad.
0x00BD1F402925CWeather__render_hex_weather_effectRenders hexagonal weather effects using 6-point vertex computation from sin/cos lookup tables at 60-degree intervals. Handles multiple weather types with distinct colors: type 0x01=orange(0x44,0x2A,0x1E), type 0x0A=blue(0xFF,0x32,0x32), type 0x0B=cyan(200,200,0x32), type 0x0C=red(0x32,0x32,0xFF), type 0x0D=white(0xFF,0xFF,0xFF), type 0x14/0x15=warm(0x28,0x28,0xFF). Renders two concentric hexagons - inner with animated scale and outer with modified colors. Special paths for types 0x14 and 0x15 use different base radii.
0x00BD2AB0568CWeather__render_multi_pass_ring_trailRenders multi-pass ring trail weather effect. Iterates 4 particle slots, each with 10 rendering passes and segments per pass. Generates ring positions using sine/cosine with wind angle offset. Computes inner and outer edge positions per segment. Previous segment positions cached for quad strip connectivity. Submits colored quad strips via CWeather__submit_colored_quad_strip.
0x00BD2CF0706CWeather__render_cross_shaped_quadRenders cross-shaped weather quad for 4 particle slots. Computes quad vertices using heading angle with perpendicular offsets at 90, -90, 270, and 180 degree rotations. Builds a diamond/cross shape from inner and outer radii at these angles. Submits white additive quad via CWeather__submit_weather_quad with full brightness (R=G=B=255).
0x00BD2FC02031CWeather__render_leaf_particlesRenders leaf-shaped weather particles as oriented quads. Processes 4 particle slots (stride 0xB4). For each active particle, computes a quad from two angular offsets around a central direction, with separate front and back extents based on particle lifetime sign. Colors vary by particle sub-type: warm whites for types 0-2, cool blues for types 10-12, greens for types 20-22, fire/lava for types 30-38, and gray/white for types 125-127. Type 30+ use additive blending. Quads rendered at fixed Y=-6.0.
0x00BD37B0915CWeather__render_thin_line_particlesRenders thin line weather particles as two narrow quads per slot. Processes 4 particle slots (stride 0xB4). Each active particle generates a narrow quad (angular offset +/-3 degrees) at half alpha and a wider quad (angular offset +/-5 degrees) at full alpha with blue-white tint (R=0x82, G=0x82, B=0xFF). Vertex positions computed from sin/cos lookup tables centered on the particle's direction angle.
0x00BD3B50576CWeather__render_petal_ringRenders petal/flower ring weather quads. Iterates 4 particle slots. For each active particle, generates 10 segments around a ring at 36-degree intervals. Each segment uses inner radius (scaled by 5.0) and outer radius from base, with positions in sine/cosine of heading + segment angle. Submits connected quads via CWeather__submit_weather_quad with yellow-green tint (R=230, G=255, B=230).
0x00BD3D901480CWeather__render_colored_aurora_quadsRenders colored aurora weather quads with complex color selection based on two type parameters. Processes 4 particle slots. The first type (offset 0x1C from piVar7) selects primary color channel (R/G/B/RG/RB/GB/RGB/all), second type (offset 0x14) selects intensity (0x69/0x05/0x37/0x9B). Computes vertex positions from sin/cos tables with 0xB4 angular offset. Submits quads via CWeather__submit_weather_quad with additive or normal blending based on type.
0x00BD43601034CWeather__render_generic_weather_effectRenders generic weather effects with a large switch on weather sub-type at offset 0x452. Processes 4 particle slots. Handles ~30 different sub-types with varying colors: type 0=white 0xFF, type 1=warm(0xFA,0x96,0x96), type 2=red(0xFA,0x82,0x82), type 3=teal(100,200,200), type 4/7/0x17=pure white additive, type 8=green(0x87,0xFF,0x87), type 9=multi-sub-type, types 10-13=various pastels, type 0x12=half-alpha white, type 0x18=brown(0xCC,0x48,0x3F), type 0x19=lowered Y offset. Checks RSW map name for 'ecl_fild01' to cap alpha. Computes 4-vertex quad from sin/cos table at 90-degree increments.
0x00BD4E401118CWeather__render_trail_weather_effectRenders trail-type weather effects with distance-based fading. Processes 4 particle slots, each with 5 trail segments (stride 2). Computes quad vertices using variable angular spread based on shape type (0=90deg, 1=60deg, 2=130deg). Trail segments extend from the weather origin toward the camera, with alpha decreasing per segment. Colors based on sub-type at 0x452: type 0=gray(0x37), type 1=medium(0x69), type 2=dim(0x4B), type 3=mid(0x55). Uses distance-to-camera ratio for segment spacing.
0x00BD53E0840CWeather__render_directional_quad_particlesRenders directional quad weather particles using 4 angular vertex positions. Processes 4 slots. For each active particle, computes a quad from 4 angles spaced around the particle direction: direct, +90, +180, and +90 in opposite direction. Applies elevation tilt from a secondary angle parameter. Colors come directly from particle data (RGB at offsets -0x78, -0x74, -0x70). Submits via CWeather__submit_weather_quad.
0x00BD57303543CWeather__render_multi_arm_weather_effectRenders multi-arm weather effects with 3 arms per particle. Processes 4 particle slots. Each arm has independent direction and shape type. Computes 8-vertex hexagonal shape from sin/cos tables, applies rotation, then renders 4 quads (one per arm direction). Colors vary by pcVar6[0] type: type 0=blue(100,100,0xFF), type 1=dim(0x5A,0x5A,0x50), type 2=red(0xFF,100,100). Vertex wind direction swapping based on angle-to-camera. Uses render mode 2 (additive blending). Each arm has its own alpha and lifetime tracking.
0x00BD65101042CWeather__render_shaped_weather_effectRenders shaped weather effects with a large switch on sub-type at puVar4[2]. Processes 4 slots. Sub-types: 0/3=white additive, 1/6-9/11/13-30=various skip/special, 2=purple(0xFA,0x82,0x82), 4=white additive, 5=green(0x7D,0xFF,0x7D), 10=gray(0x96), 12=dark(0x32), 15=olive(0x33,0x99,0x99), 16=white additive with mode 3, 17=blue-tinted(0xFF,0xB4,0xB4), 18=half-alpha white, 0x12-0x14=colored with secondary quad. Type 3 and 0x11-0x1F add height offset DAT_01158b08. Uses variable angular spread per shape type.
0x00BD71B01875CWeather__render_lightning_bolt_effectRenders lightning bolt weather effects as segmented tubes. Processes 4 slots. Each bolt consists of up to 20 segments with randomized vertex offsets (jitter from rand()%11). Segment positions advance along the bolt direction using sin/cos tables. Each segment renders 4 faces of a tube cross-section (angular step 0x1E0 = 120 degrees in lookup table, 3 faces). Alpha fades by 15 per segment from initial. Lightning type uses random RGB color tinting. Computes segment direction via atan2-like lookup for perpendicular face orientation.
0x00BD79101898CWeather__render_lightning_bolt_variantRenders a variant lightning bolt effect similar to CWeather__render_lightning_bolt_effect but with different parameters. Uses rand()%7 for jitter (smaller than the %11 in the base version), different height offset, and reversed vertical direction. Type 3 (offset -0x86) uses fully random RGB colors, other types use segment-index-based coloring (index*6). Segments fade alpha by 5 per segment. Generates tubular geometry with 3 faces per segment cross-section.
0x00BD80801381CWeather__render_expanding_ring_effectRenders expanding ring weather effects. Processes 4 slots, each iterating 14 rings (from radius index 4 to 17). Ring radius grows based on distance-to-camera ratio, producing a spiral-like expanding pattern. Each ring is a quad computed from 4 angular vertices using variable angular spread per shape type. Type 0/3 use white additive blending, type 4 uses a frame-indexed texture from offset 0x204 with gray tint (0x96). Vertex elevation offset computed from camera height distance.
0x00BD85F0633CWeather__render_hex_ring_quadsRenders hexagonal ring weather quads. Iterates 4 particle slots. For each active particle, generates 5 segments at 72-degree intervals. Each segment connects inner position (base + ring offset) to outer position (base + direction offset). Color depends on type: red (type 13) or yellow-green (default). Submits quads via CWeather__submit_weather_quad.
0x00BD8870779CWeather__render_octagonal_trail_particlesRenders octagonal trail weather particles. Processes 4 slots. Each active particle generates 10 trail segments with octagonal vertex positions computed from sin/cos lookup tables at 45-degree intervals (8 vertices). Type 2 uses smaller Y-offset (DAT_01114248), others use DAT_01119404. First segment (index 10) uses gray tint (0x37), remaining segments use dim (0x05). Submits via CWeather__submit_weather_quad.
0x00BD8B801522CWeather__render_diamond_weather_effectRenders diamond-shaped 3D weather effects as a 6-quad polyhedron. Processes 4 particle slots. Computes 4 base vertices from rotation angle with width/height from offsets -0x88 and -0x84. Creates a pointed top (at height DAT_010e26f0 minus ground offset) and a flat bottom, forming 4 side triangular quads and 2 base quads. All faces are white (0xFF,0xFF,0xFF). Side quads use additive blending (mode 1), base quads use normal (mode 0) with half alpha.
0x00BD91801031CWeather__render_magic_target_ground_effectRenders magic target ground effect as a 7x7 grid of textured quads projected onto the walk grid. Uses texture 'effect_magic_target.tga'. Each cell is rotated around the weather origin direction. Renders two layers: an inner layer at base radius with 0xAA alpha and an outer layer at (radius + DAT_010df4ec) with 0x55 alpha. Converts world coordinates to cell indices via CGameMode__world_to_cell, then renders each quad via CWalkGrid__render_textured_quad with calculated UV coordinates.
0x00BD95A02578CWeather__render_3d_sphere_weather_effectRenders a 3D sphere weather effect composed of latitude/longitude quads. Iterates over angular grid cells with growing scale factor (pfVar7[0x1E]). Each cell generates a quad on the sphere surface using spherical coordinate math. Renders 3 concentric shells at different radii with type-dependent colors: type 3=blue(0xFF,100,0), type 2=blue-green(0xFF,0x9B,0), type 4=magenta(0xFF,0x96,0xFF), type 5=red(100,100,0xFF), default=green(0xCD,0xFF,0xCD). Inner shells use additive blending, outer shell may use normal blending for type 5.
0x00BD9FC03186CWeather__render_multi_arm_hex_weatherRenders multi-arm hexagonal weather effects with 4 arms per particle. Each arm has its own direction angle and renders a hexagonal shape from 8 vertices at 45-degree intervals. Wind direction swapping based on angle-to-camera check. Takes color parameters (param_4/5/6) which default to white but can be set to red (0xFF,0x14,0x14) for type 1 particles. Applies render mode 2 (additive). Processes 4 particle slots with stride 0xB4.
0x00BDAC40679CWeather__render_bubble_ring_segmentsRenders bubble ring weather segments. Iterates 4 particle slots with multiple ring layers (10 angular offsets at 72-degree spacing in cosine table). Each layer generates up to heading/10 segments. Computes inner and outer ring edge positions using cosine table offsets for varied radii. Submits quads via CWeather__submit_weather_quad with light blue tint (R=250, G=250, B=255).
0x00BDAEF01591CWeather__render_pentagonal_cone_effectRenders pentagonal cone weather effects. Processes 4 slots. Computes 5 vertices at 72-degree intervals around the particle direction, scaled by an animated radius. Creates a cone by connecting the 5 base vertices to a top point and also rendering the base as quads. Each side face has decreasing alpha (0xFA, 0xDC, 0xBE, 0x82, 0xA0) for a gradient effect. Uses particle color from offset -0x3C for the RGB channels. Top point height is base height minus particle size.
0x00BDB5301821CWeather__render_spiral_tube_effectRenders spiral tube weather effects with exponential decay. Processes 4 slots. Each segment position is computed with cumulative decay factor (DAT_01115448^n), creating a spiral that narrows over time. Tube cross-section has 3 faces (120-degree steps). Colors depend on type: type 0=warm with fading index*30, type 1=green with index*22, type 2=red-warm with index*50, type 3+=gray with index*30+105. Type 3 also renders an inner tube at DAT_010dc390 scale with blue tinting (0,0,0xFF). Alpha fades by 10 per segment for the inner tube.
0x00BDBC501928CWeather__render_decay_spiral_tube_effectRenders decay spiral tube weather effects with exponential position accumulation. Similar to render_spiral_tube_effect but with different decay computation and up to 20 segments (100/5). Uses cumulative geometric series for segment positions. Tube cross-section has 3 faces. Colors depend on sub-type at pfVar7[-0x22]: type 2=warm(index*7+60), type 8=cold(-56), default=dim(index*7+10). Segments fade alpha by 5 per iteration. Direction computed via atan2-like lookup for perpendicular tube face orientation.
0x00BDC3E01927CWeather__render_rotated_quad_weatherRenders rotated quad weather effects with varying vertex configurations. Processes 4 slots. Computes base quad from 4 angular positions at 90-degree steps, then applies optional rotation and elevation from secondary angle parameters. Types 2/8/9 use an alternate angular spacing. Color varies by sub-type: 0=orange(100,0x96,0xFF), 1=green(0xFA,0xFA,0x9B), 2=blue(0xFA,100,100), 3/8=red(0x32,0x32,0xFF), 4=blue(0xFF,0x32,0x32), 5=green(0x32,0xFF,0x32), 6=blue-additive(0xFA,100,100), 7=red-additive(5,5,0xFF), 9=dark gray(0x46). Applies position and tilt rotation offsets.
0x00BDCB701369CWeather__render_aura_sphere_effectRenders an aura sphere weather effect as two concentric hexagonal shapes. Only renders when particle is active (offset 0x3E8 == 1). Inner sphere uses alpha based on particle lifetime with gray tint (0xB4) and render mode 5 with matrix multiplication (CMatrix__multiply_3x4_552ca0). Outer sphere at full particle radius uses white (0xFF) and fixed alpha 0xFF with mode 0x101. Both shapes are hexagonal with 8 vertices computed from sin/cos tables at 45-degree intervals. Sets weather render type at offset 0x1C4.
0x00BDD0D0662CWeather__render_diamond_flashRenders diamond-shaped flash weather effect. Iterates 4 particle slots. For active particles, computes a diamond vertex from heading + wind angle using sine/cosine tables. Submits two quads: one centered at origin pointing to the diamond vertex, and one offset +-0.5 in Y for a 3D flash illusion. RGB color from per-particle float fields (0x7/0x9/0xB).
0x00BDD3701543CWeather__render_beam_tube_effectRenders a beam tube weather effect connecting two points (source at 0x478/0x47C/0x480 and target at 0x490/0x494/0x498). Computes direction vector and perpendicular cross-section. Interpolates position along the beam using cos-table factor based on frame counter at 0x3F4. Renders 2 concentric tubes (inner at base radius, outer at 2x radius) with 3-face cross-sections. Colors vary by type at 0x40C: type DAT_010dd080=orange(0,100,0x96), type DAT_010df4f0=purple(0xFF,0x59,0xB6), type DAT_010dc390=dim gray additive(0x32,0x32,0x32), default=cyan(0xFF,0xFF,0). Inner tube at full alpha, outer at 2x alpha.
0x00BDD980573CWeather__render_trail_with_gravityRenders weather trail effect with gravity (Y offset of -3.0 per segment). Iterates 4 particle slots with up to 20 segments. Generates segments around heading angle with inner/outer radii. Each segment has fixed Y=-3.0 gravity offset. Submits colored quad strips via CWeather__submit_colored_quad_strip. Limited to 256 total particles across all slots.
0x00BDDBC02204CWeather__render_falling_hex_particlesRenders falling hexagonal weather particles. Processes 4 slots. For each active particle, computes a hexagonal shape from 8 vertex positions at 45-degree intervals, then renders 4 quads (one per arm direction: base, arm1, arm2, arm3). Only renders when vertex Y position is <= 0 (below ground level). Alpha is computed from height using DAT_010e26f0 as ceiling. Type 2 particles use dimmer colors (0x9B), others use full white (0xFF). Height-based alpha fading for particles above ground threshold.
0x00BDE460692CWeather__render_octagon_quadsRenders octagonal weather quads. Iterates 4 particle slots. For each active particle, computes 4 vertex positions from radius at specific angles in the sine/cosine lookup table (offsets 0x4C, 0xB4, 0x11C, 0x184 = roughly evenly spaced around the circle). Rotates vertices by camera heading angles, adds base particle position, and submits white additive quad via CWeather__submit_weather_quad.
0x00BDE720731CWeather__render_simple_hex_particleRenders simple hexagonal weather particles. Processes 4 slots. Each active particle is rendered as a single hexagonal quad from 8 vertex positions at 45-degree intervals. Only renders when Y position is <= 0. Colors depend on particle type at offset -0x3C: type 2=warm red(0x69,0x69,0xE1), type 3=dark gray(0x37), default=white(0xFF). Simpler than render_falling_hex_particles - only one quad per particle, no arms.
0x00BDEA00590CWeather__render_grid_quadsRenders weather grid of quads. Iterates 4 particle slots. For each active particle, generates a 6x6 grid of 30-unit quads from -150 to +150 in both axes, centered on particle position. Each quad placed at Y=-10.0 with vertices rotated by camera heading angles (0x3ec, 0x4a0). Color depends on type: white (0), blue (1), red (2/default), or yellow (3). Submits additive quads via CWeather__submit_weather_quad.
0x00BDEC501093CWeather__render_shrinking_quad_particlesRenders shrinking quad weather particles that decrease in size per iteration. Processes 4 slots. For each active particle, renders 2 quads at different positions (base, +4 offset, +7 offset) with decreasing size. Color varies by particle type at offset -0x24: type 0=blue-dominant(0x46,0x46,0xFF), type 1=red(0xFF,0x46,0x46), type 2=green(0x46,0xFF,0x46), type 3=yellow(0xFF,0xFF,0x5A). Type 0 particles use these colors; others use white with reduced alpha (divide by iteration+1). Size decreases by DAT_010dc090 per step, then by DAT_01117e20.
0x00BDF0A0922CWeather__render_rainbow_spiral_effectRenders a rainbow spiral weather effect as 7 concentric rings with different colors. Processes 4 slots. Each ring is rendered at a decreasing radius (scaled by cos of layer*DAT_01114238). Ring quads are generated by stepping through angular subdivisions (direction/20 per step, up to 20 segments). Colors cycle through rainbow: layer 0=blue(0xFF,0,0), 1=purple(0xFF,0x7E,0), 2=green(0xFF,0xFF,0), 3=yellow(0,0xFF,0), 4=red(0,0,0xFF), 5=pink(0x73,0x32,0xC8), 6=blue(0,0,0xFF). Uses CWeather__submit_custom_colored_quad_strip for rendering.
0x00BDF4403019CWeather__render_rain_particlesRenders rain weather particles. Iterates over 4+2 particle slots (stride 0xB4 bytes). For each active particle (flag==1, alpha>0), computes quad vertex positions using XOR-flipped coordinates, adjusts Y by global height offset. Submits 4 triangles per quad via CWeather__submit_weather_quad. Handles two sets of particles with different size/alpha logic based on a distance threshold (DAT_010dd24c).
0x00BE00101647CWeather__render_rotated_weather_particlesRenders weather particles with rotation. Iterates 4 particle slots, for each active one computes rotated quad vertices using sin/cos of the particle's angle field. Selects color (white, green-ish, gray, or blue-tinted) based on a type field. Submits 4 quads per particle via CWeather__submit_weather_quad, with an extra 2 quads for type==0x50 (double-intensity).
0x00BE0680782CWeather__render_spiral_particlesRenders spiral/tornado-like weather particles. For each of 4 particle slots, subdivides the particle's angular range into 20 segments, computing positions along a spiral path using sin/cos tables. Each segment forms a quad strip submitted via CWeather__submit_weather_quad. Color varies by type: gray (type 99) or orange/red (default).
0x00BE0990268CWeather__trigger_weather_effectTriggers a weather visual effect based on state flags. Checks if weather is active (offset 1000), then dispatches effect IDs (0x228, 0x22c, 0x4b5) via CEntity__create_skill_effect based on the weather type field at offset 0x450. Type 0 triggers 0x228 (on even frames), type 1 triggers 0x22c, type 'c' triggers 0x4b5.
0x00BE0B40740CWeather__render_aurora_particlesRenders aurora/northern-lights style weather particles. For each of 4 particle slots, computes 5 vertices at angular intervals using sin/cos lookup tables, forming a fan shape. The vertices are connected as a single quad submitted via CWeather__submit_weather_quad with green color (R=0x50, G=0xFF, B=0x50).
0x00BE0E30800CWeather__render_colored_arc_particlesRenders colored arc weather particles. For each of 4 particle slots, computes 5 arc vertices at angular offsets using sin/cos tables. Y position is elevated slightly. Color depends on a type byte: 0=red(0xFF,0x50,0x50), 1=green(0x50,0xFF,0x50), 2=white(0xFF,0xFF,0xFF), 3=gray(0x46,0x46,0x46). Submits the arc quad via CWeather__submit_weather_quad.
0x00BE11501318CWeather__render_streamer_particlesRenders streamer/ribbon weather particles. For each of 4 particle groups (each with 10 sub-particles), computes vertex positions using angular offsets from the particle direction. Uses sin/cos lookup tables for positioning. Two rendering modes based on group index: group 0 uses alpha from offset 0x3ea, group 1 uses offset 0x49e. Alpha decays exponentially per sub-particle segment. Submits quads via CWeather__submit_weather_quad.
0x00BE1680414CWeather__render_ground_plane_particleRenders a ground-plane weather particle (like a puddle or ground glow). If weather is active, creates a large quad (200x200 units) at Y=-10, rotated by particle angles via rotate_quad_vertices_by_angles. Color comes from the RGB value at offset 0x1C0. Submits the quad via CWeather__submit_weather_quad.
0x00BE1820608CWeather__render_vertical_beam_particlesRenders vertical beam weather particles. For each of 4 particle slots, renders 3 beam segments at slightly different angles. Segment 1 uses full radius with a shorter height, segments 0/2 use 80% radius with full height. Positions computed using sin/cos lookup tables. Alpha comes from the particle's alpha field. White color (0xFF,0xFF,0xFF).
0x00BE1A80740CWeather__render_pulsing_arc_particlesRenders pulsing arc weather particles. For each of 4 particle slots, computes 5 arc vertices using sin/cos at angular offsets of 45 degrees (0x2D). Type 1 particles use a pulsing opacity based on (frame/6)%4, with pink color (0xCD,0xCD,0xFF). Type 2 uses green (0,0xFF,0). All others use orange (0xC8,0xC8,0xFF).
0x00BE1D70941CWeather__render_falling_leaf_particlesRenders falling leaf weather particles. For each of 4 particle slots, constructs a pentagon-shaped quad using sin/cos LUT values scaled by particle radius, rotated by map angles. Offsets by particle position. If particle Y<=0, optionally triggers effect 0x1FA (splash) via CEntity__create_skill_effect if angle matches or map found. Renders with blue-ish color (0x7D,0x7D,0xFF).
0x00BE21902422CWeather__render_multi_layer_particlesRenders multi-layer weather particles (e.g. snowflakes with 3 visual layers). For each of 4 particle slots, constructs a pentagon quad rotated by map angles, then offsets by 3 different position layers (offsets -8/-6, -2/0, +1/+3 from base). Each layer rendered only if Y<=0. Color varies by type: 0=red(0xFF,0x50,0x50), 1=yellow(0xFF,0xC8,0xC8), 2=purple(0xFF,0xA0,0xA0), 3=blue(0xFF,0x78,0x78), 4=crimson(0x28,0x28,0xFF).
0x00BE2B10657CWeather__render_3d_spiral_particlesRenders 3D spiral weather particles. For each of 4 particle slots, subdivides the angular range into 20 segments and computes 3D positions using spherical coordinates (vertical angle + horizontal angle from sin/cos LUT). Each segment forms a quad strip. Uses CWeather__submit_colored_quad_strip for rendering.
0x00BE2DB0628CWeather__render_magic_circle_particlesRenders magic circle weather particles with multiple color types (12 colors). For each of 4 particle slots, renders multiple stacked rings at increasing Y offsets. Each ring is a 4-vertex quad at angular offsets of 90 degrees (0x5A). Type 0-10 each have unique colors (brown, green-blue, green, red, blue, near-black, white, magenta, pink, dark olive, special). Type 11 renders a double-layer with white on top and blue underneath.
0x00BE34D0354CWeather__submit_rotated_quad_with_offsetHelper that constructs a quad from base position + width/height offsets, rotates it by the weather system's map angles, then submits via CWeather__submit_weather_quad. Used by various weather particle renderers to emit positioned, rotated quads.
0x00BE3640341CWeather__submit_rotated_flat_quadHelper that constructs a flat quad from base position + width/height (Y=0 plane), rotates it by the weather system's map angles, then submits via CWeather__submit_weather_quad. Similar to submit_rotated_quad_with_offset but uses Y=0 for all vertices.
0x00BE37A0938CWeather__render_tilted_ribbon_particlesRenders tilted ribbon weather particles. For each of 4 particle slots, computes a ribbon shape from two radii (top/bottom scaled by a direction char) and applies both horizontal angle and vertical tilt angle via sin/cos. Color varies by type: 0=pink(0xE1,0xE1,0x50), 1=white(0xFF,0xFF,0xFF), 2=orange(0x41,0xB8,0xF0) with additive blend, default=yellow(0xC8,0xC8,0xFF).
0x00BE42102628CWeather__submit_weather_quadCore weather quad submission function. Takes 4 world-space vertices (3 floats each), alpha, color (RGB), UV coords, and a render mode. Projects each vertex to screen space via CRenderPipeline__project_world_to_screen_with_depth. Packs color into ARGB int. Stores vertex data into a renderable slot array (stride 0x6C), then submits via CRenderPipeline__submit_renderable_object. Max 510 quads. Supports billboard mode (param_27==3) and perspective correction mode (param_27==2).
0x00BE4C602235CWeather__submit_colored_quad_stripSubmits a colored quad strip segment for weather effects. Has an extensive color palette switch (40+ cases) based on the weather type at offset 0x318. Each case sets RGB and blend mode. Computes UV coordinates based on the strip segment index (0-99 range, or 100-102 for special). Projects 4 vertices and submits 2 triangles via CRenderPipeline__submit_renderable_object. Max 510 entries.
0x00BE56401378CWeather__submit_custom_colored_quad_stripSubmits a custom-colored quad strip segment for weather effects. Similar to submit_colored_quad_strip but takes explicit RGB color bytes instead of using a type-based color palette. Computes UV coordinates from strip index, projects 4 vertices to screen space, and submits 2 triangles. Supports render pipeline color overrides. Max 510 entries.
0x00BE5BB01293CWeather__render_double_shell_particlesRenders double-shell weather particles. For each of 4 particle slots, renders 2 concentric spherical shells. Each shell has vertices spaced 72 degrees apart (0x120 in LUT). Inner shell uses the particle radius, outer shell uses double radius or radius+offset depending on type. Color varies by type: white, pink/magenta, red, dark, or cyan. Submits quads via CWeather__submit_weather_quad.
0x00BE60C01235CWeather__render_blade_particlesRenders blade/slash weather particles with 5 segments. For each of 4 particle slots, computes frame-animated Y heights and renders 5 blade segments with tapered endpoints (first and last segments narrower). Supports 3 visual modes: type 1 (dark, 0x37/0x37), type 10 (green, 0x37/0xFF), default (white, 0xFF/0xFF additive). Axes can be swapped based on a flag at pfVar3[-9]. Segment index modulates UV tiling.
0x00BE65A0571CWeather__render_3d_ribbon_particlesRenders 3D ribbon weather particles. For each of 4 particle slots, subdivides angular range into 21 segments. Computes ribbon positions using spherical coordinates (horizontal angle + vertical tilt). Each segment is a quad strip with both top and bottom vertices offset by the tilt angle. Uses CWeather__submit_colored_quad_strip for rendering.
0x00BE67E02007CWeather__render_quad_petal_particlesRenders quad-petal weather particles (4 petals per particle). For each of 4 particle slots, constructs a pentagon quad shape rotated by map angles, then offsets by 4 different position layers (base, offset -8/-6, +1/+3, -5/-3). Each petal has its own alpha from the particle data. Color varies by type: 7=orange(0xFA,0x46,0x64), 8=green(0xFA,0xFA,0x0A), 10=white(0xFA,0xFA,0xFA), default=brown(0x46,0x78,0x64).
0x00BE6FC029CWeather__handle_message_reset_textureHandles a custom message dispatch for the weather system. If message_id==0x18 and wparam==0, resets the weather texture handle at offset 0x140 to null. Note: 0x18 is NOT WM_TIMER (which is 0x113); this is a custom weather message ID.
0x00BE6FE0652CWeather__shift_trail_historyShifts the trail/motion history buffer down by one slot. Each slot is 0x8C bytes. For each slot from (count-1) down to 1, copies the previous slot data (position, transform matrix, colors, alpha) to current. Recalculates per-slot alpha fade and packed ARGB color. Then copies fresh data from the current object state (position, transforms, etc.) into slot 0. Used for particle trail rendering.
0x00BED4905224CWeather__render_particle_quads_bRenders weather particle quads (variant B). 5.2K bytes. Same pattern as CWeather__render_particle_quads - rotates quad vertices and submits to weather renderer. Uses rand for randomization. No callers (likely virtual/callback).
0x00D5EEF01253CTownInfoMgr__handle_search_result_entryHandles a town/NPC search result entry. Takes name strings, server ID, map info, and flags. Performs string search via CTownInfoMgr if search is incomplete. Compares stored location string with current. If server matches local, sets global flag. Otherwise dispatches navigation command (0x40) and calls FUN_00d18ba0. Updates global flags for param_10/param_11 booleans and notifies UI of item data change.
0x0109430010thunk_to_CTownInfoMgr__dtorThunk: jumps directly to CTownInfoMgr__dtor. Used as atexit callback for global CTownInfoMgr instance destruction.