Back to legacygamers.net
WARPGATE

Game Entity

CEntity, CEntity3D, CPlayerEntity, CSkillUnit, CItemSprite, CGroundItemEffect, entity state/spawn/render

Functions 445Code 188 KBAddresses 0x00605980 to 0x00E55320Group Game Logic
445 functions
AddressSizeNameDescription
0x006059801CEntityList__find_first_active_entityIterates entity pointer array at offset 0xBC, returns first entity with active flag (offset 0x1B0) set to 1
0x0063F2A078CEntity__dtor_sprite_part_nodeDestructor for sprite part tree node - deletes node at offset+4 with size 0x4c
0x0063F2F078CEntity__dtor_layer_priority_nodeDestructor for layer priority tree node - deletes node at offset+4 with size 0x1c
0x0063F340223CEntity__map_insert_or_get_sprite_partInserts or retrieves sprite part entry in the entity's red-black tree map by key. Allocates 0x18 byte node if not found. Returns pointer to value at node+0x14.
0x0063F420223CEntity__map_insert_or_get_layer_priorityInserts or retrieves layer priority entry in the entity's red-black tree map by key. Allocates 0x18 byte node if not found. Returns pointer to value at node+0x14.
0x0063F5001911CEntity__render_all_sprite_layersMain entity sprite rendering function. Projects world coords to screen, computes scale, loads sprite resources, iterates through body parts (0-8) checking direction/state, renders each part with proper offsets, handles garment/robe overlays, and submits sprite quads to render queue.
0x0063FC90946CEntity__add_sprite_part_to_render_mapAdds a sprite part (body/head/accessory) to the entity's render map. Calls Lua GetLayerPriority to determine draw order. Creates a node with 48-byte sprite data (transform matrix, texture coords) and inserts into the sprite part tree.
0x006400501206CEntity__render_shadow_spritesRenders shadow sprite quads for entity body parts. Iterates through active parts, looks up skill tree detail entries, computes shadow vertices offset by a configurable amount, and submits shadow quads with multiple offset positions (7 directional offsets for shadow spread).
0x006405101457CEntity__render_robe_spriteRenders the robe/garment sprite overlay for an entity. Builds robe sprite paths (type0 and type1), loads resources, gets animated frame data, computes per-frame light values, applies render effects, and handles top-layer Lua check for draw ordering. Checks entity job ID for special robe-exempt entities (FF6, FF7, 1010).
0x00640AD0733CEntity__render_garment_shadow_quadsRenders 7 shadow quads for the garment/robe at various offset positions. Reads garment color from entity field 0x4f4, optionally applies color transformation based on GameSettings option 0xe5. Calls CSkillUnit__render_garment_sprite for each quad with offset increments.
0x00640DB053CEntity__get_alternate_sprite_frameGets an alternate sprite frame for action types 2/3/4/8. Compares resource counts between type 1 and the requested type; if the requested type has a multiple of type 1's count, returns the scaled frame. Otherwise returns {0, nullptr}.
0x00640E60103CEntity__compute_direction_with_flip_trackingComputes entity facing direction using calc_direction_from_delta and tracks flip state. Returns mapped direction (0/2/4) with special handling for direction 4->2 remap. Tracks whether entity crossed the flip boundary for smooth transitions.
0x00640ED0586CEntity__compute_sprite_part_offsetComputes the pixel offset for a specific sprite part relative to the body. For type 1 (body), computes from base frame. For types 2/3/4/8, gets animated frame data, computes offset between alternate and current frames, applies riding sprite Y-offset correction, and scales by anchor point ratios.
0x00641130375CEntity__get_doram_item_offsetGets Doram-specific item position offset by calling Lua function 'OffsetItemPos_GetOffsetForDoram'. Returns {0,0} if the equip location is not a special equip type. Only applies to Doram race characters.
0x006412B0218CEntity__get_sprite_resource_by_typeGets the sprite resource pointer for a given part type (0=body, 1=head). For type 0, checks entity field 0x48 count and loads from string at +0x1c. For type 1, checks field 0x444 count and loads from +0x478. Returns resource base + 0x110 or resource + 0x510.
0x0064139094CEntity__get_render_layer_countReturns the number of render layers for a given sprite part type. Types 2/3/8 return 1. Type 4 returns 0x11 if entity field 0x458==0xb9 else 1. Default returns 0x101 with special cases for certain entity states (field 0x34 values 1 or 2) at high alpha.
0x00641420106CEntity__lookup_sprite_part_in_treeLooks up a sprite part by index in the entity's render tree map. Returns a result struct {found, sprite_ptr, action_ptr} where found=1 if the index exists in the tree, 0 otherwise.
0x00641490177CEntity__init_sprite_part_mapInitializes the entity's sprite part map. Clears rendering state flags, then inserts entries for sprite part indices 2/3/4/8 and the main body into the map, storing resource pointers from entity fields 0x450/0x454/0x458/0x49c. Also calls format_to_iterator to populate head/accessory resources.
0x0064155017CEntity__has_valid_sprite_frameReturns true if the sprite part at param_2 has a valid frame index (field +8 != -1).
0x00641570167CEntity__should_skip_sprite_layerDetermines if a sprite layer should be skipped for rendering. Returns 0 (skip) for types 5/6/7 when entity is in special state or action is in extended range with certain job IDs (FF6, FF7, 1010). Returns 0 for types 2/3/4 when entity field 0x6d is set. Returns 0 for type 8 when field 0x4d9 is clear. Returns 1 otherwise (render).
0x00641620552CEntity__get_sound_resource_nameGets the sound resource name for a specific entity part type. For type 6, looks up the skill name string, strips the .wav extension if present, and returns it. For all other types, returns an empty string. Used to associate sound effects with sprite animations.
0x006418501123CEntity__render_single_sprite_layerRenders a single sprite layer for an entity body part. Iterates through detail entries, computes offsets (Doram offset + part offset + rotation), calls the virtual draw function, handles body/head-specific logic (aspect ratio for type 0, position tracking for type 1), applies render effects, status auras, and adds sprite parts to the render map. For type 0, also triggers robe sprite rendering.
0x00641CD0258CEntity__submit_all_sprite_quadsIterates through all sprite parts in the entity's render tree and submits each as a quad to the render queue. Applies aspect ratio scaling to vertex positions. Uses either rotated or non-rotated sprite quad submission depending on special mode state. Traverses the red-black tree in-order.
0x00641DE081CEntity__add_shadow_quad_with_offsetAdds a shadow quad by offsetting source vertices by (param_2, param_3) and inserting into the entity's sprite part render map with priority 5.
0x00641E40738CEntity__load_sprite_resources_for_partsLoads sprite and action resources for all 9 body parts (indices 0-8). For each part, gets head resource pointer and skill resource. Special handling for part 1 (head): checks riding flag to substitute alternative head sprite, checks equip flag to load special weapon sprites. Stores resource pointers in entity's sprite part tree. Also initializes layer priority map for parts 2-4, checking guild skill IDs.
0x0064213042CEntity__expand_bounding_box_for_body_headExpands the entity's bounding box to include the given vertices, but only for body (type 0) or head (type 1) parts, and only when entity field 0xa5 is set.
0x006984D62CEntity__process_layer_priority_tree_nodeWARNING (jumptable): Unable to track spacebase fully for stack
0x006984FF53CEntity__process_layer_priority_tree_nodeWARNING (jumptable): Unable to track spacebase fully for stack
0x0080D6D089CEntityRenderer__destructorDestructor for CEntityRenderer. Sets vtable, destroys internal RB-tree (sprite part map) via CReportStorage__destroy_tree_and_sentinel.
0x0080D730117CEntityRenderer__scalar_deleting_dtorScalar deleting destructor for CEntityRenderer. Sets vtable, destroys RB-tree, frees 0xC4 bytes if bit 0 set.
0x0080D7B0742CEntityRenderer__calc_sprite_frame_verticesCalculates sprite frame vertex positions for entity rendering. Takes sprite frame data, scale, and offsets; computes screen-space quad coords, UV fog values, and ARGB color from sprite palette. Returns 1 if visible, 0 if culled by screen bounds.
0x0080DAA0255CEntityRenderer__apply_equipment_sprite_offsetApplies sprite position offsets for equipment layers (head=2, garment=3, robe=4). Adjusts X/Y position based on resolution threshold (DAT_0135f44c vs DAT_0112bb7c).
0x0080DBA0971CEntityRenderer__build_sprite_layer_frontBuilds front-facing sprite layer for entity rendering. Loads robe sprite resources, iterates skill tree detail entries to compute sprite frame vertices. Pushes 12-byte render entries to the render list. Handles animation frames and fog depth.
0x0080DF701068CEntityRenderer__build_sprite_layer_backBuilds back-facing sprite layer for entity rendering. Similar to front layer but pushes 16-byte entries (with extra layer flag). Handles top-layer Lua check for overlay positioning adjustments.
0x0080E3A0299CEntityRenderer__lua_get_draw_on_topQueries Lua for DrawOnTop flag. Calls 'DrawOnTop' or 'New_DrawOnTop' depending on global flag DAT_0173353c. Returns 1 byte boolean indicating whether sprite should render on top layer.
0x0080E4D01430CEntityRenderer__apply_item_position_offsetApplies item/equipment position offsets via Lua callback 'OffsetItemPos_GetUppingBottomIte...'. Handles per-job and per-equip-slot offset tables with resolution-dependent branching. For type 2 (body), also queries Lua for additional offset and applies it.
0x0080EA805575CEntityRenderer__render_entity_fullMain entity render function. Sets up camera matrix, projects world position to screen, loads all sprite resources (body, head, weapon, accessory, robe palettes), iterates through equipment layers (0-8) building sprite render entries. Handles direction mapping, layer priority via Lua, guild skill checks, and bounding box computation. Output is a linked list of render entries.
0x008105A05643CEntityRenderer__render_entity_to_listRenders an entity to an output render list (param_2). Similar to render_entity_full but returns the list pointer. Projects entity to screen, loads all sprite resources, builds render entries per equipment layer, handles palette swaps, direction, and layer priority. Sets bounding box and visibility flag.
0x00811C10930CEntityRenderer__render_shadowRenders entity shadow sprite. Loads shadow.spr and shadow.act resources, gets interpolated ground height, projects to screen, computes shadow quad vertices with scale from NPC location radius. Returns render entry pointer or 0 if not visible.
0x008124B0236CEntityRenderer__lua_set_layer_prioritySets entity layer priority via Lua. Stores param_2 at offset 0xBC, calls Lua method with 'IsHelmRobe' and 'TB_Layer_Priority' string arguments to determine sprite rendering layer order.
0x00CA83A0606CEntity__ctorConstructs CEntity (inherits CSprite). Calls CSprite__ctor_base, sets vtable to CEntity, initializes pathfinder (two 0x40-byte linked lists), four 0xC-byte linked lists, one 0x14-byte RB-tree, and calls CEntity__reset_all_state_fields.
0x00CA88E067CEntity__free_pathfinder_nodeFrees a 0x40-byte pathfinder linked list sentinel node of CEntity if it exists.
0x00CA89D078CEntity__free_pathfinder_sentinel_altAlt variant of CEntity pathfinder sentinel free. Frees 0x40-byte sentinel if exists.
0x00CA8D70321CEntity__dtorDestructor for CEntity. Sets vtable, cleans up UI/sub-objects, clears map info tree, destroys linked lists for paths (0xC, 0x40 nodes), clears pathfinder vector, then calls CSprite__dtor.
0x00CA90D0345CEntity__scalar_deleting_dtorScalar deleting destructor for CEntity. Calls full CEntity dtor chain (UI cleanup, path lists, map info), then CSprite__dtor. Frees 0x410 bytes if flag bit 0 set.
0x00CA943052CEntity__adjust_sprite_offset_for_ridingAdjusts sprite Y offset for riding/mount classes. Checks if entity type is 5 (pet/mount) and job ID is in riding class ranges (0x5248-0x5260 or 0x5817-0x588C), adds 4 to Y offset if so.
0x00CA9E2041CEntity__has_shield_equippedChecks if entity has a shield equipped. Returns false for certain special job classes (via FUN_00e3d350), otherwise checks field 0x404 (shield slot) != 0.
0x00CAA4D0618CEntity__play_idle_combat_animationPlays idle combat animation based on entity job class. Checks game option 0x6B first. Dispatches different action IDs (0x7D, 0x92, 0x93, 0x96, 0x97) based on weapon type: mount, magic classes, mech, special jobs. Uses weapon ID comparison with global weapon class IDs.
0x00CAA870296CEntity__dispatch_effect_by_idDispatches an effect by ID on an entity. For IDs < 0x9B5, directly calls CEntity__toggle_effect_by_id. For higher IDs, queries Lua function 'GetEffectType' to determine dispatch type: 0=toggle effect, 1=hat effect, 2=both, 3/4=effect with subtype.
0x00CAA9B0471CEntity__apply_hat_effectApplies a hat effect to an entity. Calls Lua "GetHatEffectID" to resolve the effect ID from (param_2 - 0x9B5). If effect ID is 0xFE, checks if entity is a specific type and toggles flag 0x10 at offset 0x438. Creates a persistent effect via CEffectManager__create_effect and marks it as attached (offset 0xC8 = 1). Falls through to FUN_00cadd60 if effect creation fails.
0x00CAABA0111CEntity__toggle_effect_by_idToggles a visual effect on an entity. If param_3 is true, creates a new persistent effect (attached flag offset 0xC8 = 1) via CEffectManager. If param_3 is false, removes the effect by ID and type. Uses the entity's effect manager at offset 0x110.
0x00CAAC10100CEntity__toggle_effect_with_subtypeToggles an effect on entity with a sub-type parameter. If param_4 is true, creates an effect using CEffectManager with the sub-type as last param. If false, adds the effect via CEffectMgr__add_effect_and_register using a different registration path. Uses entity's effect manager at offset 0x110.
0x00CAAC80843CEntity__clear_all_status_effectsClears all status/visual effects from an entity. Sets flag at offset 0x2B8 to 0, then calls virtual method at vtable+8 (likely remove_effect) with effect IDs: 200, 0x3D0-0x3D3, 0x3FE-0x3FF, 0x4CA-0x4CB, 0x2F5, 0x370, 0x18D-0x18E, 0x16A, 0xC9-0xCA, and two global DAT values. These correspond to various RO status effects (body auras, shadows, etc).
0x00CAAFD077CEntity__destroy_status_windowDestroys the entity's status window UI. Checks if a global state is valid (FUN_00e1dfb0), then if the window pointer at offset 0x188 is non-null, unregisters it from CUIWindowMgr and sets the pointer to null.
0x00CAB020292CEntity__clear_attached_entity_slotClears an attached entity reference slot on this entity. Checks 13 slots at offsets 0x37C-0x3AC; if any matches the given entity ID (param_2), sets that slot to 0. Slots likely represent attached entities like pets, homunculus, elemental, mercenary, etc.
0x00CAB15036CEntity__destroy_tooltip_windowDestroys the entity's tooltip/info window. If the window handle at offset 0x18C is non-null, unregisters it from CUIWindowMgr and nulls the pointer.
0x00CAB1801130CEntity__render_with_aura_and_shadowCEntity: render with aura and shadow
0x00CAB610290CEntity__find_path_with_speed_adjustFinds a path for entity movement with speed adjustment. If global speed override (DAT_016f7144) is active, adjusts the speed parameter using EffectMap frame rate. Calls CPathFinder__find_path_astar, then checks if the last waypoint direction exceeds the param. If so, retries with 10/13 of the original speed (walking speed reduction). Stores final speed at offset 0x254.
0x00CAB7F0303CEntity__get_direction_indexGets the direction index for this entity from an angle, with special handling for certain entity types. Gets camera rotation, subtracts param angle, normalizes to [0, 360). Checks entity job class via FUN_00cabfa0: if the entity is a boss/NPC type (job 46-999) with non-zero action state (offset 0x34), or if it's a rideable mount type (FUN_00e1dce0), uses a different angle division formula for 8-direction mapping.
0x00CAB99018CEntity__get_head_directionGets the head direction of this entity. Returns 0 if the entity's sub-object at offset 0x108 is null, otherwise delegates to get_field_offset_0x14 to retrieve the head direction value.
0x00CAB9B07CEntity__get_head_sprite_ptrReturns the head/sub-sprite object pointer at offset 0x108. Used by CEntity__get_head_direction to access head direction data.
0x00CAB9C0293CEntity__get_sprite_height_for_actionReturns the sprite height (as a char value) based on the entity's current action type. Large switch statement mapping action IDs to heights: 0=0, 1=8, 2/0x2B/0x2C/etc=80('P'), 3=64('@'), 4=48('0'), 5/0x14/0x19=24, 9/0x12/etc=88('X'), 0xB=32(' '), 0xC/0x13/etc=40('('), 0xD=special (checks mount status), 0x10-0x51 range=96('`'), 0x4A/0x4B=104('h'). Action 0x1A has sub-cases for specific job IDs (0xFD1,0x1083,etc).
0x00CABC80176CEntity__get_body_direction_offsetCalculates a body direction offset for the entity based on its type and state. Checks if entity is a specific mounted/special type, then if it's of a certain class (FUN_00dfa600). Returns +10 or -20 depending on offset 0x2CC flag for mounted entities, -40 or -30 for special class, and 0 or +30 for normal entities.
0x00CABD307CEntity__get_shield_idReturns the shield equipment ID at offset 0x404. Returns 0 if no shield equipped. Used by CEntity__has_shield_equipped.
0x00CABD40146CEntity__find_skill_tree_node_by_nameSearches the entity's skill tree for a node matching a specific skill name (at DAT_011a067c). Iterates through all tree nodes via UISkillWnd__get_tree_node_count and UISkillWnd__get_skill_tree_node, comparing each node's skill name string. Returns the index of the matching node, or (count - 2) if not found (and count != 1).
0x00CABDE0127CEntity__apply_speed_modifier_from_statusApplies a movement speed modifier based on the entity's status flags. Only acts if flag 0x10 is set at offset 0xE8. Reads a multiplier byte at offset 0xF0 and uses a lookup table (DAT_01387FA8) to compute a scaling factor. Values above 0x10E result in a flat constant multiplier; otherwise uses a table-based formula with the byte value * 16 as offset.
0x00CABFA01049CEntity__get_effective_job_idGets the effective job/class ID for the entity, accounting for class transformations. If param is -1, uses the entity's stored job ID at offset 0x25C. Checks various class transformation functions and returns mapped job IDs: baby classes (0x16), super novice variants (0x1A-0x1E), Taekwon ranks. For mounted/costume classes, remaps specific job IDs (e.g., 0xFC5->0xFCC, 0xFA8->0xFAE). Also handles Doram, Star Emperor, Soul Reaper class variants with special costume weapon IDs. Returns original job if no transformation applies.
0x00CAC76035CEntity__get_garment_sprite_idGets the garment/robe sprite ID for this entity. If the costume type at offset 0x404 is 1, returns 0x1104; if 2, returns 0x1105; otherwise returns the stored garment ID from offset 0x25C.
0x00CAC7901390CEntity__get_encrypted_sprite_pathReturns an encrypted sprite file path based on gender (param_2: 1=male, 2=female) and job class ID (param_3). Uses XOR-encrypted string buffers stored in TLS for different class/gender combinations (job IDs 0x1101-0x1103 and others). Each path has separate encrypted data and decrypt-on-first-use pattern with xor_decrypt_buffer. The encrypted paths likely point to sprite resource files for different character classes.
0x00CACD0099CEntity__get_sprite_pathGets the sprite path for this entity. Delegates to CEntity__get_encrypted_sprite_path using the entity's gender (offset 0x404) and job ID (offset 0x25C). Returns the path string.
0x00CACD7091CEntity__get_weapon_type_for_jobDetermines the weapon display type for the entity based on its effective job ID. Returns 3 for certain classic jobs (Thief, Assassin, wedding), 5 for Doram classes and 4th jobs (0xFF0-0x1010, 0x10B6-0x10B9), and 0 for all other jobs. These likely control which weapon sprite set to use.
0x00CACE4093CEntity__compute_attack_speed_multiplierComputes the attack speed animation multiplier for the entity. If the entity has a valid status (offset 0x108 != 0) and a positive speed value (offset 0x64), gets a float value from UISkillWnd, clamps it to a minimum threshold (DAT_010dc098), and multiplies by the speed. Returns 1.0 if no valid status or zero speed.
0x00CACEA067CEntity__get_scaled_skill_valueReturns a scaled skill value based on a float from UISkillWnd. If the entity sub-object (offset 0x108) exists and param_3 is positive, gets a float value from UISkillWnd for param_2. Clamps the minimum to DAT_010dc098 and multiplies by param_3. Returns 1.0 if conditions are not met.
0x00CACEF041CEntity__get_sub_entity_by_indexReturns a pointer to a sub-entity structure by index. Index 0 returns offset 0x318, index 1 returns offset 0x348, otherwise returns null. These offsets likely correspond to equipment overlay or attachment sub-entities (e.g., head gear, shield).
0x00CAD42081CEntity__get_attached_entity_for_skillGets the attached entity ID for a given skill ID. Skills 0x81, 0x17D, 0x14CE, 0x14D1, 0x1978 return the entity from slot 0x37C (pet/homunculus). Skills 0x8C3, 0x8C4 return from slot 0x380 (elemental). Returns 0 for unrecognized skills.
0x00CAD48041CEntity__get_sub_entity_by_index_bReturns a pointer to a sub-entity structure by index (variant B with different offsets). Index 0 returns offset 0x330, index 1 returns offset 0x360, otherwise returns null. Similar to get_sub_entity_by_index but at different struct offsets.
0x00CAD4B0541CEntity__get_mount_sprite_scale_xCalculates the X-axis sprite scale for mounted entities. Starts with base scale modified by status flag 0x10 at offset 0xE8 (speed modifier table). Then checks effective job ID to determine mount-specific scaling: mounted classes (0xFC4, 0xFCC, 0x100D-0x1010) use a smaller scale, dragon/mech mounts (0xFB6, 0xFF0-0xFFF, 0x10B6-0x10B9) use a standard mount scale. For rideable entities, checks the specific mount type at offset 0x4D4 (Peco=0, Gryphon=0xFA1, Dragon=0x105E) to apply different scales (0, double, or standard).
0x00CAD780321CEntity__get_mount_sprite_scale_yCalculates the Y-axis sprite scale for mounted entities. Similar logic to get_mount_sprite_scale_x but returns Y-specific scale values from different globals. Dragon/mech mounts return DAT_011425ec, mounted classes return a different Y scale, and normal entities return DAT_01117e28.
0x00CAD9907CEntity__get_sprite_resource_handleReturns the sprite resource handle at offset 0x104. This field stores the loaded .spr resource (e.g., cursors.spr or NPC sprite) set during init_cursor_sprites and init_npc_sprite_and_state.
0x00CAD9A064CEntity__get_elapsed_time_secondsReturns the elapsed time in seconds since the entity's timestamp at offset 0x8C. Uses timeGetTime() to get current time, computes the delta, and converts from milliseconds to seconds by dividing by 1000.0.
0x00CAD9E0214CEntity__get_target_positionGets the 3D position of a target entity by ID. If target ID matches the player's own ID (DAT_01733c3c), returns the camera/player position. Otherwise searches for the entity via CBGMManager__find_map_by_id_no_cache. If found, copies its position. If not found, mirrors own position relative to player (extrapolation). Returns 1 if target was found, 0 otherwise.
0x00CADAF021CEntity__get_weapon_attack_rangeGets the weapon attack range for this entity. Returns -1 if the sub-object at offset 0x300 is null. Otherwise returns the value at sub-object offset 0xA0, which represents the equipped weapon's attack range.
0x00CADB1021CEntity__get_weapon_attack_range_bGets the weapon attack range (variant B, offset 0xA4) for this entity. Returns -1 if sub-object at offset 0x300 is null. Otherwise returns value from sub-object offset 0xA4. Likely the secondary/left-hand weapon range.
0x00CADB7011CEntity__has_costume_garmentReturns true if the entity has a costume garment equipped. Checks if the costume type field at offset 0x404 is non-zero.
0x00CADBE054CEntity__has_attached_effect_with_idChecks if the entity has an attached effect with a specific effect ID. Iterates through the linked list at offset 0x144, checking each node's effect object (node[2]) at its offset 0x168 for a match with param_2. Returns true if found.
0x00CADC2024CEntity__is_visible_and_activeReturns true if the entity is both visible (offset 0xA0 != 0) and active (offset 0xA1 != 0). Both flags must be set for the entity to be considered visible and active.
0x00CADC4055CEntity__has_effect_object_in_listChecks if a specific effect object pointer exists in the entity's effect list. If the list count at offset 0x148 is non-zero, iterates the linked list at offset 0x144 comparing each node's data pointer (node[2]) to param_2. Returns true if found.
0x00CADCC011CEntity__has_guild_emblemReturns true if the entity has a guild emblem. Checks if the guild emblem ID at offset 0x2AC is non-zero.
0x00CADCF049CEntity__update_timestamp_and_check_newerUpdates the entity's timestamp at offsets 0x3EC (high) and 0x3E8 (low) with the given values. Returns 1 if the new timestamp is strictly newer than the previous one. Used for packet ordering to discard stale updates.
0x00CADD60909CEntity__create_skill_effectCreates a skill visual effect and attaches it to the entity. Manages an 8-entry history ring buffer (DAT_0171dd30-4C). Effect ID 0x7F sets a flag and shifts history. IDs 0-60000 are valid. Special cases: 0x345 uses helper_00611ed0, 0x98C creates a custom effect with vtable PTR_FUN_011a0050. Calls Lua 'IsForceRenderEffect' to check rendering. Sets up 3D vectors, creates a CSkillEffectManager, adds to the entity's linked effect list at offset 0x144. Returns the effect object pointer or null.
0x00CAE1B0506CEntity__update_effect_setUpdates the entity's persistent effect set (red-black tree at offset 0x3FC). If param_3 is false, removes the effect and disables it. If true, first disables all existing effects in the set, inserts the new effect ID into the tree (max 0xCCCCCCC entries), then re-enables all effects. Uses FUN_00caa870 to toggle effects on/off and FUN_00cc4900 for removal.
0x00CAE3B0333CEntity__spawn_skill_projectileSpawns a skill projectile entity (0x4F8 bytes). Allocates via operator_new, constructs via FUN_00da7700, sets target flag at offset 0x260, calls FUN_00cc2340 to init, then sets various properties via virtual methods (position, direction, etc). Creates a sub-entity (0x518 bytes) via FUN_00da17a0, copies position from param_4, sets initial color to white (0xFF at 0x98, 0xFFFF at 0x99). Adds to the global render list.
0x00CAE500210CEntity__spawn_death_effectSpawns the entity's death/destroy visual effect. Gets head/body directions, constructs the effect via FUN_00cd8740 with entity position. Copies the animation timer from param_1 offset 0x10C if positive. Looks for effect 0x946 in the entity's effect manager and inherits its source reference at offset 0x138->0x48.
0x00CAE5E094CEntity__handle_entity_click_interactionHandles entity click/interaction. Only proceeds if game state is valid and target is not the local player. Gets the entity's account ID via virtual method, looks up resource via CResourceCache, then creates a chat bubble/interaction display via CGameMode.
0x00CAE640325CEntity__check_and_apply_guild_skill_effectChecks if a guild skill flag applies to this entity and creates the corresponding effect. Iterates through guild skill entries checking offsets 0x48/0x54. For each entry, compares the skill's entity reference. If matching and the entity doesn't already have effect 0xA0 (guild aura) attached, creates it via CEntity__create_skill_effect.
0x00CAE790689CEntity__dispatch_skill_effect_by_idGiant skill effect dispatcher. Routes skill IDs to appropriate effect creation functions based on the entity's job class. Three main paths: FUN_00cd8000 for ground-targeted skills (fire bolt, etc), FUN_00cdbc30 for projectile/area skills, and FUN_00cd8f30 for simple directional skills. Covers hundreds of RO skill IDs organized by ranges (3rd class skills 0x5000+, 4th class 0x5600+, etc).
0x00CAF03023CEntity__create_dialog_bubbleWrapper that creates a dialog bubble widget for this entity. Gets global game mode state and delegates to CGameMode__create_entity_dialog_bubble to create a UIDialogWithStrings widget at offset 0x18C.
0x00CAF050282CEntity__adjust_color_rgbaAdjusts the entity's RGBA color values by delta amounts. Only applies if the entity is not locked (offset 0xA3 == 0). Adds the deltas (params 2-5) to the stored RGBA bytes at offsets 0x98-0x9B, clamping each component to [0, 255]. R at 0x9B, G at 0x9A, B at 0x99, A at 0x98.
0x00CAF170229CEntity__destroy_all_attached_effectsDestroys all attached effects on this entity. Iterates the linked list at offset 0x144, calling each effect's virtual method at vtable+0x40 (destroy/cleanup with params 0x18). Then removes all nodes from the list, freeing each 0xC-byte node. Decrements the list count at offset 0x148 and zeros out counters at 0x14C and 0x150.
0x00CAF260530CEntity__cleanup_all_ui_and_sub_objectsComprehensive cleanup of all entity sub-objects and UI elements. Destroys sprite objects at 0x30C and 0x310 (calling their destructors). Unregisters UI windows at offsets 0x264, 0x268, 0x26C, 0x270, 0x274, 0x300. Iterates and destroys the list at 0x3B0 (calling vtable+8 with action 0x31). Destroys status window at 0x188 (also removes from entity list) and tooltip at 0x18C.
0x00CAF4F0995CEntity__reset_all_state_fieldsResets all entity state fields to their initial values. Clears numerous fields: position, rotation, scale (set to 1.0), color, status flags, animation state, timers (set from timeGetTime), action IDs, equipment slots, stat values, guild info, etc. Essentially reinitializes the entity to a blank state. Sets initial action at offset 0x26 to -1, byte flag at offset 0xA4 to 1, and various timer offsets to current time minus offsets.
0x00CAF8F0152CEntity__init_cursor_spritesInitializes the entity's cursor/selection sprites. Zeroes interaction flag at offset 0x138, sets visible+active flags. Loads "cursors.spr" and "cursors.act" resources via CResourceMgr, storing handles at offsets 0x104 and 0x108 with reference counting. Calls virtual method at vtable+0x1C with params (3,2,0) to set initial animation state.
0x00CAF990708CEntity__init_npc_sprite_and_stateInitializes an NPC entity's sprite and state. Zeros position, rotation, scale (set to 1.0), color (white, fully opaque). Loads NPC sprite/act files using the NPC name from FUN_00dde5c0 (format "NPC\\%s.spr"/"NPC\\%s.act"). Stores resource handles at 0x104/0x108 with ref counting. Clears numerous state fields, sets animation speed default at 0xC2 to 10, enables flag at 0xB4. Clears the linked list at 0x11C.
0x00CAFC60184CEntity__replace_attached_effectReplaces an attached effect on the entity. First removes all existing instances of the effect (by ID param_2) by repeatedly calling the remove virtual method until none remain. If param_3 is true, creates a new instance of the effect via CEffectManager__create_effect, then sets its position (vtable+0x20) and rotation (vtable+0x28) from the provided parameters.
0x00CAFD30138CEntity__update_sprite_animationUpdates the entity's sprite animation frame. Copies current action to previous, calculates elapsed time since creation (offset 0x8C), divides by frame speed (offset 0x58) and modulates by frame count to get current frame index. If entity has a lifetime counter (offset 0x138), decrements it and sets invisible (offset 0xA0=0) when it reaches zero. Returns 1.
0x00CAFDD0233CEntity__generate_grayscale_paletteGenerates a grayscale palette from a color palette. Reads 256 color entries from offset 0x510, extracts RGB components from packed 16-bit color format (5 bits per channel), computes average gray value ((R+G+B)/3), and writes back as RGBA grayscale. Uses the stub_0056f7b0 function to apply the result back to the palette buffer.
0x00CAFEC027CEntity__recalculate_frame_offsetRecalculates the frame offset for the entity's animation. Calls virtual method at vtable+0x10 to get the action frame count for the current direction (param_1[0x13]), adds it to the base action index (offset 0x34) and stores result at offset 0x38.
0x00CAFEE024CEntity__enable_special_movement_flagSets a special movement flag at offset 0x9E to 1 if the entity's class mode at offset 0x2BC is 1 or 2. Likely enables special movement animations for mounted or transformed entities.
0x00CAFF00794CEntity__update_overhead_ui_positionsUpdates the screen positions of overhead UI elements (chat bubbles, name plates, HP bar, etc). Calculates a Y scale factor based on viewport height. Positions chat bubble (offset 0x264) with timeout check (5 seconds), name plate (offset 0x268), guild name (offset 0x26C), HP/SP bar (offset 0x270) with scroll range update, and title (offset 0x274). All positions are offset from the entity's screen coordinates (offsets 0xAC/0xB0) with the Y scale applied.
0x00CB0220327CEntity__update_idle_effectsUpdates idle/passive effects on the entity. Clears status effect flags when DAT_0173ad54 is positive and flag is 1. Checks entity class for special types: if is_specific_class returns true, sets the effect timer to 36000. Otherwise checks for two different idle animation states and creates skill effects 0x16 or 0x21 when cooldown timers expire. Increments the effect timer at offset 0x2D8 each frame.
0x00CB03E0284CEntity__update_hp_bar_displayUpdates the HP bar display for this entity. Only shows if game setting 0xD5 (show HP bars) is enabled and the entity has HP data at offset 0x300. Hides the bar if the entity is invisible, dead, or in BG mode 2. Otherwise shows it (virtual call at vtable+0x38), sets HP value if action state is 3, scales the bar position to screen coordinates, and positions it above the entity.
0x00CB05001418CEntity__update_animation_stateComplex animation state machine update for entities. Handles frame calculation, action transitions, and multi-frame animation sequences. Manages three animation modes: simple time-based frame cycling, scripted frame sequences (with forward/reverse playback and looping), and table-driven frame animations. Uses timeGetTime for frame timing. Handles action 0x2D (loading a special resource). Detects animation completion (offset 0x9D=1) and manages reverse playback (offset 0xFE). Extensive logic for combining body/head animations with proper frame clamping.
0x00CB0A9062CEntity__update_animation_frame_from_distanceUpdates the animation frame index based on distance traveled (offset 0x240). Multiplies distance by a constant and 4.0, divides by frame speed (offset 0x58), then modulates by frame count to get the current frame. Returns the cycle count (number of full animation loops completed).
0x00CB0AD01271CEntity__play_animation_soundsPlays sounds associated with animation frames. Compares current frame (0x3C) with previous frame (0x44) and plays sounds for any new frames reached. Iterates through animation tree nodes, gets skill name strings, checks for sound file references (searches for ".wav" pattern). For forward animation, plays sounds from old frame to new. For wrapped/reverse animation, plays remaining frames then loops from start. Positions sounds in 3D relative to the camera.
0x00CB0FD02218CEntity__update_movement_and_actionsMain entity update tick handling movement, action states, and fade-out. Handles fade-out timer at offset 0x2DC (alpha decay). Large switch on action state (offset 0x1C): 0=idle (with random NPC idle animations), 1=walking (pathfinding position interpolation with direction calculation using atan2), 3=attack (calls virtual attack handler, handles monster/NPC death removal), 4=knockback (linear interpolation from current to target position), 5/7/0x2D=skill/emote actions, 8=dead (periodic warp check on party members), 0xD=sitting (with mount animation variants). Updates ground height via C3dAttr__GetInterpolatedHeight and applies position offsets.
0x00CB18E069CEntity__update_fade_alphaUpdates the entity's fade-out alpha value. If the fade timer at offset 0x2DC is set, checks if it has expired (returns 0 to signal removal). If still active, calculates remaining time / 2 as the alpha value (clamped to 255) and stores at offset 0x9B. Returns 1 to keep entity alive.
0x00CB19301806CEntity__process_damage_queueProcesses the entity's pending damage number queue (linked list at offset 0x2A8). For each expired entry, resolves attacker and target names (with '#' character stripping for anonymized names), formats damage messages using CMessageStringTable (msg IDs 0x644-0x648) based on whether the local player is attacker/target, and dispatches chat messages with color coding (0xFFFF for self-damage, 0xC8C8FF for observed damage). Removes processed entries from the linked list.
0x00CB204090CEntity__send_map_click_commandSends a map click command to the game mode. Converts the entity's world position (X,Z at offsets 0x10, 0x18) to map coordinates via FUN_00cd5230, then dispatches command 0xC with the entity's ID (offset 0x110) and map coordinates to the global game mode handler.
0x00CB20B059CEntity__render_sprite_if_visibleRenders the entity's sprite if it is visible (offset 0xA0 != 0). Calls FUN_00cb35f0 with the view matrix and scale factor, then calls FUN_00cb20f0 for the full render pass with default parameters.
0x00CB20F01842CEntity__render_sprite_fullFull sprite rendering pipeline for entities. On special days (DAT_01737a88==1), loads alternate sprites based on day-of-month (cycles through 3 sprite sets). Transforms entity world position through view matrix, projects to screen coordinates. Iterates through all sprite layers in the animation frame, calling virtual render method for each layer. Handles aura rendering (flag 0x100 = fade gradient, 0x4000 = green tint, 0x40000 = red tint). Applies palette overrides and RSM object height offsets. Updates screen bounding box for UI positioning.
0x00CB28303396CEntity__render_multi_layer_skill_spriteRenders a multi-layered skill effect sprite with up to 8 layers (0-7). Each layer loads different sprite/act resources based on the skill ID (param_3). Layer 0 uses the entity's base sprite, layers 1-3 load numbered variants with job class-specific paths, layer 4+ loads named effect sprites via a giant switch on skill IDs (0x1781-0x179E range - Kagerou/Oboro ninja skills). Handles sprite alignment offsets between layers and applies palette overrides. Projects to screen coordinates and calls the render pipeline for each visible layer.
0x00CB35F0933CEntity__render_shadowRenders the entity's ground shadow. Skips for entity 0x235 (specific NPC), or if not initialized or scale is zero. Loads "shadow.spr"/"shadow.act" resources, projects entity position to screen, computes shadow quad vertices with scale from the shadow sprite dimensions. Applies perspective correction for Z-depth and adds to the render queue. Shadow size scales with entity's Y scale factor (offset 0x54) and the passed param_3.
0x00CB3FA077CEntity__set_animation_speedSets the entity's animation frame speed. Multiplies the input speed by a float value from UISkillWnd for the current action. If the global speed override (DAT_016f7144) is active, further scales by EffectMap__get_time_scale_by_speed. Only applies if the result exceeds a minimum threshold. Stores at offset 0x58.
0x00CB403054CEntity__find_attached_effect_by_idSearches the entity's attached effect list for an effect with a specific ID. Iterates the linked list at offset 0x144, checking each node's effect object (node[2]) at offset 0x168 for a match. Returns the effect object pointer, or 0 if not found.
0x00CB4070129CEntity__apply_costume_garment_changeApplies a costume garment change to the entity. Copies the pending garment type from offset 0x408 to 0x404, clears pending. Resets visibility flags and action completion markers. Maps garment type 1 to sprite ID 0x1104, type 2 to 0x1105, otherwise uses stored garment ID from offset 0x25C. Calls virtual method at vtable+0x54 to load the new garment sprite, then vtable+0x80 to refresh. Sets idle state if not in attack action.
0x00CB4100113CEntity__dispatch_action_by_typeDispatches an entity action by type using a jump table. Validates the action type (param_2) is in range 0x17-0x9F with param_3 == 0, then uses an indexed jump table (at PTR_LAB_00cb4740) to call the appropriate handler. The jump table covers approximately 160 different action types for the entity system.
0x00CB4800406CEntity__process_action_table_entryProcesses an action table entry for the entity. Validates the entity is not the local player (DAT_01733c3c), is not invisible (bit1), not dead (bit6), and not in BG mode (bit14) before dispatching. Uses a jump table indexed by param_3 (range 0-0xA0) to handle specific action types. Falls through to CEntity__dispatch_action_by_type for unhandled cases. The jump table at PTR_LAB_00cbec04 covers entity state transitions, equipment changes, and visual effect triggers.
0x00CBF860183CEntity__handle_marker_placementHandles placement/visibility of ground marker entities. If param_3==1 and param_4==0: sets world position from param_5, calculates Y height via C3dAttr__GetInterpolatedHeight, makes visible (0xA0=1), clears lifetime. Sets color to red (0xFFFF0000) if param_7 or param_8 is non-zero, otherwise white. If param_3==2 and param_4==0: either sets lifetime from param_5/param_6, or hides the marker (0xA0=0) if both are zero.
0x00CBF93058CEntity__load_act_resourceLoads an ACT (animation action) resource file for the entity. Releases the existing resource at offset 0x108 if present, then loads the new one via CResourceMgr__load_resource_by_path and increments its reference count.
0x00CBF970362CEntity__set_action_with_speed_calcSets the entity's current action with full animation speed calculation. Validates action index against the ACT resource frame count (for type 7 entities). Calculates frame speed using UISkillWnd__get_float_value multiplied by optional EffectMap speed. Applies a secondary multiplier from offset 0x64. Clamps minimum to 1.0 or the EffectMap speed. Sets action (offset 0x34), resets frame counter (0x3C=0), clears animation completion flag (0x9D), and resets various sub-animation fields.
0x00CBFAE0286CEntity__set_action_simpleSimplified version of set_action_with_speed_calc. Same animation speed calculation logic but without the initial ACT resource validation. Sets action index, resets frame counter and completion flag, and clears sub-animation fields. Does not reset offset 0x238 or 0x378.
0x00CBFC0063CEntity__set_color_rgba_directDirectly sets the entity's RGBA color components. Each parameter (-1 means skip/unchanged): param_2=R (offset 0x9B), param_3=G (offset 0x9A), param_4=B (offset 0x99), param_5=A (offset 0x98). Values are stored as bytes.
0x00CBFC406144CPlayerEntity__apply_status_flag_effectsProcesses player entity status flags and applies visual effects. 6.1K bytes. Called by CPlayerEntity__initialize_local_player. Compares and extracts individual bit flags (bits 1-25), creates/destroys skill effects, updates status windows, triggers combat animations based on status changes.
0x00CC1490225CEntity__get_attack_animation_resourceGets the appropriate attack animation sprite resource based on action state. For param_2==0xF and param_3==3: cycles through attack animation frames (counter at 0xF7), loading alternate sprite resource (DAT_011a05BC) when counter > 19, resetting at 40. For param_3==0: handles special attack states (offset 0xFE values 1 or 3), cycling through 3 attack animation variants at different rates (counter at offset 0x100/0xFF). Loads resources from paths at DAT_011a054C, 011a0570, 011a0594.
0x00CC158099CEntity__apply_body_rotation_from_statusApplies body rotation offset based on the entity's status flag 0x40 at offset 0xE8. If the flag is set and the rotation index (offset 0xF4) is less than 37, looks up a rotation value from the table at DAT_01388110 and computes an angular offset. Wraps the value to [0, 360) range. Sets the result to param_2 output.
0x00CC15F0323CEntity__calculate_sway_offsetCalculates a swaying/wobbling offset for entity rendering. Increments a rotation counter (offset 0xF8) by 2, wrapping at 360. Manages a sway magnitude counter (offset 0xFA) that increases when idle/walking or in special states, decreases in other action states. The sway is computed from a sine lookup table (DAT_01387FA8) combined with the magnitude, then scaled by camera perspective. Returns the sway amount as a screen-space offset.
0x00CC1740195CEntity__render_status_aura_overlaysRenders additional sprite overlays based on entity status flags. Flag 0x100: renders a fade gradient overlay with color based on concentration level (offset 0xF4, 6 levels). Flag 0x4000: renders a green-tinted overlay (5,5,255). Flag 0x40000: renders a red-tinted overlay (255,5,5). Uses submit_sprite_quad_to_render_queue for the gradient and FUN_00cc1c40 for colored overlays.
0x00CC1810218CEntity__apply_size_modifier_from_statusApplies sprite size modifiers based on entity status flags. Flag 0x10 at offset 0xE8: applies a growth modifier from a table lookup (offset 0xF0 as index into DAT_01387FA8), scaling up to 2x. Flag 0x400: applies a shrink modifier from a similar table (offset 0xF1), reducing to about 0.5x. Both use sine-based interpolation for smooth transitions.
0x00CC18F0263CEntity__apply_rotation_position_offsetApplies a position offset based on the entity's rotation status (flag 0x40 at offset 0xE8). Computes an angular offset from the rotation table at DAT_01388110, then applies sine/cosine displacement to the X/Y screen coordinates (param_3/param_4). Uses different scale factors depending on param_2 (1 = large offset using DAT_01114248, >1 = smaller offset using DAT_010dd24C).
0x00CC1A00210CEntity__get_attack_animation_resource_bVariant B of get_attack_animation_resource. Same cycling logic through attack animation states (offsets 0xFE, 0xFF, 0x100, 0xF7) but loads from different resource paths (DAT_011a05E4, 011a0608, 011a062C, 011a0654). Used for different weapon/class attack animations.
0x00CC1AE0311CEntity__apply_sprite_stretch_from_statusApplies vertical sprite stretching/squishing based on entity status flags. Flag 0x80: stretches sprite vertically using a table-based modifier at offset 0xF4 (phases: growing to max, then shrinking). Flag 0x20: applies a squeeze/shake effect with random jitter (uses rand() for phases 4-33), creating a wobble animation. Both modify the Y bounds passed via param_2/param_3.
0x00CC1C2025CEntity__set_palette_and_typeSets the entity's palette type byte at offset 0x305 and palette ID at offset 0x308.
0x00CC1C40213CEntity__render_colored_aura_overlayRenders a colored aura overlay on the entity. Uses the aura intensity byte at offset 0xF6 to compute the color: values 0-10 use direct intensity*15, values 11-20 use fixed intensity with color offset, values 21-50 use a fading formula. Combines with R/G/B params (param_3-5) into an ARGB color at param_2+0x18, then submits two sprite quads for the overlay effect. Only renders if intensity < 51.
0x00CC1D2028CEntity__update_max_hp_if_higherUpdates the entity's max HP value at offset 0x3C8 only if the new value (param_2) is greater than the current value or if the current value is less than 1. Ensures max HP never decreases except when explicitly reset.
0x00CC1D40230CEntity__set_weapon_spriteSets the entity's weapon sprite. Clears max HP tracking value at offset 0x3C8 (same field as update_max_hp_if_higher). If this is the local player (DAT_01733c3c), calls set_selection_index_by_slot to update the player's weapon display. Otherwise stores weapon ID by slot: param_3==0 at offset 0x3B8, ==1 at 0x3BC, ==2 at 0x3C0. If weapon ID > 0, loads the weapon sprite via vtable+0x54 and refreshes. If <= 0, loads either costume garment sprite (0x1104/0x1105) or the effective job sprite, then refreshes.
0x00CC1E3063CEntity__set_shield_spriteSets the entity's shield/left-hand sprite. Clears flag at offset 0x3C8, stores shield ID at offset 0x3C4. If ID <= 0, resolves to the effective job ID instead. Calls vtable+0x54 to load the sprite and vtable+0x3C to refresh the current action state.
0x00CC205016CEntity__set_field_2e4Simple setter that stores a value at entity offset 0x2E4.
0x00CC2060185CEntity__set_shield_and_send_packetSets the entity's shield ID (offset 0x2E8) and sends a packet if conditions are met. Checks against special job IDs (0x4F2D = Poring, 0x2D2 = Wedding/Xmas). For other jobs, checks if the entity is a player class (via FUN_00dfa600, thunk_to_00dfbce0, FUN_00e1dc00) before sending the shield display packet via CPacketStream.
0x00CC2120193CEntity__update_sprite_nameUpdates the entity's sprite name/path by computing it from the effective job ID and various entity properties. Calls virtual methods for getting render info, then FUN_00ddc1d0 to build the sprite name string, and assigns it to the entity's internal string if it differs from the current one.
0x00CC220056CEntity__set_bounding_boxSets the 5-field bounding box or rectangle data at the beginning of the entity structure. Copies 5 values directly from parameters to the first 5 dwords.
0x00CC2240250CEntity__insert_or_update_map_entryInserts or updates an entry in the entity's map (red-black tree at offset 0x11C). Uses tree_lower_bound to find the insertion point. If the key doesn't exist, allocates a new 0x20-byte node and inserts it. Sets the node's data fields (offset 0x18, 0x1C) from params.
0x00CC2340570CEntity__set_mounted_job_and_update_spriteSets the entity's mounted/costume job ID (offset 0x25C) by mapping the input job ID to its mounted/riding variant. Contains a large switch mapping standard 4th jobs (0xFF0-0x1010), Doram classes, baby classes, etc. to their ride variants. After mapping, checks for costume override and calls the sprite load virtual function, then clears status effects and plays idle animation.
0x00CC26F0129CEntity__notify_minimap_positionNotifies the minimap UI of the entity's position. Checks if the minimap option (0x77) is enabled and the minimap window is visible. Converts the entity's world position (offsets 0x10, 0x18) to cell coordinates via CGameMode__world_to_cell, then calls the minimap's update virtual method with the cell position and params.
0x00CC278057CEntity__set_animation_speed_scaledSets the entity's animation speed (offset 0x58) with optional effect map time scaling. If the global effect map flag is set, multiplies the speed by the effect map's time scale. Only applies if the final speed exceeds a global minimum threshold.
0x00CC27C075CEntity__set_bone_transformSets a bone transform (6 values / 24 bytes) for the entity. If param_3=0, writes to offset 0x318 (first bone slot). If param_3=1, writes to offset 0x348 (second bone slot). Copies all 6 dwords from the input array.
0x00CC281016CEntity__set_hair_colorSets the entity's hair color at offset 0x2C8.
0x00CC28201255CEntity__update_spatial_quad_treeUpdates the entity's spatial representation in the quad tree for click-selection and visibility. Computes the entity's bounding box with a height offset based on job type (player, monster, NPC, homunculus, etc.). Ensures minimum dimensions based on a near-clip threshold. Creates a 0x28-byte quad tree entry with the bounding rect, entity ID, job ID, and type flags, then inserts it. Calls the entity's virtual update method at the end.
0x00CC2D5075CEntity__set_bone_offsetSets a bone offset (6 values / 24 bytes) for the entity. If param_3=0, writes to offset 0x330 (first bone offset slot). If param_3=1, writes to offset 0x360 (second bone offset slot).
0x00CC2DA019CEntity__set_sexSets the entity's sex/gender at offset 0x260. Masks to bit 0 only (0 or 1).
0x00CC2E0058CEntity__load_texture_resourceLoads a texture resource by path. Releases the old resource reference at offset 0x104 if one exists, then loads the new resource via CResourceMgr and stores the pointer. Increments the reference count on the new resource.
0x00CC2E503533CEntity__change_action_stateLarge entity action state machine. Changes entity action/animation state based on param_2 (action ID). Handles idle(0), walk(1), sit(3), dead(4), attack(7/9), casting(0x10-0x14), skill effects(0x15-0x19), emotion/pose states(0x1a-0x51). Sets animation parameters, creates skill effects, manages BGM registration, and updates timing via timeGetTime. param_3=1 means snap to stored position.
0x00CC3DC029CEntity__set_scale_xySets entity scale X (offset 0xac) and Y (offset 0xb0) from float parameters.
0x00CC3DE036CEntity__set_color_rgbCopies a 3-component vector (RGB color or 3D vector) from param_2 into entity fields at offsets 0x8c, 0x90, 0x94.
0x00CC3E1058CEntity__reset_attack_stateResets entity attack/interaction state. Clears target ID (offset 0x110 = -1), clears flags at 0x2b8 and 0xa4, sets a 510ms timer (0x1fe) at offset 0x2dc using timeGetTime. Ensures timer is never 0.
0x00CC3E50453CEntity__set_elemental_orbit_effectSets elemental orbit visual effect on entity. Removes existing orbit effects (IDs 0x2e1-0x2e0, 0x2df), then creates a new orbit effect based on element type (1=fire/0x2e1, 2=water/0x2e2, 3=wind/0x2df, 4=earth/0x2e0, 5=generic/0xe4). Uses CEffectManager to create and CEffectOrbit to set orbit count from param_3.
0x00CC401596CEntity__create_elemental_orbit_effect_fragmentCode fragment (mid-function entry) that maps element IDs to effect IDs (1=0x2e1, 2=0x2e2, 3=0x2df, 4=0x2e0, else=0xe4) and calls CEntity__create_skill_effect. Part of the elemental orbit effect creation flow.
0x00CC40C016CEntity__set_job_idSets the entity's job/class ID at offset 0x404.
0x00CC40D0260CEntity__enter_dead_stateTransitions entity to dead state (state 3). Saves previous state, sets action to 0x51 (death animation), marks entity as dead, updates name string using job ID and related info via FUN_00ddc1d0. Only acts if not already in state 3.
0x00CC41E036CEntity__notify_emotion_to_uiNotifies the UI manager about an entity emotion. Gets the mode manager via get_field4_if_mode1, then dispatches message 0xd (emotion) with the entity's value at offset 0x110.
0x00CC427077CEntity__update_screen_positionProjects entity's 3D world position to 2D screen coordinates using CRenderPipeline__project_world_to_screen_2d, then calls the entity's virtual method at offset 0x18 with the resulting screen x,y.
0x00CC4640135CEntity__update_npc_chat_positionUpdates NPC chat bubble position for the entity. Checks if entity has valid body parts (vtable+200 call) and is a valid job type, then dispatches to either CBGMManager__toggle_npc_chat_with_params (for local player) or CBGMManager__try_toggle_npc_chat_with_range_check (for other entities).
0x00CC46D0554CEntity__update_tetra_vortex_effectUpdates Tetra Vortex skill effect on entity. param_2=element index, param_3=action (1=create, else=release), param_4=element type. Creates or releases elemental sprites (effect IDs 0x4ee-0x4f1) representing fire/water/wind/earth. Uses RTDynamicCast to check effect type, CEffectTetraVortex to manage element positions and orbit angles.
0x00CC4C5095CEntity__clear_elemental_spirit_effectsRemoves elemental spirit visual effects from entity. Maps spirit IDs (0x3ca=wind/0x2df, 0x3cb=fire/0x2e1, 0x3cc=earth/0x2e0, 0x3cd=water/0x2e2) to effect IDs and calls the entity's remove-effect virtual method (0x6d). Clears 6 spirit-related fields (offsets 0x56-0x5b).
0x00CC8230325CEntity__process_attack_actionProcesses attack actions for an entity. Handles multi-hit attacks by scheduling damage events with timing. Determines attack type from param_3 data, finds target entity, faces toward target, sets action state. For special jobs (Dorams, Homunculus, etc.), applies special effect IDs (0x1b2, 0x974). Schedules multi-hit damage events with frame-based timing from DAT_0135ed10.
0x00CC89704415CEntity__process_ground_skill_effectProcesses ground-targeted skill visual effects. Large switch on skill ID: creates appropriate visual effects at the target ground position. Handles many skills including Fire Wall (0x1e3), Meteor Storm (0x301), Jack Frost (0x98f), Land Protector (0x306), various trap skills. Converts cell coordinates to world position, gets interpolated height, creates effects via CEffectManager or FUN_00cdfa00 with skill-specific timing and parameters.
0x00CC9F201105CEntity__process_damage_number_displayCreates floating damage number effects on an entity. Splits damage value into individual digits (supports damage abbreviation mode 0x10b for K/M suffixes). Removes existing damage displays of the same type (0x16). Creates per-digit effect objects via FUN_00e4a550, positions them vertically, adds to entity's attached effect list. Handles large damage display (100M+) differently.
0x00CCA3802105CEntity__process_skill_actionProcesses a skill action on an entity. Large handler for skill effects triggered by combat. Handles various action types (4/5/6/8/9/0xd/0xe) with skill-specific logic. For type 5/0xe (projectile/targeted skills), creates timed events with duration. Manages facing direction, skill effects, sound effects for specific skills (ABR summons). Calls CEffect handlers for custom skill behavior, creates skill effect objects at target positions.
0x00CCC3F0189CEntity__clear_damage_number_effectsRemoves all attached damage number effects (type 0x16) from entity's effect list. Iterates through the linked list at offset 0x3b0, clears each effect with type 0x16 by detaching it, sending destroy message (0x18), removing from list, and unregistering from BGM manager.
0x00CCC4B0339CEntity__schedule_skill_projectileSchedules a skill projectile event on a target entity. Checks if skill should bypass (FUN_00ccc890), computes travel time from param_4, gets timing offset, builds event structure with skill ID, effect IDs, and duration. Dispatches event via target entity's virtual method. Handles null target for certain skills (0x992, 0x2e3, 0x13a6, 0x9ad).
0x00CCC6E0259CEntity__schedule_skill_impactSchedules a skill impact event on target entity. Similar to schedule_skill_projectile but uses action type 0x61 instead of 0x60, and doesn't look up custom effect/end IDs (uses -1). Handles null target for skills 0x992, 0x2e3.
0x00CCCAF048CEntity__set_attack_speedSets entity attack animation speed. Clamps param_2 to DAT_0135f1e0 max value, divides by a constant to convert to float speed factor, stores in both offsets 0x64 and 0x68.
0x00CD3A30219CEntity__get_display_name_for_stateReturns entity's display name based on current state. If state is 2 (walking) or 0x18, retrieves name from state data at offset 0x31c. Otherwise returns the string at offset 0x344 if it exists, or NULL.
0x00CD3E90459CEntity__serialize_entity_data_shortSerializes entity data into a short (0x3f byte) packet buffer. Packs entity ID, job ID, direction, head direction, shield, weapon type, hair style/color, body part info, equipment IDs, name string. Used for entity spawn/appearance packets for non-moving entities.
0x00CD41E01550CEntity__serialize_entity_spawn_packetSerializes entity data into a spawn packet buffer. For walking entities (state 1), creates packet 0x856 (0x4b bytes) with position interpolation from timeGetTime. For non-walking entities, creates packet 0x857 (0x45 bytes). Packs entity ID, job, equipment, stats, position (with sub-cell precision), direction, name string, and optional extended data (HP/body info).
0x00CD47F01616CEntity__serialize_entity_move_packetSerializes entity data into a move/update packet with custom packet ID (param_3). For walking entities, creates larger packet (0x5a bytes) with interpolated position and weapon range data. For non-walking entities, creates 0x54 byte packet. Includes all equipment, stats, position (with sub-cell precision), direction, name, and optional extended data.
0x00CD5550547CEntity__get_location_stringBuilds a "Location: mapname (x, y)" string for the entity. Gets player position, converts to cell coordinates via CGameMode__world_to_cell, truncates map name to remove extension (last 4 chars), formats into output string param_2.
0x00CD5780119CEntityMap__contains_entity_idChecks if an entity ID exists in the entity hash map at offset 0x62c. Uses FNV-1a hash on the 4 bytes of the ID. Returns true if found, false otherwise.
0x00CEC930177CEntity__reset_network_stateResets entity network/state fields to defaults. Clears multiple fields: action IDs, timers, string buffers (via STL_lib_func), status flags. Sets some fields to -1 (0xFFFFFFFF) as sentinel values. Called during entity cleanup or respawn.
0x00CECB1067CEntity__set_name_color_from_entitySets entity name color based on another entity's info. Reads entity ID from param_2+0x110, resolves effective job ID, then calls get_entity_name_color to determine the display color. Stores the color at param_1+0x90 and clears param_1+0x94.
0x00CECE1030CEntity__set_action_infoSets entity action info. Stores param_2 at offset 0x308 and param_3 at offset 0x30C. Only writes if param_3 != -1 (sentinel check).
0x00CED190200CEntity__toggle_hashmap_entryToggles an entity in a hash map. If param_3==1, emplaces param_2 into unordered_map. Otherwise, finds and removes param_2 from the hash map using FNV-1a hash on the 4-byte key. Manages bucket chain pointers during removal.
0x00CED2E079CEntity__play_sound_at_positionPlays a sound at a 3D position. Calls virtual function at vtable+8 on the sound object at param_1+0xD4, passing position (param_2, param_3) and distance param_4 with sign-extended 64-bit values.
0x00CED520326CEntity__send_keepalive_tickSends a keepalive tick packet (0x360) to the server. Rate-limited by DAT_0135f6d0 interval check using timeGetTime(). Includes current timestamp in packet. If network logging is enabled (DAT_0171f100), appends timestamp to a linked list for latency tracking.
0x00CF007018CEntity__get_sso_string_ptrReturns pointer to SSO string data at entity offset 0x4DC. If string capacity > 15 (heap-allocated), returns the heap pointer; otherwise returns the inline buffer address.
0x00D042F0206CEntitySpawnData__zero_init_ctorDefault constructor that zero-initializes a ~0x7C byte record. Clears 28+ DWORD fields spanning offsets 0x04-0x78. No STL strings or complex types - pure POD initialization. Used as a blank template for data records.
0x00D05570248CEntityRecord__copy_assignCopy-assigns a 0xb4-byte record containing 7 STL strings at offsets 0x04, 0x1c, 0x34, 0x4c, 0x64, 0x7c, 0x94 plus scalar fields at 0xac and 0xb0. First byte is a type flag.
0x00D55AB02355CEntity__apply_status_effect_visualApplies visual status effects to an entity. Handles effect timers, skill effects (including status bars), special entity palette changes, and dispatches through jump tables for effect-specific rendering. Manages effect lifecycle (creation/removal) based on timer expiry and effect type.
0x00D591A03253CEntity__apply_status_effect_flagsApplies persistent status effect visual flags to an entity based on a bitfield (param_4). For player entities: checks each bit flag and creates/removes skill effects accordingly (hiding 0xa6, stone curse 0xcb, frozen 0xfe, etc). For the local player: additionally manages effect timers and can set entity coloring/transparency for effects like hiding/cloaking.
0x00D5B030902CEntity__handle_skill_use_on_targetHandles skill use on a target entity. Looks up source and target entities, processes skill animation and cast time, creates visual effects (including special effects for skill 0xA04/0x1479), dispatches through CMapEventDispatch for skill-specific logic, handles NPC/monster attack animations with speed scaling, and triggers skill effect callbacks.
0x00D823035thunk_to_CEntity__create_skill_effect_00d82303Thunk that calls FUN_00cadd60 without returning
0x00D8B340151CItemSprite__ctorCItemSprite constructor. Calls CSprite__ctor, sets vtable to PTR_FUN_011a3f90. Initializes string field at offset 0x158, sets visibility flags at 0xA4 to 0x101, scale at 0x50 to 1.0f (0x3f800000), color at 0x84 to 0xFFFFFF00.
0x00D8B3E095CItemSprite__dtorCItemSprite destructor. Sets vtable to PTR_FUN_011a3f90, destroys string field, then calls CSprite__dtor.
0x00D8B440119CItemSprite__scalar_deleting_dtorCItemSprite scalar deleting destructor. Sets vtable, destroys string and CSprite base. If param_2 bit 0 set, frees 400 bytes of memory.
0x00D8B5D0255CItemSprite__update_gravity_animationUpdates item sprite gravity/drop animation. Calculates elapsed time from timeGetTime, applies parabolic trajectory (quadratic equation) to Y position. Checks ground collision via C3dAttr__GetInterpolatedHeight; clamps to ground level and clears gravity flag on impact.
0x00D8B6D067CItemSprite__renderRenders item sprite if visible (offset 0xA0 flag). Draws shadow scaled by sprite scale * DAT_0112fd80, then renders full sprite.
0x00D8B9381061CEntity__load_item_sprite_and_create_effectsWARNING (jumptable): Unable to track spacebase fully for stack
0x00D8BE00532CItemSprite__add_to_quadtreeAdds item sprite to spatial quadtree for culling. Checks visibility flag at offset 0xA5. Lazily calculates near clip distance (DAT_01730448). Allocates 0x28-byte bounding box entry with min/max coords from param_2, expands to minimum near-clip size, then inserts via CQuadTreeNode__insert_object. Calls vtable method 0x18 (render setup).
0x00D8C6A0422CGroundItemEffect__ctorCGroundItemEffect constructor. Extends CEffectPlayer. Sets vtable to PTR_FUN_011a3fd4. Initializes large buffer (0x2E7C bytes) at offset 0x4068 to zero. Sets timer to timeGetTime()+12000ms, stores DAT_016d3b08 flag then clears it. Initializes strings, counters, and render state fields.
0x00D8C990185CGroundItemEffect__dtorCGroundItemEffect destructor. Sets vtable to PTR_FUN_011a3fd4, restores DAT_016d3b08 flag. Clears 0x14 vector, destroys string, clears two 0x80 vectors, destroys internal objects, then calls CEffectPlayer__dtor.
0x00D8CC60209CGroundItemEffect__scalar_deleting_dtorCGroundItemEffect scalar deleting destructor. Runs full destructor chain, then frees 0x6F7C bytes if param_2 bit 0 set.
0x00DA0DE0115CItemSprite__ctor_with_texturesCItemSprite constructor with textures. Initializes from CSprite base, sets vtable to PTR_FUN_011a4750, loads texture and act resources.
0x00DA0E60804CEntityClone__ctor_from_entityCEntityClone constructor. Clones an entity's visual state - copies sex, job, head, equipment, position, name. Loads sprite resources. Used for preview/shadow rendering.
0x00DA121084CGroundItemSprite__ctorCGroundItemSprite constructor. Initializes from CSprite, sets vtable for ground item display.
0x00DA1270508CEntityPreview__ctor_from_entityCEntityPreview constructor from entity. Clones entity appearance including sex, job, equipment, position, head direction. Checks for alternate sprite resources. Sets identity/phantom flags.
0x00DA1470814CEntityPreview__ctor_extendedCEntityPreview constructor extended variant. Similar to ctor_from_entity but with additional sprite initialization.
0x00DA17A0843CEntityPreview__ctor_fullCEntityPreview full constructor. Most complete initialization variant with all entity fields.
0x00DA1AF0435CEntityPreview__ctor_with_nameCEntityPreview constructor with name. Initializes entity preview including character name string.
0x00DA1CB094CEntityPreview__ctor_simpleCEntityPreview simple constructor. Minimal initialization variant.
0x00DA1D10156CEntityPreview__ctor_baseCEntityPreview base constructor. Core initialization shared by all CEntityPreview constructors.
0x00DA1DB0122CEntityPreview__ctor_base_extendedCEntityPreview base extended constructor variant.
0x00DA1E30216CEntityPreview__ctor_with_spriteCEntityPreview constructor with sprite. Initializes preview with pre-existing sprite data.
0x00DA1F1071CItemSprite__dtor_00da1f10CItemSprite destructor. Resets vtable to PTR_FUN_011a4750, calls CSprite__dtor_base.
0x00DA1F6071CEntityClone__dtorCEntityClone destructor. Resets vtable to PTR_FUN_011a47c8, calls CSkillUnit__dtor.
0x00DA2000132CGroundItemSprite__dtorCGroundItemSprite destructor. Resets vtable, notifies game mode about removed ground item at position (fields 0x57, 0x58), calls CSprite__dtor.
0x00DA209071CEntityPreview__dtorCEntityPreview destructor. Resets vtable, calls cleanup via FUN_00da2220.
0x00DA20E071CEntityPreview__dtor_variantCEntityPreview destructor variant. Alternate cleanup path.
0x00DA213071CEntityPreview__dtor_baseCEntityPreview base destructor. Minimal cleanup.
0x00DA218071CEntityPreview__dtor_extendedCEntityPreview extended destructor.
0x00DA21D071CEntityPreview__dtor_with_spriteCEntityPreview destructor with sprite cleanup.
0x00DA2220146CEntityPreview__dtor_cleanupCEntityPreview cleanup. Destroys STL strings and calls CSprite base destructor.
0x00DA22C071CEntityPreview__dtor_fullCEntityPreview full destructor. Complete cleanup of all fields.
0x00DA231095CEntityPreview__dtor_with_sprite_stringCEntityPreview destructor for the "with_sprite" variant. Sets vtable to PTR_011a4614 (matches ctor_with_sprite), destroys embedded STL string member, calls CSprite__dtor_base.
0x00DA237099CItemSprite__scalar_deleting_dtor_00da2370CItemSprite scalar deleting destructor. Calls dtor, optionally frees memory (0x138 bytes) if flag bit 0 is set.
0x00DA23E099CEntityClone__scalar_deleting_dtorCEntityClone scalar deleting destructor.
0x00DA24C0156CGroundItemSprite__scalar_deleting_dtorCGroundItemSprite scalar deleting destructor. Sets vtable to PTR_011a45d8 (matches CGroundItemSprite__ctor), notifies game mode of removed ground item at position fields 0x57/0x58, calls CSprite__dtor, frees 0x168 bytes if flag set.
0x00DA26B099CEntityPreview__scalar_deleting_dtor_with_nameCEntityPreview scalar deleting destructor for the "with_name" variant. Sets vtable to PTR_011a4c40 (matches ctor_with_name), calls CEntityPreview__dtor_cleanup, frees 0x448 bytes if flag set.
0x00DA272099CEntityPreview__scalar_deleting_dtor_simpleCEntityPreview scalar deleting destructor for the "simple" variant. Sets vtable to PTR_011a4bc8 (matches ctor_simple), calls CSprite__dtor_base, frees 0x140 bytes if flag set.
0x00DA279038CEntityPreview__scalar_deleting_dtor_baseCEntityPreview scalar deleting destructor for the "base" variant. Sets vtable to PTR_011a4650 (matches ctor_base), calls CEntityPreview__dtor_cleanup, frees 0x440 bytes if flag set.
0x00DA27C099CEntityPreview__scalar_deleting_dtor_base_extendedCEntityPreview scalar deleting destructor for the "base_extended" variant. Sets vtable to PTR_011a4c04 (matches ctor_base_extended), calls CSprite__dtor_base, frees 0x140 bytes if flag set.
0x00DA2830119CEntityPreview__scalar_deleting_dtor_with_spriteCEntityPreview scalar deleting destructor for the "with_sprite" variant. Sets vtable to PTR_011a4614 (matches ctor_with_sprite), destroys STL string, calls CSprite__dtor_base, frees 0x170 bytes if flag set.
0x00DA28B0566CEntity__update_costume_headgear_effectUpdates costume headgear visual effect on entity. Checks if entity's job has a costume headgear entry in the tree. If headgear ID changed, removes old effect and creates new one. Adds effect to entity's effect list at +0x3b0. Handles headgear IDs < 6 differently (offset 0x24 vs 0x36).
0x00DA2B0051CEntity__get_movement_deltaGets entity movement delta as (deltaX, deltaY). Computes difference between current position (+0x4ec,+0x4f0) and previous position (+0x4e4,+0x4e8).
0x00DA2BF053CEntity__notify_renderer_positionNotifies renderer of entity position. Gets render interface via get_field4_if_mode1, then calls virtual method at vtable+0x3c with entity's sprite coordinates from +0x15c and +0x160.
0x00DA2C8067CEntity__unregister_ui_windowsUnregisters two UI windows from entity. Calls CUIWindowMgr__unregister_window for windows at offsets +0x42c and +0x430, then nulls the pointers.
0x00DA2D2031CEntity__start_animation_timerStarts entity animation timer. Sets flag at +0xa0 to 1, clears +0xa4, and records current timeGetTime() at +0x8c.
0x00DA2D4041CEntity__reset_and_start_animationResets and starts entity animation. Sets +0xa0=1, +0x9c=1, clears +0x138 (animation state), records timeGetTime() at +0x8c.
0x00DA2D8031CEntity__start_animation_timer_00da2d80Starts entity animation timer variant. Sets +0xa0=1, clears +0xa4, records timeGetTime() at +0x8c. Identical to 00da2d20.
0x00DA2DA031CEntity__start_animation_timer_00da2da0Starts entity animation timer variant. Sets +0xa0=1, clears +0xa4, records timeGetTime() at +0x8c. Identical to 00da2d20.
0x00DA2DC031CEntity__start_animation_timer_00da2dc0Starts entity animation timer variant. Sets +0xa0=1, clears +0xa4, records timeGetTime() at +0x8c. Identical to 00da2d20.
0x00DA2DE031CEntity__start_animation_timer_00da2de0Starts entity animation timer variant. Sets +0xa0=1, clears +0xa4, records timeGetTime() at +0x8c. Identical to 00da2d20.
0x00DA2E1077CEntity__init_ui_and_headgear_stateInitializes entity UI and headgear state. Clears UI window pointers (+0x42c, +0x430), resets timer state (+0x420), records timeGetTime at +0x424, clears headgear effect pointer (+0x434), sets headgear ID to 9999 (none).
0x00DA2E90102CEntity__init_sprite_display_paramsInitializes entity sprite display parameters. Sets height to 100.0f (+0x150), scale to 1.0f (+0x15c), dimensions to 3x3 (+0x154/0x158), computes sqrt(18.0) for diagonal (+0x160), and sets timestamp to 4 seconds ago (+0x164).
0x00DA2F00146CEntity__update_animation_frameUpdates animation frame based on elapsed time. Calculates frame progress from timeGetTime delta, gets frame count from sprite, sets current frame index modulo total frames, plays animation sounds. Returns true if animation cycle is complete.
0x00DA2FA099CEntity__check_map_flags_and_advance_timerChecks map flags and advances entity timer. Looks up entity's map by ID, checks flag 0x10 in map data. If set, applies flag 0x10 to entity and sets value 0x2d at +0xf0. Then checks if animation counter exceeds threshold to advance state.
0x00DA3010152CEntity__update_death_fadeout_animationUpdates death fadeout animation. Calculates elapsed time, gets virtual frame offset, sets last frame. Applies fading alpha (decreasing over time) via CEntity__set_color_rgba_direct. Returns true while animation is still playing.
0x00DA30B0246CEntity__update_jump_animationUpdates entity jump animation. Calculates parabolic jump height from elapsed time. In first half, applies upward arc; in second half, applies downward arc with position offset. Uses renderer virtual call at vtable+0x3c for position updates. Returns 0 when jump duration exceeded.
0x00DA31B0125CEntity__update_hit_stun_timerUpdates hit stun timer for entity. Increments counter at +0x454. At count 0x6e, creates skill effect 0x319. After count 0x69, periodically (every 4th tick) subtracts animation threshold from timer at +0x98. Returns true if timer >= threshold at +0x444.
0x00DA3240105CEntity__check_map_flags_and_advance_counterChecks map flags and advances entity movement counter. Similar to check_map_flags_and_advance_timer but increments counter at +0x50c. Checks map flag 0x10 for special movement type. Returns true if timer >= threshold at +0x4fc.
0x00DA32B0125CEntity__update_hit_stun_with_counterUpdates hit stun with movement counter at +0x50c. At count 0x6e, creates skill effect 0x319. After count 0x69, periodically subtracts threshold. Returns true if timer >= threshold at +0x4fc.
0x00DA33601255CEntity__update_idle_state_mainMain idle state update for entities. Handles fade alpha, special job types (0x2d/0x8b skip, 0x68 homunculus periodic effects, 0x6f mercenary). Manages AI scripts (AI.lua / USER_AI), copies AI scripts on first use if custom AI enabled. Updates HP bar, costume headgear effects, overhead UI positions, and entity color based on state flags.
0x00DA3980220CEntity__update_skill_cast_animationUpdates skill casting animation. Calculates Y offset based on elapsed time, applies fading alpha. Handles scale adjustment with clamping to 1.0f minimum. Returns true while animation duration is within bounds.
0x00DA3A60588CEntity__update_approaching_targetUpdates entity approaching a target. Calculates distance to camera target, computes movement direction, adjusts speed based on X/Y ratio. When close enough and timer interval elapsed, calls CAntiCheat__full_sweep with position delta for server-side validation.
0x00DA3CB034CEntity__apply_state_color_overrideApplies color override based on entity state type. For states 7-10, 13-14 (dead/sitting variants), checks game option 0x10a and applies either fixed alpha 0x3a or entity's stored alpha. Uses entity RGBA values at +0x98-0x9b.
0x00DA3DF0228CEntity__update_overhead_ui_and_hp_barUpdates overhead UI window positions and HP bar. Positions two UI windows (+0x42c, +0x430) relative to entity's screen Y coordinate, applying camera-based scaling. Then calls CEntity__update_hp_bar_display.
0x00DA3EE0105CEntity__trigger_periodic_skill_effectTriggers periodic skill visual effect for entity. Checks if interval (+0x294 seconds) has elapsed since last trigger (+0x424). When interval expires, resets timer and creates skill effect using ID at +0x174.
0x00DA3F50114CEntity__send_click_position_to_serverSends entity's clicked position to server. Converts world coordinates (+0x10, +0x18) to cell coordinates via FUN_00cd5230. Skips sending for job IDs 0x2d (warp portal), 0x6f (mercenary), 0x8b. Calls server command 0xc with entity ID and cell coords.
0x00DA3FD0304CEntity__render_ground_skill_unitRenders a ground-placed skill unit entity. Checks 3 visibility conditions (FUN_00df9880/99d0/9710). If visible and active, renders shadow (except for states 6/3), then renders as restricted sprite, skill effect with temp maps, or full sprite depending on flags.
0x00DA410065CEntity__render_simple_with_shadowSimple render function that draws shadow and full sprite. Only renders if entity is visible (+0xa0 != 0). Renders shadow with scale from +0x50, then full sprite with animation state from +0x138.
0x00DA4160346CEntity__render_npc_or_monsterRenders NPC or monster entity. Checks visibility, handles special job ID range 0x1781-0x179e (multi-layer skill sprites) differently with alpha check. For normal monsters/NPCs, renders shadow (except states 6/3) and sprite with monster/NPC flag from is_monster_or_npc_job_id.
0x00DA42C0126CEntity__render_skill_effect_unitRenders a skill effect unit entity. Checks 3 visibility conditions, then if entity is visible and has sprite flag, renders via CSkillEffect__render_with_temp_maps. Otherwise falls back to screen position update only.
0x00DA4340368CEntity__render_ground_skill_unit_with_map_checkRenders ground skill unit with map flag check. Like render_ground_skill_unit but first checks map flags via CBGMManager for flag 0x10. Same visibility/rendering logic with restricted sprites and skill effects.
0x00DA44B025CEntity__render_sprite_full_wrapperSimple wrapper that calls CEntity__render_sprite_full with param, flag=1, extra=0.
0x00DA44D0515CEntity__render_entity_by_job_typeRenders entity based on job type. Handles warp portal (0x2d) with world-to-screen projection and shadow, mercenary (0x6f) with dimension-based bounds, homunculus/elemental (0x68/0x8b) as no-render. Default handles monster/NPC with death state check (0xb8), multi-layer skill sprites (0x1781-0x179e), and normal sprites.
0x00DA4970138CEntity__handle_spawn_actionHandles entity spawn action (type 0xe, subtype 0). Sets position from param_5, marks visible, sets color based on param_7/param_8 (red tint for nonzero), records timestamp. Otherwise delegates to null_stub_00cbf920.
0x00DA4A0089CSkillUnit__dispatch_action_with_tableDispatches skill unit actions via jump table. For param_3==0 and param_2 < 4, uses jump table at DAT_00da4ac0. Otherwise delegates to CSkillUnit__dispatch_action.
0x00DA4B10213CEntity__handle_spawn_invisibleHandles entity spawn as initially invisible (type 0xe, subtype 0). Sets position, marks invisible (+0xa0=0), records timestamp, sets duration to 30 (+0x158=0x1e). Converts world coords to cell coords and halves them for +0x15c/+0x160. Otherwise delegates to CEntity__dispatch_action_by_type.
0x00DA4BF089CEntity__dispatch_action_with_tableDispatches entity actions via jump table. For param_3==0 and param_2 < 4, uses jump table at DAT_00da4cb0. Otherwise delegates to FUN_00da4ef0 (entity action dispatch).
0x00DA4EF01774CEntity__handle_entity_action_dispatchMain entity action dispatcher. For action type 4 (spawn entity data), calls CEntity__process_action_table_entry, handles state-dependent body sprite assignment, sets visibility via FUN_00dfbe10, and calls virtual method 0xc4. For action type 0x22, creates overhead UI widgets (multi-column or themed) based on entity state (7-14), sizes/positions them relative to entity screen coords. Otherwise delegates to process_action_table_entry.
0x00DA5610194CEntity__handle_skill_cast_spawnHandles skill cast spawn action (type 0xe, subtype 0). Sets position from param_5, adjusts Y by subtracting DAT_010e9954, marks visible, clamps animation frame 0-9, stores scale as 5.0f. Ignores type 0x16 silently. Otherwise delegates to null_stub.
0x00DA56E0281CEntity__handle_approaching_target_spawnHandles approaching target spawn action (type 0xe, subtype 0). Copies string from param_5+0x50, loads position/dimensions/scale from param_5 offsets, computes diagonal distance from width/height, allocates timer value. Otherwise delegates to null_stub.
0x00DA580016CEntity__set_field_4e0Sets byte field at +0x4e0 on entity.
0x00DA581016CEntity__set_field_4dcSets dword field at +0x4dc on entity.
0x00DA5820124CEntity__load_sprite_resourcesLoads sprite and act resources for entity. Calls FUN_00cc2340 for sprite loading, FUN_00cc2da0 for act loading. Clears field +0x48, checks if job ID has override name via ret_zero_00dfa150 and if so copies name string.
0x00DA58A0271CEntity__load_body_sprite_by_job_idLoads body sprite by job ID. Sets +0x10c to job ID if NPC or default monster. Gets scale from FUN_00de0a70. Formats sprite/act paths based on entity type: NPC, skill unit (0x1781-0x179e), homunculus (0x1771-0x17a4), or default monster. Loads both .spr and .act files.
0x00DA59B0261CEntity__set_entity_stateMain entity state setter. Handles all state transitions by job type. Warp portals (0x2d) set bounding box and create warp effect. Homunculus (0x68) adjusts Y position. Mercenary (0x6f) doubles dimensions. Default entities handle states: 0=idle with sitting check, 1=walking, 2=attacking with random variants, 3=dead, 4=skill use, 7=special states, 10=petrify. Updates animation frame offset and records timestamp.
0x00DA627016CEntity__set_vtable_011a4f04Sets vtable pointer to PTR_FUN_011a4f04.
0x00DA628016CEntity__set_vtable_011a4f20Sets vtable pointer to PTR_FUN_011a4f20.
0x00DA629016CEntity__set_vtable_011a4f3cSets vtable pointer to PTR_FUN_011a4f3c.
0x00DA62A016CEntity__set_vtable_011a4f58Sets vtable pointer to PTR_FUN_011a4f58.
0x00DA62B016CEntity__set_vtable_011a4f74Sets vtable pointer to PTR_FUN_011a4f74.
0x00DA62C016CEntity__set_vtable_011a4f90Sets vtable pointer to PTR_FUN_011a4f90.
0x00DA62D016CEntity__set_vtable_011a4facSets vtable pointer to PTR_FUN_011a4fac.
0x00DA62E022CEntity__init_vtable_011a4fc8_with_fieldInitializes object with vtable PTR_FUN_011a4fc8 and copies field +4 from this to param_2[1].
0x00DA630022CEntity__init_vtable_011a4fe4_with_fieldInitializes object with vtable PTR_FUN_011a4fe4 and copies field +4 from this to param_2[1].
0x00DA632022CEntity__init_vtable_011a5000_with_fieldInitializes object with vtable PTR_FUN_011a5000 and copies field +4 from this to param_2[1].
0x00DA634016CEntity__set_vtable_011a4e08Sets vtable pointer to PTR_FUN_011a4e08.
0x00DA635022CEntity__init_vtable_011a501c_with_fieldInitializes object with vtable PTR_FUN_011a501c and copies field +4 from this to param_2[1].
0x00DA637016CEntity__set_vtable_011a4e24Sets vtable pointer to PTR_FUN_011a4e24.
0x00DA638016CEntity__set_vtable_011a4e40Sets vtable pointer to PTR_FUN_011a4e40.
0x00DA639016CEntity__set_vtable_011a4e5cSets vtable pointer to PTR_FUN_011a4e5c.
0x00DA63A016CEntity__set_vtable_011a4e78Sets vtable pointer to PTR_FUN_011a4e78.
0x00DA63B016CEntity__set_vtable_011a4e94Sets vtable pointer to PTR_FUN_011a4e94.
0x00DA63C016CEntity__set_vtable_011a4eb0Sets vtable pointer to PTR_FUN_011a4eb0.
0x00DA63D016CEntity__set_vtable_011a4eccSets vtable pointer to PTR_FUN_011a4ecc.
0x00DA63E016CEntity__set_vtable_011a4ee8Sets vtable pointer to PTR_FUN_011a4ee8.
0x00DA63F068CEntityState__scalar_deleting_dtor_00da63f0Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA644068CEntityState__scalar_deleting_dtor_00da6440Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA649068CEntityState__scalar_deleting_dtor_00da6490Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA64E068CEntityState__scalar_deleting_dtor_00da64e0Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA653068CEntityState__scalar_deleting_dtor_00da6530Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA658068CEntityState__scalar_deleting_dtor_00da6580Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA65D068CEntityState__scalar_deleting_dtor_00da65d0Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA662068CEntityState__scalar_deleting_dtor_00da6620Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA667068CEntityState__scalar_deleting_dtor_00da6670Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA66C068CEntityState__scalar_deleting_dtor_00da66c0Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA671068CEntityState__scalar_deleting_dtor_00da6710Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA676068CEntityState__scalar_deleting_dtor_00da6760Scalar deleting destructor for entity state object (8 bytes). Frees memory if param_2 flag bit 0 is set.
0x00DA67B068CEntityState__scalar_deleting_dtor_00da67b0CEntityState scalar deleting destructor. Deletes 8-byte entity state object if flag is set. Referenced from CEntity vtable at 011a4e34.
0x00DA680068CEntityState__scalar_deleting_dtor_00da6800CEntityState scalar deleting destructor. Deletes 8-byte entity state object if flag is set.
0x00DA685068CEntityState__scalar_deleting_dtor_00da6850CEntityState scalar deleting destructor. Deletes 8-byte entity state object if flag is set.
0x00DA68A068CEntityState__scalar_deleting_dtor_00da68a0CEntityState scalar deleting destructor. Deletes 8-byte entity state object if flag is set.
0x00DA68F068CEntityState__scalar_deleting_dtor_00da68f0CEntityState scalar deleting destructor. Deletes 8-byte entity state object if flag is set.
0x00DA694068CEntityState__scalar_deleting_dtor_00da6940CEntityState scalar deleting destructor. Deletes 8-byte entity state object if flag is set.
0x00DA699068CEntityState__scalar_deleting_dtor_00da6990CEntityState scalar deleting destructor. Deletes 8-byte entity state object if flag is set.
0x00DA69E068CEntityState__scalar_deleting_dtor_00da69e0CEntityState scalar deleting destructor. Deletes 8-byte entity state object if flag is set.
0x00DA6CF016CEntity__set_vtable_011a4f04_00da6cf0CEntity vtable setter. Sets vtable pointer to 011a4f04. Duplicate of CEntity__set_vtable_011a4f04 for alternate inheritance path.
0x00DA6D0016CEntity__set_vtable_011a4f20_00da6d00CEntity vtable setter. Sets vtable pointer to 011a4f20.
0x00DA6D1016CEntity__set_vtable_011a4f3c_00da6d10CEntity vtable setter. Sets vtable pointer to 011a4f3c.
0x00DA6D2016CEntity__set_vtable_011a4f58_00da6d20CEntity vtable setter. Sets vtable pointer to 011a4f58.
0x00DA6D3016CEntity__set_vtable_011a4f74_00da6d30CEntity vtable setter. Sets vtable pointer to 011a4f74.
0x00DA6D4016CEntity__set_vtable_011a4f90_00da6d40CEntity vtable setter. Sets vtable pointer to 011a4f90.
0x00DA6D5016CEntity__set_vtable_011a4fac_00da6d50CEntity vtable setter. Sets vtable pointer to 011a4fac.
0x00DA6D6022CEntity__init_vtable_011a4fc8_with_field_00da6d60CEntity vtable init with field copy. Sets vtable to 011a4fc8 and copies field from this+4.
0x00DA6D8022CEntity__init_vtable_011a4fe4_with_field_00da6d80CEntity vtable init with field copy. Sets vtable to 011a4fe4 and copies field from this+4.
0x00DA6DA022CEntity__init_vtable_011a5000_with_field_00da6da0CEntity vtable init with field copy. Sets vtable to 011a5000 and copies field from this+4.
0x00DA6DC016CEntity__set_vtable_011a4e08_00da6dc0CEntity vtable setter. Sets vtable pointer to 011a4e08.
0x00DA6DD022CEntity__init_vtable_011a501c_with_field_00da6dd0CEntity vtable init with field copy. Sets vtable to 011a501c and copies field from this+4.
0x00DA6DF016CEntity__set_vtable_011a4e24_00da6df0CEntity vtable setter. Sets vtable pointer to 011a4e24.
0x00DA6E0016CEntity__set_vtable_011a4e40_00da6e00CEntity vtable setter. Sets vtable pointer to 011a4e40.
0x00DA6E1016CEntity__set_vtable_011a4e5c_00da6e10CEntity vtable setter. Sets vtable pointer to 011a4e5c.
0x00DA6E2016CEntity__set_vtable_011a4e78_00da6e20CEntity vtable setter. Sets vtable pointer to 011a4e78.
0x00DA6E3016CEntity__set_vtable_011a4e94_00da6e30CEntity vtable setter. Sets vtable pointer to 011a4e94.
0x00DA7700776CSkillUnit__ctorCSkillUnit constructor. Initializes vtable (PTR_FUN_011a503c), two STL strings, a red-black tree (0x1c-byte nodes), two vectors of 9 int elements each, and various state fields. Represents a ground-placed skill unit (traps, AoE effects).
0x00DA7BA0253CSkillUnit__dtorCSkillUnit destructor. Sets vtable to PTR_FUN_011a503c, releases 9 resource refs from two arrays (offsets 0x4b4 and 0x4c0), unregisters UI window at offset 0x490, destroys two stub containers, tree, two STL strings, and base class.
0x00DA7DF0284CSkillUnit__scalar_deleting_dtorCSkillUnit scalar deleting destructor. Calls CSkillUnit__dtor then optionally frees 0x4f8 bytes of memory if param_2 bit 0 is set.
0x00DA7F10170CSkillUnit__push_back_effect_idAdds an effect ID to the skill unit's linked list at offset 0x3b0. Allocates a 0xc-byte list node and inserts before the sentinel. Throws if list reaches 0x15555555 elements.
0x00DA7FC073CSkillUnit__calc_anim_speedCalculates animation speed for the skill unit. For skill IDs > 0x69, maps through FUN_00e19530. If skill is not 0xb (Sanctuary) and param_2 exceeds a global cap, clamps to the cap. Returns param_2 / global_divisor as float.
0x00DA8010363CSkillUnit__update_sprite_offsetUpdates the skill unit's sprite rendering offset. Gets the skill tree node and detail entry, loads a resource, then computes relative sprite offsets (x,y) based on difference between two tree node positions. Stores results at offsets 0x4e4 and 0x4e8.
0x00DA818089CSkillUnit__render_with_paramsRenders the skill unit by calling FUN_00cc2da0 with param_2, then dispatches to virtual method at vtable+0x4c with numerous rendering parameters from the object's fields (position, scale, color, etc.).
0x00DA83301432CSkillUnit__render_body_spriteRenders the body sprite for a CSkillUnit. Checks rendering flags, gets sprite/palette resources based on job ID, loads action/sprite data, iterates through sprite frames, applies rendering offsets, color adjustments (opacity for flag 0x130), and submits to the render pipeline via FUN_00cb39a0 or FUN_00cb3f40.
0x00DA88D0943CSkillUnit__render_body_sprite_shadowRenders the body sprite with shadow/overlay effects. Similar to CSkillUnit__render_body_sprite but uses different rendering mode (action type 3/dead or 0x5f+). Handles action overrides for special states, costume garment sprites (redirects to alternate resource at +0x510 offset), and submits with render mode 0x101.
0x00DA8C80749CSkillUnit__render_garment_spriteRenders the garment sprite for a CSkillUnit. Similar to render_body_sprite_shadow but uses render mode 5, checks for second resource vector (offset 0x130), and handles garment-specific rendering. Null-checks DAT_01389638 before proceeding.
0x00DA8F70360CEntity__lua_draw_on_top_checkCalls Lua DrawOnTop/New_DrawOnTop function to determine if entity should be drawn on top. Passes entity job ID (with costume override check), animation frames, sprite index, and other state. Two code paths: new style (DAT_0173353c set) includes effective job ID parameter, old style uses basic draw format. Returns boolean from Lua result.
0x00DA90E0597CEntity__get_doram_action_overrideGets a Doram race action override for specific action/direction combinations. For actions 0x58-0x5f with directions 3-5, remaps the direction based on the action range and a left/right hand state flag at offset 0x260. Only applies to Doram-related job IDs (0xfce, 0xfcf, 0xfd0, 0x1081, etc.).
0x00DA9410405CEntity__apply_body_part_offsetApplies position offsets to body part rendering based on part type (1-5) and skill/item IDs. Uses Lua callback 'OffsetItemPos_GetUppingBottomIte...' to get custom offsets. Different offset constants per skill ID (0x411, 0x4d3, 0x526, 0x54a, 0x54e, 0x553, 0x5c6, 0x5cd, 0x5d0, 0x5db, 0x62e). Resolution-dependent offsets via DAT_0135f44c threshold.
0x00DA99A02368CEntity__apply_render_effectsCEntity: apply render effects
0x00DAA3C037CSkillUnit__get_resource_nameGets the resource name string for a given index from the skill unit's resource vector at offset 0x4c0. Returns pointer to the resource name or a default empty string at DAT_010d4ee8.
0x00DAA3F0303CSkillUnit__get_all_resource_namesBuilds a vector of 9 STL string resource names from the skill unit's resource array at offset 0x4c0. Allocates 0xd8 bytes (9 x 0x18-byte STL strings), populates each by looking up the resource name or defaulting to empty string.
0x00DAA52040CSkillUnit__get_resource_at_indexReturns the resource pointer at the given index from the vector at offset 0x4c0. Bounds-checks against vector size, returns 0 if out of range.
0x00DAA550152CEntity__get_action_indexGets the current action index for the entity. Has several modes based on flags at offsets 0xd8, 0xd4, 0xdc, 0xc8: if in special state (0xd8), returns byte at 0xbb or offset byte; if in riding state (0xdc or 0xc8), returns byte at 0xc3 or 0xb5; otherwise calls virtual method 0xdc and either get_body_part_offset_for_action or FUN_00daad80.
0x00DAA620249CEntity__load_body_resourceLoads the body sprite resource for the entity based on job ID. Maps job IDs to body type codes (1-6, 0x60, 0x64, 0x113 for various classes/races), builds a path string via FUN_00dde340, and loads the resource via CResourceMgr. Job ID mapping covers all standard RO classes plus Doram, Star Emperor, Soul Reaper, etc.
0x00DAA890245CEntity__load_head_resourceLoads the head sprite resource for the entity. Same job-to-body-type mapping as CEntity__load_body_resource but uses FUN_00dde6b0 for the head path instead of FUN_00dde340. Loads and returns the resource via CResourceMgr.
0x00DAABF0116CEntity__update_action_frameUpdates the entity's current action frame. Checks various state flags (0xd8, 0xdc, 0xc8) and gets the action index either from get_body_part_offset_for_action or CEntity__get_action_count_for_job. Then updates the frame via virtual method 0x10 and gets the tree node count.
0x00DAAC70271CEntity__get_sprite_y_offsetGets the Y-axis sprite rendering offset by comparing the entity's sprite resource tree nodes. Loads the resource by string path, gets two tree node entries, and returns the difference in their Y-coordinates (field+4). Returns 0 if any lookup fails.
0x00DAAD80213CEntity__get_action_count_for_jobReturns the action count/offset for the current entity's job class. Maps job IDs to sprite action counts: 0x20 for Alchemist/Sage/Doram classes, 0x10 for case 6, 0x28 for Star Emperor (0x107a-d/0x10d4) in case 8, 0x60 for most others in case 8, 0x50 for Star Emperor/Soul Reaper group, 0x60 default. Used for animation frame selection.
0x00DAAFE037CEntity__get_head_resource_nameGets the head resource name string for a given index from the entity's head resource vector at offset 0x4b4. Returns pointer to the resource name or a default empty string.
0x00DAB010303CEntity__get_all_head_resource_namesBuilds a vector of 9 STL string head resource names from the entity's head resource array at offset 0x4b4. Same pattern as CSkillUnit__get_all_resource_names but for head sprites.
0x00DAB14019CEntity__get_head_resource_ptrReturns the head resource pointer at the given index from offset 0x4b4 vector. No bounds check.
0x00DAB170159CEntity__lua_is_top_layerCalls Lua function 'IsTopLayer' with the entity's skill ID (offset 0x49c) to determine if this entity renders on top. Returns the Lua result as a bool.
0x00DAB21058CEntity__has_alternate_body_spriteChecks if the entity has an alternate body sprite. Returns true if the entity has a positive value from virtual method 0xdc, or if the job doesn't match FUN_00e3d350 but has a costume garment.
0x00DAB250108CEntity__is_in_special_stateChecks if the entity is in any special state: FUN_00df98e0 (frozen?), FUN_00df99a0 (stone?), FUN_00df9a30, FUN_00df9870, FUN_00df9900, or field 0x3dc==1. Returns 1 if any check passes.
0x00DAB2C0329CEntity__lua_check_riding_layer_priorityChecks riding state via Lua for layer priority. For action types 0, 8, 0x10, 0x40, calls 'IsIgnoredRidingState' and 'TB_Layer_Priority' Lua functions. Only applies when entity is not the current player (param_4==0 && param_2 != self).
0x00DAB70036CSkillUnit__unregister_windowUnregisters the CSkillUnit's UI window at offset 0x490 and zeroes the handle.
0x00DABBE0566CSkillUnit__update_per_framePer-frame update for CSkillUnit. Handles idle effects, damage queue, overhead UI, HP bar, hit flash, color adjustment, animation sounds, anti-cheat sweep. Also manages visual effect creation/destruction: if virtual method 0xdc returns >0 and no effect exists, creates one via FUN_00cda580 with type 0x2c; if entity enters special state (frozen/stone), destroys the effect.
0x00DABFC0105CSkillUnit__update_overhead_uiUpdates overhead UI position for CSkillUnit. Same as CSkillEffect version but uses window at offset 0x490.
0x00DAC200391CSkillUnit__process_state_machineCSkillUnit state machine processor. Extended version of CSkillEffect__process_state_machine with additional states: 0x2d, 0x33(custom anim->sit transition), 0x3c-0x51(various special actions). States 0x3e-0x50 all just call virtual 0x20 (update frame).
0x00DAD4D0995CSkillUnit__render_restricted_spriteRenders a CSkillUnit when in restricted rendering mode (CMessageStringTable__is_restricted_msg_id). Projects entity position to screen, loads body resource string, gets sprite frames from action/direction data, renders 2D sprite with action frame 0x78, submits quad via submit_sprite_quad_to_render_queue with render mode 0x101. Falls back to costume garment resource if available.
0x00DAE890193CSkillUnit__dispatch_actionAction dispatch for CSkillUnit. Extended version handling action IDs 3-137 through a jump table. Falls back to CEntity__process_action_table_entry with all 15 params for out-of-range actions.
0x00DAFB60665CSkillUnit__load_sprite_resource_for_slotLoads a sprite resource for a specific slot in CSkillUnit. Releases existing resource, then loads a new one based on slot index (0=body, 5=head, 6=null), restricted message status, and weapon state (param_1[0x98]). After loading, updates sprite offset calculations for slot 1 (head).
0x00DAFE1059CSkillUnit__load_all_sprite_resourcesLoads all 9 sprite resources for CSkillUnit by iterating through the resource name vector and calling CSkillUnit__load_sprite_resource_for_slot for each slot.
0x00DAFFA090CSkillUnit__set_weapon_and_refreshSets the weapon ID for CSkillUnit (stored at offset 0x4d0) and optionally refreshes the visual appearance. If param_3 is nonzero, reloads the body sprite (via virtual 0x54), updates colors (virtual 0x60), and reloads all resources (virtual 0x80). Uses garment sprite ID for costume entities.
0x00DB000053CSkillUnit__set_shield_and_refreshSets the shield ID for CSkillUnit. Stores param_2 at offset 0x48, translates through FUN_00e2f710 with job ID and weapon ID, stores result, then reloads all resources via virtual 0x80.
0x00DB0040409CSkillUnit__update_garment_pathUpdates the garment sprite path for CSkillUnit. If shield ID (offset 0x48) is nonzero, builds a resource path based on job ID, weapon, shield, and sex. For costume garments (FUN_00ca9e20), uses a simpler format string with costume name. Stores the path string in the entity's name field (offset 0x1c).
0x00DB01F0134CEntity3D__reset_granny_animationsResets all 20 Granny animation controls. Frees each control via granny_free_control, saves current state to +0xf3c, clears +0xf24. Then reads texture names for the current animation state using CRsmModel__ReadTextureNames with looping flag based on param_2==1 and state!=6.
0x00DB028021CEntity3D__set_field_444_and_updateSets field +0x444 (animation index) and calls virtual method at vtable+0x7c to update the entity's animation accordingly.
0x00DB02A0169CEntity__update_accessory_sprite_nameUpdates accessory sprite name string based on headgear view ID. Gets effective job ID, looks up accessory name via FUN_00ddcef0, and copies result string to entity's name field at +0x460 if different.
0x00DB0350162CSkillUnit__update_accessory_pathUpdates the accessory sprite path for CSkillUnit. Builds path via FUN_00ddcef0 using headgear ID (0x440), costume ID (0x4d4), sex (0x260), and accessory type (0x444). Stores result in entity string field at offset 0x478.
0x00DB05E0218CSkillUnit__update_body_string_pathUpdates the body sprite string path for CSkillUnit. Similar to CSkillEffect version but stores at offset 0x418. For Doram-class jobs (0x10ce-0x10ea range) with costume flag, translates job ID via FUN_00e130a0 first.
0x00DB071076CSkillUnit__set_anim_speedSets animation speed for CSkillUnit. Same as CSkillEffect version but uses skill ID at offset 0x448, with translation via FUN_00e19530 for IDs > 0x69.
0x00DB078031CSkillUnit__set_palette_and_head_paletteSets palette via virtual method 0xa0 and stores head palette ID at offset 0x434.
0x00DB07C027CSkillUnit__set_sex_and_refresh_headSets the entity's sex byte at offset 0x2cc and refreshes the head sprite by calling virtual method 0x70 with the current head ID (offset 0x45c).
0x00DB07F0474CSkillUnit__set_headgear_bottomSets the bottom headgear for CSkillUnit. Stores headgear ID at offset 0x454, builds action/palette paths via FUN_00ddba70/FUN_00ddbae0, loads the sprite resource for slot 3 and palette resource. Also cleans up attached effects 0x2a6-0x2a8 if they exist.
0x00DB09D016CSkillUnit__set_headgear_top_idSets the top headgear ID at offset 0x450 for CSkillUnit (simple setter, no resource loading).
0x00DB09E0338CSkillUnit__set_headgear_mid_and_loadSets the mid headgear for CSkillUnit. Stores ID at offset 0x458, builds sprite/palette paths, loads sprite resource for slot 4 and palette at head resource vector index 4.
0x00DB0B4016CSkillUnit__set_skill_idSets the skill ID at offset 0x448 for CSkillUnit (simple setter).
0x00DB0B50338CSkillUnit__set_headgear_top_and_loadSets the top headgear for CSkillUnit and loads resources. Stores ID at offset 0x450, builds sprite/palette paths, loads sprite resource for slot 2 and palette at head resource vector index 2.
0x00DB0CB048CSkillUnit__render_with_bottom_headgearDispatches to virtual method 0x4c for rendering, passing bottom headgear ID (offset 0x454) along with the rendering parameters.
0x00DB0CE0727CEntity__setup_appearance_from_paramsSets up full entity appearance from spawn parameters. Stores job, gender, head, weapon, shield, headgear slots, garment, and robe data. Loads body sprite based on visibility state checks (transparent/invisible/etc), handles costume garments. Calls virtual methods for head, weapon, shield, headgear, garment, robe loading. Some job IDs (0xfdb, 0xc, 0xfad, 0xfc3, 0xfe1, etc) use special head ID calculation.
0x00DB0FC01945CEntity3D__setup_granny_model_from_paramsSets up 3D Granny model from spawn parameters. Loads main model .gr2 resource, instantiates via GrannyInstantiateModel. Allocates mesh buffers per triangle count. Loads additional models by replacing extension: .hr2 (hair), .bd2 (body), .pt2 (pants), .le2 (legs). For each, allocates vertex/triangle buffers. Rebinds meshes and finds hair pivot. Gets system time for animation timing.
0x00DB1760507CEntity__setup_npc_appearanceSets up NPC entity appearance. Similar to setup_appearance but for NPCs. Handles visibility state chain (transparent, etc) for body sprite selection (0x16-0x1e). Loads all sprite slots via virtual method chain. Calls virtual +0x84 for custom NPC handling.
0x00DB198016CEntity__set_headgear_slot_idSets headgear slot ID at +0x434.
0x00DB1990300CEntity__load_headgear_mid_spriteLoads middle headgear sprite. Sets +0x440, gets sprite path from FUN_00ddcd50, loads sprite for slot 1 via CSkillUnit__load_sprite_resource_for_slot. Gets act path from FUN_00ddcfe0, releases old resource, loads new resource. Handles restricted entity IDs.
0x00DB1AC029CSkillUnit__set_scale_from_paramSets the scale factor at offset 0x54 by calling FUN_00de0a70 to compute scale from param_2.
0x00DB1AE01614CEntity__load_body_sprite_with_optionsLoads body sprite with various state options. Handles mount toggle (job IDs 0x13/0x14 etc), gets scale. Prioritizes by visibility state: transparent=0x16, fading variants=0x1a-0x1e, then normal body by job/gender/costume. Special scaling for certain doram jobs (0xff6/0xff7/0x10b7/0x1010). Loads both sprite and act resources into slot 0.
0x00DB2230302CEntity__load_sprite_resource_for_slotLoads a sprite resource into a specific slot. Releases old resource first. For restricted entity IDs, uses gender-specific replacement sprites for slots 0 (body) and 5 (shadow). Slot 6 is nulled for restricted. Otherwise loads from given path. Increments reference count on loaded resource.
0x00DB23A0690CEntity__load_headgear_robe_spriteLoads headgear robe sprite. Calls Lua IsHelmRobe and TB_Layer_Priority functions. Depending on robe flag, resolves sprite/act paths via FUN_00ddba70/FUN_00ddbae0 with job ID, gender, headgear and palette info. Loads sprite into slot 8, loads act resource into slot +0x20.
0x00DB2670443CEntity__load_palette_spriteLoads palette sprite resource. Sets +0x45c. If costume flag at +0x2cc is clear, gets palette path from FUN_00de0c50 using job/gender/palette/subpalette, loads into slot 7 and act resource into slot +0x1c. If costume flag set, loads empty resource for both slots.
0x00DB28402239CEntity__load_weapon_spritesLoads weapon sprites for entity. Handles weapon/shield IDs, clears slots 5/6 first. For invisible states, uses job ID from +0x135. Handles special job IDs (doram 0xff4-0x10b7 with Madogear string replacement). For dual-wield, calculates render priority. Loads sprite/act resources for primary (slot 5) and secondary (slot 6) weapons with fallback to default weapon type mapping.
0x00DB3740951CEntity__load_shield_spritesLoads shield sprites. Sets +0x448/+0x44c for shield ID/type. Checks if shield should be displayed via FUN_00dfac70. If not, clears slots 5/6. Otherwise loads shield sprite/act via FUN_00e19370/FUN_00e194c0 with job/gender. For restricted entities, uses gender-specific replacement sprites. Uses jump table for weapon type-specific secondary slot loading.
0x00DB3C30164CEntity3D__set_entity_stateSets 3D entity state with Granny model support. Handles states: 0=idle (with camera speed reset for certain mounts), 1=walk, 2=attack (with IsItemUsingArrow lua call), 6/8=special (with animation direction), 7=sitting (job-specific), 9=attack variant. Resets granny animations on death. Updates animation frame offset and timestamp.
0x00DB42902185CPlayerEntity__set_entity_stateSets player entity state. Extended version with mount/riding support. On death (state 3), reloads body sprite. Handles state 0 with mount camera speed caps. State 2 (attack) calls IsItemUsingArrow lua, with special attack range for specific skills. State 7 handles many job-specific sitting animations. State 9 handles attack with cast time adjustment for certain skills.
0x00DB4C70203CEntity__remap_attack_direction_for_jobRemaps attack direction for specific job classes. Sage/Alchemist/Monk types: remap dirs 8,6,7 to 2. Blacksmith types: remap dir 5 to 10. Sage/Bard with certain sub-jobs: remap dirs 8,7 to 2, and dir 6 to 1 for specific sub-jobs. Default passes through unchanged.
0x00DB4E70238CEntity__manage_riding_effectManages the riding/mount visual effect. If param_2 is true and entity is not in special state (frozen/stone), creates an effect via FUN_00cda580 with type 0x2c and stores at offset 0x414. If in special state, destroys the existing effect.
0x00DB50C091CPlayerEntity__ctorCPlayerEntity constructor. Derives from CSkillUnit, sets vtable to PTR_FUN_011a54b0 and calls FUN_00db5340 for additional player-specific initialization.
0x00DB512071CPlayerEntity__dtorCPlayerEntity destructor. Sets vtable to PTR_FUN_011a54b0 then calls CSkillUnit__dtor.
0x00DB517099CPlayerEntity__scalar_deleting_dtorCPlayerEntity scalar deleting destructor. Size is 0x548 bytes. Sets vtable, calls CSkillUnit__dtor, optionally frees memory.
0x00DB5220130CPlayerEntity__check_range_thresholdChecks if entity is within range threshold. Computes distance via FUN_00ca9700 and FUN_00db6820, compares against param_3 * 5 + constant. Returns 1 if within range.
0x00DB5340911CPlayerEntity__initialize_local_playerInitializes local player entity from global state. Converts cell position to world coordinates, gets interpolated height, sets up targeting/movement state, initializes all timer/counter fields. Loads appearance from saved params via virtual calls. Sends initial network commands (0x6e for battleground, 0x6d for skill effect 0xa4). Sets up movement style from global config.
0x00DB5710503CPlayerEntity__update_idle_stateUpdates player entity idle state. Enables special movement, processes idle effects and damage queue, updates overhead UI. Handles hit flash timeout. Adjusts entity color. Checks position reporting timer for auto-movement. Calls auto-follow update. Manages riding effect based on mount state. Updates minimap window if needed.
0x00DB59803166CPlayerEntity__update_auto_follow_targetUpdates auto-follow target pathfinding. Handles 6 follow modes: 1/5=follow entity, 2=follow NPC, 3=attack entity, 4=attack ground cell, 6=interact with item. Calculates distance to target, finds walkable cells, sends movement/attack commands. Handles periodic idle re-pathing with cooldown timers. Different movement allowed states per job type (mounts/4th jobs allow more states).
0x00DB6670417CPlayerEntity__adjust_follow_offset_by_angleAdjusts follow target cell offset based on angle between player and target. Gets move speed from entity, calculates atan2 angle, then adjusts destination cell X/Y by speed amount in the appropriate cardinal/diagonal direction based on 8-way angle buckets.
0x00DB6820143CPlayerEntity__get_adjusted_distance_to_targetGets adjusted distance to target, subtracting target's radius. For riding mode (0xb8==1), subtracts fixed constant. For entities with move speed > 0, subtracts (speed+1)*constant. Returns max(0, adjusted distance).
0x00DB68B09891CEntity__update_status_effect_visualsUpdates visual effects for entity status changes. 9K bytes. Called by recv_pet_status_update and FUN_00cbfc40. Manages skill effects (TetraVortex elements, orbit effects, footprints), creates/removes attached effects, dispatches effect by ID, and opens game windows as needed.
0x00DB9A00228CPlayerEntity__dispatch_player_actionDispatches player action via jump table. For param_3==0 and param_2 < 0x96, uses lookup table at DAT_00dba52c to index into jump table at PTR_LAB_00dba4d4. Otherwise delegates to CSkillUnit__dispatch_action.
0x00DBA5D0231CPlayerEntity__set_state_with_death_handlingSets player entity state with death handling. On non-walking transitions, resets target coords. If queued movement exists in idle state, sends walk command. On death (state 3), sends server notification (type 5), triggers camera shockwave at entity position, clears DAT_0138963c. Delegates to CPlayerEntity__set_entity_state.
0x00DDB920333CEntity__call_draw_on_top_luaCalls the Lua 'DrawOnTop' or '_New_DrawOnTop' function for entity rendering. Passes entity rendering parameters including sprite ID, position, and draw flags. Uses the old-style 'DrawOnTop' when this+0xF04 is clear (format 'ddddd>b'), or the new-style '_New_DrawOnTop' (format 'ddddd>bd') when set, adding job tree mapping.
0x00E1E69016511CEntity__create_skill_visual_effectsDispatches skill visual effects creation. Called by CEntity__process_skill_action. Creates ground effects, linked skill effects, and entity-attached effects based on skill type. Uses camera zoom, effect manager, and entity effect system. 16K bytes.
0x00E4A1A0265CEntitySprite__ctorConstructor for CEntitySprite. Calls CSprite__ctor_base, sets vtable to CEntitySprite's vtable, zeroes out fields 0x4E-0x56 and copies initial position from base fields 4-6. Initializes various entity-specific fields including mounted flag and display state.
0x00E4A550382CItem3DSprite__ctorConstructor for CItem3DSprite (3D item display sprite). Calls CSprite__ctor, sets vtable, initializes 3D rendering fields: scale to 1.0f (0x3F800000) for x/y/z axes, rotation to 0, render mode to 1, visibility flag to 1. Zeroes position, animation, and bounding box fields.
0x00E4A85071CEntitySprite__dtorDestructor for CEntitySprite. Sets vtable to PTR_FUN_011ad3c4, then calls CSprite__dtor_base.
0x00E4A8F0100CEntity__dtor_00e4a8f0Destructor for CEntity. Sets vtable to PTR_FUN_011ad2bc. If attached sprite at this+0x44C is non-null, calls its virtual destructor. Then calls FUN_00e4aa30 (CGameMode dtor).
0x00E4A9B0128CItem3DSprite__dtorDestructor for CItem3DSprite. Sets vtable to PTR_FUN_011ad43c. If parent object at this+0x15C is non-null, sends event (0x30) via its virtual method. Then calls CSprite__dtor.
0x00E4AB1099CEntitySprite__scalar_deleting_dtorScalar deleting destructor for CEntitySprite. Sets vtable, calls CSprite__dtor_base, frees 0x170 bytes if bit 0 of param_2 set.
0x00E4ABF0124CEntity__scalar_deleting_dtor_00e4abf0Scalar deleting destructor for CEntity. Sets vtable to PTR_FUN_011ad2bc, destroys attached sprite, calls CGameMode dtor, frees 0x560 bytes if bit 0 set.
0x00E4AD40152CItem3DSprite__scalar_deleting_dtorScalar deleting destructor for CItem3DSprite. Sets vtable to PTR_FUN_011ad43c, notifies parent object, calls CSprite__dtor, frees 0x1B8 bytes if bit 0 set.
0x00E4B580167CEntity__destroy_attached_3d_objectDestroys an entity's attached 3D object. Removes from quadtree, calls virtual destructor on the 3D object at this+0x41C, notifies parent at +0x420 with event 0x18, and cleans up associated effect/aura at +0x424/+0x428. Clears all attachment pointers.
0x00E4B990139CEntity__cleanup_effects_and_3dCleans up entity resources: unregisters UI window at offset 0x264, destroys attached 3D object, then iterates the effect vector at 0x430/0x434 dispatching effect updates (type 0x18) and clearing the vector.
0x00E4BDE0120CEntity__init_homunculus_stateInitializes homunculus entity state. Sets entity type at +0x418, calls CEntity__set_mounted_job_and_update_sprite(0x7E), sets action timeout to 36000, clears various state flags and pointers (+0xA5, +0xA1, +0x264, +0x41C-+0x42C), copies timer value from +0x430 to +0x434.
0x00E4C1C066CEntity__is_within_animation_timeChecks if an entity is within its animation time frame. Computes elapsed time since this+0x8C, converts to float seconds using a global divisor, and compares against the animation duration at this+0x158. Returns true if within time.
0x00E4C2F020CEntity__is_animation_activeChecks if an entity's animation is still active by comparing current time (timeGetTime) against the animation end time at this+0x164. Returns true if current time is within the animation window.
0x00E5034050CEntity__conditional_render_spriteConditionally renders an entity's sprite. For certain entity types (0xD-0x10, 0x15, 0x16, 0x72 at this+0x1A8), only renders if global flag cRam0135f718 is set. Also checks visibility flag at this+0x158 before calling CEntity__render_sprite_if_visible.
0x00E50D10145CEntity__handle_special_actionHandles special entity actions. For action 0x16 (talk/speech), stores text pointer at this+0x418. For action 0x75 (name display), copies name string to this+0x454, sets fields +0x444 and +0x448, calls virtual method at vtable+0xFC. All other actions are passed through to CEntity__process_action_table_entry.
0x00E50DB0117CEntity__dispatch_action_by_indexDispatches entity actions by index via a jump table. For action indices 0xE-0x75 (when param_3 is 0), uses a byte lookup table at DAT_00e50eb6 to jump to specialized handlers. All other cases fall through to CEntity__dispatch_action_by_type.
0x00E55100542CEntity__register_clickable_boundsRegisters entity bounds in the quadtree for click detection. Allocates a 0x28-byte bounds structure, computes min/max from screen bounds param_2, stores entity ID and job ID, ensures minimum clickable size based on near clip distance. Inserts into quadtree via CQuadTreeNode__insert_object. Only processes if field 0xA5 (clickable flag) is set. Calls virtual function at vtable+0x18 afterwards.
0x00E55320489CEntity__attach_3d_modelAttaches a 3D RSM model to the entity. Loads the model resource, creates either CRsmNodeEx (for type 1 RSM) or CRsmAnimNode (for type 2 RSM), clones child parts, sets initial position from entity position, configures rendering properties (scale, color), and inserts into the quadtree. Destroys any previously attached 3D object first.