Back to legacygamers.net
WARPGATE

Effect

CEffect (67+ subclasses), CSkillEffect, skill VFX, particles, projectiles, ground effects, aura/orbit

Functions 2,087 to 3,440 of 3,440Code 1.2 MBAddresses 0x00B44580 to 0x00E512B0Group Effects
1,354 functions
AddressSizeNameDescription
0x00B4458075CEffectAuraCherryBlossom__render_single_petalRenders a single cherry blossom petal sprite twice (two render passes) if non-null.
0x00B445D0137CEffectAura3DModel__ctorCEffectAura3DModel constructor. Inherits from CEffectAura with 0xD particle count. Sets vtable PTR_LAB_01183628. Initializes 4 fields for 3D model tracking. Sets particle count to 9999 (long-lived).
0x00B44660141CEffectAura3DModel__dtorCEffectAura3DModel destructor. If field 0x36 (3D model ptr) is set, calls stop and destroy on it. Then calls CEffectAura dtor and base dtor.
0x00B446F0165CEffectAura3DModel__scalar_deleting_dtorCEffectAura3DModel scalar deleting destructor. Destroys 3D model if set, then calls parent dtors. Frees 0xDC bytes.
0x00B447A0178CEffectAura3DModel__create_nameplateCreates a nameplate effect for the 3D model aura. Allocates CEffectNameplate, sets owner ID and target entity, copies position, sets effect type, and starts the effect.
0x00B44860219CEffectAura3DModel__create_ring_spriteCreates a ring sprite for the 3D model aura. Allocates from pool, sets ring_blue texture, configures size (40), angle, radius (30), height (50), and position params. Adds to sprite vector.
0x00B4494063CEffectAura3DModel__recycle_spritesRecycles all sprites in the vector at 0xCC/D0 back to the effect pool. Resets end pointer to start.
0x00B4498047CEffectAura3DModel__destroy_nameplateDestroys the nameplate at offset 0xD8. Calls stop and delete on the nameplate via virtual functions, then nulls the pointer.
0x00B44AC4249CEffectAura3DModel__init_ring_sprites_and_nameplateCEffectAura3DModel: init ring sprites and nameplate
0x00B44BE0484CEffectAura3DModel__updateUpdates all 3D model sprites in the vector (0xCC/D0). For each sprite: applies rotation decay, computes fade-out rate, builds translation+rotation matrix, updates transform at offset 0x1C8. Calls child update via vtable if present at 0xD8.
0x00B44DD0415CEffectAura3DModel__update_single_spriteUpdates a single 3D model sprite. Computes rotation decay, fade-out rate, builds translation+rotation matrix, writes transform to sprite at offset 0x1C8. Called per-sprite from the main update loop or externally.
0x00B44F70247CEffectAura3DModel__render_modelRenders all 3D model sprites. Iterates vector 0xCC/D0, sets up vertex positions from sprite data, and calls CEffectLayer::render_mesh for each. Calls child render via vtable+0x10 if present at 0xD8.
0x00B45080190CEffectAura__render_single_mesh_commonSets up 4 vertex positions (0x1F8-0x260) from sprite scale/rotation data and calls CEffectLayer::render_mesh with default parameters. Common render helper for single mesh rendering.
0x00B45140182CEffectAuraParticle__ctor_00b45140CEffectAuraParticle constructor. Calls CEffectAura base ctor with type 0xE. Sets vtable PTR_LAB_011836b8. Initializes 5 fields, allocates a linked list node (0xC bytes) for particle tracking. Sets particle count=100 and param 0x38=0x50.
0x00B45200161CEffectAuraParticle__dtor_00b45200CEffectAuraParticle destructor. Sets vtable PTR_LAB_011836b8, walks and frees the linked list at offset 0x36, then calls CEffectAura dtor chain.
0x00B452B0185CEffectAuraParticle__scalar_deleting_dtor_00b452b0CEffectAuraParticle scalar deleting destructor. Runs dtor logic (frees linked list, calls base dtors), then conditionally frees 0xE8 bytes of the object.
0x00B45370284CEffectAura__create_beam_sprites_commonCreates 10 beam sprites from the effect pool. Each sprite gets position offset, rotation/fade params, blue color (0x20,0xB0,0xE8), and alpha_down texture. Pushes to vector 0xCC/D0.
0x00B45490522CEffectAura__create_particle_sprite_common_00b45490Creates a single particle sprite with random angle (0-360). Allocates from NyangGrass pool, loads sprite data and animation tree, sets initial parameters (scale, fade, etc), inserts into linked list at 0xD8. Throws if list exceeds max.
0x00B456A0151CEffectAura__recycle_all_sprites_commonRecycles all sprites from both containers back to the effect pool. Clears vector 0xCC/D0 and walks+frees linked list at 0xD8 (including list nodes). Resets list count to 0.
0x00B457C0282CEffectAura__update_particles_commonUpdates a single particle's rotation, fade, and transform. Computes rotation from angular velocity, calculates fade-out when lifetime expires, clamps alpha to [0, max], builds rotation matrix, writes transform at 0x1C8.
0x00B458E01504CEffectAuraBeam__update_and_create_spritesMain update+create loop for CEffectAuraBeam. Creates new particle sprites (if bit 0 of field 0x28 is clear), then updates all beam sprites in vector 0xCC/D0 (rotation, fade, transform), then updates/recycles particle sprites in linked list 0xD8 (position along beam, lifetime management).
0x00B45ED0516CEffectAuraBeam__update_single_particleUpdates a single particle sprite's position along its beam path. Computes 3D position from rotation matrix and beam radius, applies fade-out logic, clamps alpha. Called per-particle from the beam's update loop.
0x00B460E0333CEffectAuraBeam__render_single_beam_spriteRenders a single beam sprite. Calculates vertex positions from sin/cos lookup tables based on sprite index, applies scale, sets up UV coords (quartered texture), then calls CEffectLayer::render_from_struct.
0x00B46230404CEffectAuraBeam__render_all_spritesRenders all beam and particle sprites. Iterates vector 0xCC/D0 to render beam sprites (with sin/cos vertex positioning and quartered UV), then iterates linked list 0xD8 to render particle sprites via CEffectLayerEx::render.
0x00B463D017CEffectAura__render_layer_ex_wrapperSimple wrapper that calls CEffectLayerEx::render with param=1 (render enabled).
0x00B463F0173CEffectAuraBeam__ctorCEffectAuraBeam constructor. Inherits from CEffectAura with -1 particle count. Sets vtable PTR_LAB_01183744. Initializes 2x3 float arrays and 6 additional fields. Size 0xFC bytes.
0x00B464A0110CEffectAuraBeam__dtorCEffectAuraBeam destructor. Sets vtable, calls CEffectAura dtor for two sub-components and base dtor.
0x00B46510134CEffectAuraBeam__scalar_deleting_dtorCEffectAuraBeam scalar deleting destructor. Runs dtor logic, frees 0xFC bytes.
0x00B465A093CEffectAuraBeam__set_blend_mode_allSets blend destination mode (0x2AC) on all sprites in both beam vectors (0xE4/E8 and 0xF0/F4). Skips if param is -1.
0x00B46600114CEffectAuraBeam__set_color_allSets RGB color on all sprites in both beam vectors (0xE4/E8 and 0xF0/F4) by calling CEffectLayer::set_rgb_color for each.
0x00B46680872CEffectAuraBeam__create_bubble_spritesCreates 22 bubble sprites per angular layer (up to 3 layers at angles 180/270/540). Each sprite gets W_bubble_NNN texture and color based on effect ID (0x3D2=red, 0x3FE=green, 0x4CA=purple, 0x8E3=dark). Sets initial radius, fade, angular velocity. Pushes to vector 0xE4/E8.
0x00B469F0356CEffectAuraBeam__create_ring_spritesCreates ring-type beam effect sprites (2 per angular step of 180 degrees). Allocates from pool, sets cir0002 or emp_shock texture based on param, assigns color based on effect ID (0x3D2/0x3FE/0x4CA/0x8E3). Pushes to vector 0xF0/F4.
0x00B46B60429CEffectAuraBeam__update_beam_sprite_transformUpdates a single beam sprite's vertex transform. Calculates radius from angular velocity and sin/cos tables, positions vertices at computed 3D coordinates, copies previous frame's position data for interpolation. Does not render.
0x00B46D10110CEffectAuraBeam__recycle_all_spritesRecycles all sprites from both beam vectors (0xE4/E8 and 0xF0/F4) back to the effect pool.
0x00B46DD0291CEffectAuraBeam__update_sprite_lifecycleUpdates a single sprite's lifecycle: decrements size over time, adjusts alpha based on remaining lifetime. When size drops below threshold, enters fade-out mode. Builds scale+transform matrix from sin/cos lookups and writes to sprite transform at 0x1C8.
0x00B46F00812CEffectAuraBeam__update_and_renderUpdates and renders both beam vector groups. For vector 0xE4/E8: sets position from parent, runs lifecycle update (size/alpha decay, transform). For vector 0xF0/F4: sets position from parent, rotates angle by 3 degrees, applies camera-relative Y rotation and scale transform. Increments frame counter for all sprites.
0x00B47230412CEffectAuraBeam__update_single_ring_spriteUpdates a single ring sprite's transform. Rotates angle by 3 degrees per frame, applies camera-relative Y rotation (X rotation fixed at ~pi/4), builds scale+rotation matrix, writes composite transform to sprite at 0x1C8.
0x00B473D0238CEffectAura__render_bubble_spriteRenders a bubble sprite. Generates texture name from frame counter mod 27 (W_bubble_01-27.tga cycle). Sets UV coords based on sprite Y position, then renders via render_from_struct.
0x00B474C0363CEffectAura__update_and_render_bubblesUpdates and renders all bubble sprites. Iterates vector 0xE4/E8: renders each with W_bubble texture (cycling through 27 frames), UV coords from sprite Y position. Then iterates vector 0xF0/F4: renders each with default mesh params.
0x00B4763055CEffectAura__render_default_meshSimple wrapper that calls CEffectLayer::render_mesh with default parameters (no rotation, scale 1.0, perspective enabled).
0x00B47670116CEffectAuraRing__ctorCEffectAuraRing constructor. Inherits from CEffectAura with -1 particle count. Sets vtable PTR_LAB_01183820. Initializes 3 fields. Size 0xD8 bytes.
0x00B476F095CEffectAuraRing__dtorCEffectAuraRing destructor. Sets vtable, calls CEffectAura dtor and base dtor.
0x00B47750119CEffectAuraRing__scalar_deleting_dtorCEffectAuraRing scalar deleting destructor. Frees 0xD8 bytes.
0x00B477D052CEffectAuraRing__set_blend_mode_allSets blend destination mode on all ring sprites in vector 0xCC/D0.
0x00B4781064CEffectAuraRing__set_color_allSets RGB color on all ring sprites in vector 0xCC/D0.
0x00B47850569CEffectAuraRing__create_ring_spritesCreates ring sprites (2 per angular step, 4 steps spaced 20 degrees apart starting from 0). Each gets random initial angle, emp_shock texture, and color based on effect ID (0x3D3/0x3FF/0x4CB/0x8E4). Initial alpha=200, size=10.0. Pushes to vector 0xCC/D0.
0x00B47A9063CEffectAuraRing__recycle_spritesRecycles all ring sprites from vector 0xCC/D0 back to the pool.
0x00B47AF0668CEffectAuraRing__update_all_spritesUpdates all ring sprites in vector 0xCC/D0. For each sprite: positions at parent origin, applies exponential size decay. When size reaches threshold, decrements alpha by 3; at alpha=0 resets with new random angle. Builds Y-rotation + scale + Y-offset transform matrix and writes to 0x1C8.
0x00B47D90565CEffectAuraRing__update_single_ring_spriteUpdates a single ring sprite's transform. Applies exponential size decay, resets on alpha depletion with new random angle. Builds composite matrix: Y-rotation (camera-relative) * scale * Y-translation-offset, writes to sprite transform at 0x1C8.
0x00B47FD079CEffectAuraRing__render_all_spritesRenders all ring sprites from vector 0xCC/D0 via render_mesh with default params.
0x00B4802055CEffectAura__render_default_mesh_00b48020Renders a single sprite with default mesh parameters. Duplicate of render_default_mesh.
0x00B48060448CEffectAuraRing__update_sprite_transformUpdates a single ring sprite's transform matrix. Builds Y-rotation (camera-relative) * scale * Y-offset composite transform from sprite angle, size, and height offset. Writes to 0x1C8. No rendering.
0x00B48220221CEffectAuraTrail__ctorCEffectAuraTrail constructor. Calls CEffectAura base ctor with type 0x401. Sets vtable PTR_LAB_01183944. Initializes 4x3 float arrays (two sets of 2x3) and 6 additional fields. Object size 0x114 bytes.
0x00B48300110CEffectAuraTrail__dtorCEffectAuraTrail destructor. Sets vtable PTR_LAB_01183944, calls CEffectAura dtor chain.
0x00B48370134CEffectAuraTrail__scalar_deleting_dtorCEffectAuraTrail scalar deleting destructor. Frees 0x114 bytes.
0x00B484001143CEffectAuraTrail__create_main_trailsCreates 6 main trail sprites from hero textures (hero_011, hero_001, hero_021, hero_002, hero_031, plus one more). Each gets alpha=255, initial size=30.0, default quad vertices. Pushes to vector 0xFC/100.
0x00B48880381CEffectAuraTrail__create_secondary_trailsCreates secondary trail sprites (4 groups of 21 sprites each). Uses cloud11 texture, random initial angle, random orbit radius (80-100). Color is (255,100,100). Param 0=close radius, 1=far radius. Pushes to vector 0x108/10C.
0x00B48D50110CEffectAuraTrail__recycle_all_spritesRecycles all trail sprites from both vectors (0xFC/100 and 0x108/10C) back to the pool.
0x00B48DC028CEffectAuraTrail__init_and_create_trailsInitializes the trail effect. Calls FUN_00b48400 for first trail set, then FUN_00b48880 twice for additional trail groups.
0x00B48DE0129CEffectAuraTrail__configure_spriteConfigures a single trail sprite. Sets render type to 5, copies position from parent, sets size, angle, speed, alpha, blend modes (src=5, dst=7), resets quad vertices and frame counter.
0x00B48E70170CEffectAuraTrail__configure_all_spritesConfigures all trail sprites in vector 0xFC/100. Applies the same settings as configure_sprite to each element.
0x00B48F301033CEffectAuraTrail__update_all_trailsUpdates all trail sprites in vectors 0xFC and 0x108. For first vector: updates position from parent, computes rotation angle based on direction type (6 cases with 360-degree wrap), builds rotation Z + X + scale matrix and stores as transform. For second vector: increments speed with cap at 180, oscillates alpha on tick%300 cycle, computes orbital billboard positions using sin/cos LUTs, stores previous/current frame positions for trail interpolation.
0x00B493A0293CEffectAuraTrail__compute_single_trail_transformComputes rotation transform matrix for a single trail sprite. Calculates angle based on direction type (6 cases), wraps to 0-360 range, builds rotation Z + tilt X + scale matrix, stores resulting 3x4 transform matrix into sprite.
0x00B49530547CEffectAuraTrail__update_trail_sprite_positionUpdates a single trail sprite's orbital position. Increments speed (cap 180), oscillates alpha on tick%300, computes billboard quad corners using sin/cos LUTs for angle and elevation, stores previous/current positions for trail interpolation, updates parent's tracking positions.
0x00B49760234CEffectAuraTrail__render_allRenders all trail sprites. Iterates first vector (0xFC) calling render_mesh for each non-null sprite. Iterates second vector (0x108) computing UV coords from frame index for texture animation strip, then calling render_from_struct.
0x00B4985059CEffectAura__render_sprite_if_validRenders a single sprite with null check. Calls render_mesh with default parameters if param is non-zero.
0x00B49890122CEffectAura__render_sprite_with_frame_uvRenders a sprite with UV coordinates derived from frame counter. Sets V coords to (frame-1)/total and frame/total for animation strip texture sampling.
0x00B49910191CEffectAura__ctor_00b49910Constructor for CEffectAura variant. Calls parent init with type 0x11, sets vtable, initializes position/scale/animation fields. Sets default radius (0x41877777 ~16.9), frame limit 15, and initial tick offset 30.
0x00B499D0110CEffectAura__common_dtor_00b499d0Destructor for CEffectAura variant (vtable 01183a3c). Sets vtable, calls CEffectAura__dtor to clean up sprites, then calls dtor_base to destroy the base effect object.
0x00B49A40134CEffectAura__common_scalar_deleting_dtor_00b49a40Scalar deleting destructor for CEffectAura variant. Calls destructor chain (vtable set, dtor, dtor_base), then frees memory (0xF0 bytes) if deletion flag bit 0 is set.
0x00B49AD0248CEffectAura__common_create_ring_spritesCreates 10 ring sprites for the common aura effect. Allocates from pool with type 0x201, sets each sprite's direction index (0-9), angle offset from LUT, radius from height calculation, uses effect_ring_yellow.tga texture. Pushes each to vector at offset 0xD0.
0x00B49BD0251CEffectAura__common_create_spritesCreates sprites for the common aura effect in a grid pattern. Outer loop: elevation from -90 to ~55 in steps of 36. Inner loop: azimuth 0 to ~325 in steps of 36. Allocates type 1 sprites, sets radius from height, uses texture at 01183ac4. Pushes to vector at offset 0xDC.
0x00B49CD0110CEffectAura__common_recycle_all_spritesRecycles all sprites from both aura vectors. Iterates vector at 0xCC-0xD0 and vector at 0xD8-0xDC, calling recycle_effect_to_pool on each sprite, then resets end pointers to start (clears both vectors).
0x00B49D40265CEffectAura__common_recreate_spritesRecreates all common aura sprites. First recycles existing sprites from both vectors (calls common_recycle_sprites twice), then creates new sprites in the grid pattern (elevation -90 to ~55, azimuth 0 to ~325 in steps of 36). Allocates type 1 sprites from pool with radius from height calculation.
0x00B49E60453CEffectAura__common_update_all_spritesUpdates all common aura sprites each frame. For first vector (0xCC): updates radius with acceleration, clamps to max, builds rotation X matrix, applies alpha from parent, stores transform. For second vector (0xD8): increments radius and position. After processing, handles alpha fade-out when tick reaches threshold, decrementing alpha per-frame and clamping to 0-255.
0x00B4A030193CEffectAura__common_update_single_spriteUpdates a single common aura sprite's scale, position and transform. Applies radius acceleration with clamping, builds rotation X matrix, copies alpha from parent (offset 0xEC), stores resulting 3x4 transform matrix into sprite.
0x00B4A10065CEffectAura__update_sprite_position_and_alphaUpdates a single aura sprite's position and alpha. Increments radius by acceleration, adds speed to position offset, copies alpha value from parent's 0xEC field into sprite's 0x44 field. Simple per-frame update without matrix computation.
0x00B4A150546CEffectAura__variant_render_all_spritesRenders all variant aura sprites. For first vector (0xCC): computes quad vertex positions from sin/cos LUTs based on angle, renders with UV tiling (4 frames, modulo). For second vector (0xD8): calls variant_update_and_render for position, then renders with UV from frame/elevation index and texture strip coords.
0x00B4A380321CEffectAura__variant_render_single_spriteRenders a single variant aura sprite. Computes billboard quad corners from sin/cos LUTs at the sprite's angle, calculates UV tiling coordinates (4-frame modulo), then calls render_from_struct to draw.
0x00B4A4D0179CEffectAura__variant_render_spritesRenders a variant aura sprite with UV animation. Calls variant_compute_vertex_positions for the 3D transform, then builds UV coords from frame/elevation indices divided by atlas dimensions, calls render_from_struct to draw.
0x00B4A5901095CEffectAura__variant_compute_vertex_positionsComputes 3D vertex positions for a variant aura sprite. Uses vec3_dot_product for 4 corners, builds 4 rotation matrices (X/Y combinations for current and next frame), applies scale factor, stores resulting 12 vertex coordinates (4 corners x 3 components) into sprite offsets 0x1F8-0x260.
0x00B4A9E0205CEffectAura__variant_ctorConstructor for CEffectAura variant (vtable 01183adc). Calls parent init with type 0x400, initializes two 3-element vectors to zero (offsets 0x33-0x3B), sets 5 fields (0x3C-0x40) to value 2 as default blend/render parameters.
0x00B4AAB095CEffectAura__variant_dtorDestructor for CEffectAura variant (vtable 01183adc). Sets vtable, calls CEffectAura__dtor to release sprites, then calls dtor_base to destroy base effect.
0x00B4AB10119CEffectAura__variant_scalar_deleting_dtorScalar deleting destructor for CEffectAura variant. Calls destructor chain (vtable 01183adc, dtor, dtor_base), then frees memory (0x104 bytes) if deletion flag bit 0 is set.
0x00B4AB90518CEffectAura__variant_create_and_initCreates and initializes all hero aura effect particles. Two passes: first creates 6 layers x 21 particles with additive blend (dst=6), second creates 6 layers x 21 with src=5/dst=7 blend. Each particle gets orbital angle from layer*60 degrees, uses effect_hero_005.tga texture, radius=10, scale=14, alpha=255, elevation=60.
0x00B4ADA0499CEffectAura__variant_update_single_particleUpdates a single variant aura particle's orbital position. Computes billboard quad corners using sin/cos LUTs based on speed-adjusted angle and elevation. For particles after first frame, copies previous frame positions for trail interpolation. Updates parent's tracking positions for next particle in chain.
0x00B4AFA063CEffectRing__clear_all_particlesIterates through particle vector (offset 0xe4-0xe8), calls FUN_00b82fd0 (particle destroy) on each, then resets end pointer to start (clears the vector).
0x00B4B020114CEffectRing__init_single_particleInitializes a single particle for the ring effect. Sets type=5, copies position from owner, transfers various effect params (color, scale angles), sets blend modes 5/7, calls sub-init, resets tick counter to 0.
0x00B4B0A0138CEffectRing__init_all_particlesIterates through all particles in vector (0xe4-0xe8) and initializes each one with ring effect parameters - type=5, position, color, scale, blend modes 5/7, then resets tick counter.
0x00B4B140787CEffectRing__update_all_particlesUpdates all ring effect particles each frame. For each particle: updates rotation angle with wrap at 360, oscillates alpha (0-255) based on tick%600, computes rotation matrix from camera, calculates billboard corner positions using sin/cos lookup tables, stores transform matrix and previous frame positions for interpolation. Increments tick counter.
0x00B4B460721CEffectRing__update_single_particleUpdates a single ring effect particle. Increments rotation angle (wraps at 360), oscillates alpha based on tick%600, builds camera rotation matrix, computes billboard quad corner positions using sin/cos LUTs for the particle's angle and elevation, stores transform matrix and previous positions for interpolation.
0x00B4B740180CEffectRing__setup_texture_coords_allIterates through all particles and sets up texture animation coordinates. For particles with positive frame count and below threshold, sets blend mode to 6 and computes UV coords from frame index / total frames. Uses DAT_010e22dc as the texture atlas dimension.
0x00B4B800138CEffectRing__setup_texture_coords_singleSets up texture animation coordinates for a single ring particle. If frame count > 0, sets blend mode to 6, computes UV coords from frame-1 and frame divided by texture atlas dimension.
0x00B4B890151CEffectRingBlue__ctorConstructor for CEffectRingBlue (subclass of CEffectAura). Calls parent init with size 0xF7, sets vtable to 01183b7c, initializes 6 transform matrix slots (offsets 0x33-0x3b) to zero.
0x00B4B93095CEffectRingBlue__dtorDestructor for CEffectRingBlue. Sets vtable to 01183b7c, calls CEffectAura destructor, then calls cleanup function FUN_00b4dd10.
0x00B4B990119CEffectRingBlue__scalar_deleting_dtorScalar deleting destructor for CEffectRingBlue. Sets vtable, calls CEffectAura dtor + cleanup, then frees memory (size 0xF0) if flag bit 0 is set.
0x00B4BA10408CEffectRingBlue__update_single_particleUpdates a single blue ring particle. Computes orbital position using sin/cos LUTs based on angle and elevation. For frame counts 1-20, calculates billboard quad corners and stores previous/current positions for interpolation. Special case: if frame==20, uses raw angle offset. Updates owner's tracking positions.
0x00B4BBB063CEffectRingBlue__clear_all_particlesDestroys all particles in the blue ring effect's vector (0xe4-0xe8), calling particle destroy on each, then resets end pointer to start.
0x00B4BBF0672CEffectRingBlue__create_particlesCreates all particles for the blue ring effect. Generates 22 particles x 4 layers using effect_ring_blue.tga texture. Each particle gets orbital position calculated from sin/cos LUTs, with initial offset based on layer index (90 degrees apart). Sets radius=120, initial alpha=70, elevation=89. Stores billboard quad corners and previous positions for interpolation.
0x00B4BE90536CEffectRingBlue__reset_single_particleResets/reinitializes a single blue ring particle. Sets alpha=70, rotation speed=360, radius=120, elevation=89, computes initial angle offset from layer index. Calculates billboard positions using sin/cos LUTs. Initializes tick counter and previous frame positions.
0x00B4C0C0560CEffectRingBlue__update_all_particlesUpdates all blue ring particles each frame. Copies position from owner, handles lifecycle phases: fade-in (tick 200-290 using LUT), sustain, fade-out (tick 800+ decrementing radius). Computes rotation+scale matrix for each particle. For type 3/frame 21, stops at tick 1000. Increments tick counter.
0x00B4C2F0461CEffectRingBlue__update_single_particle_matrixComputes transform matrix for a single blue ring particle. Handles lifecycle phases: 0-200 = invisible, 200-290 = fade-in via LUT, 290-800 = sustain, 800+ = fade-out. Builds combined rotation Y + scale matrix for billboard rendering. Early exit if particle is type 3/frame 21 with tick >= 1000.
0x00B4C4C0160CEffectRingBlue__setup_texture_coords_allIterates through all blue ring particles and sets texture animation UV coordinates. For non-null particles with positive frame count, computes UV from frame/atlas dimension. Sets blend flag 0x100 (no wrapping). Uses DAT_010e22dc as atlas dimension.
0x00B4C560118CEffectRingBlue__setup_texture_coords_singleSets texture animation UV coordinates for a single blue ring particle. Computes UV from frame index / atlas dimension. Sets blend flag 0x100 (no wrapping).
0x00B4C5E0133CEffectRingBlueSmall__ctorConstructor for CEffectRingBlueSmall (variant of blue ring). Calls parent init with size -1 (no alloc), sets vtable to 01183c0c. Initializes scale=1.0 at offset 0x33, clears flags at 0x34-0x37.
0x00B4C67095CEffectRingBlueSmall__dtorDestructor for CEffectRingBlueSmall. Sets vtable to 01183c0c, calls CEffectAura dtor, then calls cleanup function.
0x00B4C6D0119CEffectRingBlueSmall__scalar_deleting_dtorScalar deleting destructor for CEffectRingBlueSmall. Sets vtable, calls CEffectAura dtor + cleanup, frees memory (size 0xE0) if flag bit 0 is set.
0x00B4C75063CEffectSquareRange__clear_all_particlesClears all particles in the square range effect. Iterates vector at offset 0xd4-0xd8, destroys each particle, resets end pointer to start.
0x00B4C790203CEffectSquareRange__create_particleCreates a single particle for the square range indicator effect. Allocates particle, sets alpha=255 white color, loads effect_SquareRange.tga texture. Scales by range*factor. Special case for skill 0x3DF: sets duration=300, color grey, blend mode 6. Pushes to particle vector.
0x00B4C86051CEffectSquareRange__apply_skill_overridesApplies skill-specific overrides for the square range effect. For skill 0x3DF: sets duration=300, grey color (0x5c,0x5c,0x5c), and blend mode 6.
0x00B4C8E0326CEffectSquareRange__update_all_particlesUpdates all square range particles. Copies position from owner. If range changed (dirty flag at 0xd0), updates particle scale. Builds rotation X matrix (pi/4 tilt) combined with uniform XY scale, stores as particle transform matrix. Increments tick counter.
0x00B4CA30260CEffectSquareRange__update_single_particleUpdates a single square range particle transform matrix. If range dirty flag set, updates scale from owner range * factor. Builds rotation X (pi/4) * uniform XY scale matrix and stores as particle transform.
0x00B4CB4083CEffectSquareRange__setup_texture_coords_allSets up texture coordinates for all square range particles. For each non-null particle, calls texture setup with UV range [0,1] and a single-frame texture flag.
0x00B4CBA059CEffectSquareRange__setup_texture_coords_singleSets up texture coordinates for a single square range particle. Sets UV range [0,1] full texture with single-frame flag.
0x00B4CBE0188CEffectTrail__ctorConstructor for CEffectTrail. Calls parent init with size 0x12, sets vtable to 01183cb0, allocates a linked list node (size 0xC) for trail segments. Initializes 10 transform matrix slots to zero. Sets max trail segments to 50 (offset 0x0B).
0x00B4CCA0146CEffectTrail__dtorDestructor for CEffectTrail. Sets vtable to 01183cb0, walks the linked list of trail segments freeing each node (size 0xC), then frees the list head. Calls parent cleanup.
0x00B4CD40170CEffectTrail__scalar_deleting_dtorScalar deleting destructor for CEffectTrail. Frees linked list of trail segments, calls parent cleanup, frees self (size 0x14C) if flag bit 0 set.
0x00B4CDF01032CEffectTrail__create_trail_particlesCreates 10 trail particles with randomized parameters. Each gets random angle (0-360), random size (50-100), random velocity (-60 to -150), random elevation. Builds rotation Y matrix for initial direction. Computes 3D spawn position from rotation. Stores velocity/acceleration/gravity parameters. Adds particles to linked list. Sets alpha=255.
0x00B4D200103CEffectTrail__clear_all_trail_segmentsClears all trail segments. Destroys each particle in the linked list, then frees all linked list nodes (size 0xC each), resets list to empty state with count=0.
0x00B4D290597CEffectTrail__update_all_particlesUpdates all trail particles each frame. For each particle in the linked list: accumulates velocity + acceleration, applies rotation matrix to get directional offset, adds owner position as base, checks ground height via C3dAttr and dampens vertical velocity if below ground. Increments tick and updates size.
0x00B4D4F0546CEffectTrail__update_single_particleUpdates a single trail particle. Accumulates velocity and acceleration, applies Y-rotation matrix for directional movement. Adds base position from owner, checks ground collision via C3dAttr__GetInterpolatedHeight, dampens bounce if below terrain. Updates position, size, and velocity state.
0x00B4D72039CEffectTrail__render_all_particlesRenders all trail particles by iterating the linked list and calling a render function with billboard mode 1 for each particle.
0x00B4D75017CEffectTrail__render_single_particleRenders a single trail particle with billboard mode 1.
0x00B4DAE0242CEffectAura__ctor_00b4dae0Constructor for CEffectAura base class. Sets vtable to 01183d70, stores size parameter, initializes position/rotation/scale fields to zero, sets default duration=60, mode=1, render flag=0x82. Initializes effect list pointers and state flags to zero.
0x00B4DD1077CEffectAura__dtor_baseBase destructor for CEffectAura. Sets vtable to 01183d70, then clears and frees the effect element vector.
0x00B4DDB019CEffectAura__compare_idCompares two effect aura objects by their ID field at offset +4. Returns true if they have the same ID.
0x00B4DDD0105CEffectAura__scalar_deleting_dtorScalar deleting destructor for CEffectAura base class. Sets vtable, clears effect vector, frees self (size 0xCC) if flag bit 0 set.
0x00B4DE40328CEffectAura__add_effect_entryAdds an effect entry to the aura's effect list. Takes an ID, texture path string, and two extra params. Builds a struct (ID, param1, param2, texture path as std::string) and pushes it to the vector at offset 0xB4. Falls through to STL_vector_effect_insert_grow if vector is at capacity.
0x00B4DF9036CEffectAura__check_and_remove_expiredChecks if this aura effect has expired by calling virtual method at vtable+0x18. If expired (returns false), calls removal function with param 0. Returns 1 if removed, 0 if still active.
0x00B4DFC0278CEffectAura__remove_effect_by_idRemoves all effect entries matching the given ID from the effect list vector at offset 0xB4. For each match, shifts remaining elements down (with std::string move), destroys the last element's string, and decrements the vector end pointer by 0x24.
0x00B4E0E0100CEffectAura__check_visibilityChecks if this aura effect should be visible. Returns 1 (invisible) if entity doesn't exist, has no render object, is the local player (when not force-rendered), or fails a stealth/invisibility check. Otherwise delegates to another visibility check.
0x00B4E17047CEffectAura__set_effect_param_by_idFinds the effect entry with the given ID in the effect list (offset 0xB4) and updates its param1 field (at entry offset +4) with the given value.
0x00B4E1A0229CEffectAura__execute_effect_entriesExecutes effect entries matching the current frame index. For type 0 effects with valid string data, plays a 3D sound via CSoundMgr__play_sound_from_resource using the effect's texture path and position offset from camera. For type 1 effects, triggers a game mode virtual call with param 0x7A.
0x00B4E29057CEffectAura__try_renderAttempts to render the aura effect. Only renders if effects are enabled in game settings (option 8) or force-render flag is set. Checks virtual visibility method, then dispatches to virtual render method if not already rendering.
0x00B4E2D0187CEffectAura__init_with_idInitializes the aura with an entity ID. Stores the ID at offset +4, then calls Lua function "IsForceRenderEffect" to check if this effect should always render regardless of settings.
0x00B4E39013CEffectAura__set_owner_idSets the owner entity ID for this aura effect at offset 0x20.
0x00B4E3A052CEffectAura__set_target_entitySets the target entity for the aura effect. Looks up entity by ID, stores the ID at offset 0x24 and copies the entity's 3D position (offsets 0x10-0x18) to the aura's target position (0x14-0x1C).
0x00B4E3E0292CEffectAura__update_and_renderMain update+render tick for the aura. Fetches target entity position, calls virtual update method. If not paused, executes effect entries matching current frame (type 0: plays 3D sound via CSoundMgr, type 1: triggers game mode virtual call with 0x7A). Calls virtual post-render method, increments frame counter.
0x00B4E510106CEffectAura__update_distance_visibilityComputes distance from effect position to current player world position. Sets visibility flag (offset 0x34) to true if distance exceeds the threshold at offset 0x38 (i.e., too far away to render).
0x00B4E630103CEffectAura__is_within_rangeReturns true if the player is within the effect's distance threshold (offset 0x38). Computes 3D distance from effect position to current player world position.
0x00B4E6A026CEffectAura__is_owner_aliveChecks if the aura's owner entity still exists. Returns 0 if owner ID is set but entity lookup fails (owner removed), 1 otherwise.
0x00B4E6C010CEffectAura__is_duration_reachedReturns true (low byte) if the aura's frame counter (offset 0x28) has reached or exceeded its duration limit (offset 0x2c, default 60). The upper 3 bytes return the frame counter >> 8, typically ignored by callers. Used by 24+ CEffect subclasses as a lifetime check.
0x00B4E6D0209CEffectElectric__ctorConstructor for CEffectElectric (electric/lightning effect). Calls CEffectAura base ctor, sets vtable to 01183e10. Initializes 6 vertex positions (2 groups of 3) and 4 additional state fields to zero.
0x00B4E7B095CEffectElectric__dtorDestructor for CEffectElectric. Sets vtable to 01183e10, calls CEffectAura dtor + CEffectAura base dtor.
0x00B4E810119CEffectElectric__scalar_deleting_dtorScalar deleting destructor for CEffectElectric. Size 0x110 bytes. Sets vtable, calls both dtors, frees memory if flag set.
0x00B4E890389CEffectElectric__create_lightning_particlesCreates lightning effect particles. Generates 4 layers x 20 segments x 4 sub-particles using effect_elec1.tga texture. Each segment gets radius 0.1, random Y rotation offset. Builds a height table with decaying values from 9.0 down. Particles stored in vector at offset 0x104.
0x00B4EA20911CEffectElectric__update_single_particleUpdates a single lightning particle. For the first segment (index 0): computes jittered vertex positions from base offsets using sin/cos LUTs, determines facing angle from delta positions. For segments 1-18: computes cylindrical positions around the axis using facing angle, updates billboard quad corners and previous frame positions for interpolation.
0x00B4EDB063CEffectElectric__clear_all_particlesClears all lightning effect particles. Iterates vector at offset 0x104-0x108, destroys each particle, resets end pointer.
0x00B4EE90164CEffectElectric__update_tickUpdates the electric effect tick counter. At ticks 20-23, creates new lightning particles at angles 0 and 180 degrees. At tick 25, plays a 3D sound effect via CSoundMgr__play_sound_from_resource positioned relative to the camera. Increments tick counter.
0x00B4EF501376CEffectElectric__update_all_particlesUpdates all electric/lightning particles. Handles tick-based creation of new lightning at ticks 20-23, plays 3D sound at tick 25. For each particle: grows size, fades alpha, adds random jitter during initial ticks. Computes camera rotation matrix, builds jittered vertex positions for the first sub-particle, then calculates billboard quad positions for segments 1-18 along the lightning arc.
0x00B4F4B01145CEffectElectric__update_single_particle_fullFull update for a single lightning particle including size growth, alpha fade, random jitter during initial phase, camera rotation matrix computation, vertex jitter for first sub-particle, and billboard quad positions along the lightning arc for segments 1-18.
0x00B4F930238CEffectElectric__setup_texture_coords_allSets up texture coordinates for all lightning particles. For valid particles (segments 1-18, sub-particle > 0): temporarily reduces alpha by segment*5, sets blue-tinted color (r=seg*6, g=seg*6, b=255), computes UV from segment/atlas dimension. Restores original alpha after rendering.
0x00B4FA20197CEffectElectric__setup_texture_coords_singleSets texture coordinates for a single lightning particle. For segments 1-18 with sub-particle > 0: temporarily adjusts alpha, applies blue-tinted color gradient, computes UV from segment/atlas. Restores original alpha.
0x00B4FAF0668CEffectParticleEmitter__ctorConstructor for CEffectParticleEmitter. Calls CEffectAura base ctor with size 0x3CE, sets vtable to 01183ec8. Initializes spawn shape vertices (12 floats for box/cylinder bounds), various emitter params (gravity, sizes, angles, speeds), default color (255,255,255,255). Allocates texture path string "prt_flame" and initializes particle tree structure.
0x00B4FD90125CEffectParticleEmitter__dtorDestructor for CEffectParticleEmitter. Sets vtable to 01183ec8, destroys particle tree, calls CEffectAura dtor, destroys texture path string, calls CEffectAura base dtor.
0x00B4FE10149CEffectParticleEmitter__scalar_deleting_dtorScalar deleting destructor for CEffectParticleEmitter. Size 0x18C bytes. Full destructor chain then optional free.
0x00B4FEB0138CEffectParticleEmitter__compute_spawn_countComputes how many particles to spawn this frame. Uses random_value_in_range for spawn rate, multiplied by speed factor. Accumulates fractional remainder between frames to ensure accurate particle counts over time.
0x00B4FF40205CEffectParticleEmitter__spawn_particlesSpawns new particles based on computed spawn count. For each particle to spawn: gets next unprocessed ID from the effect pool, calls virtual init method. If loop mode is on (0x5b==1), forces alpha to the emitter's stored value.
0x00B5001064CEffectParticleEmitter__clear_all_particlesClears all particles in the emitter. Destroys each particle in the vector (offset 0x170-0x174), then clears the effect tree node structure.
0x00B50050134CEffectParticleEmitter__create_initial_particlesCreates the initial batch of particles (count from offset 0x55). For each: allocates particle, sets scale, calls virtual init method, runs particle setup function, pushes to particle vector at offset 0x5C.
0x00B500E0455CEffectParticleEmitter__init_particleInitializes a single particle with emitter parameters. Copies owner position, sets texture, randomizes lifetime, size, velocity (x/y/z) from min/max ranges. Sets initial gravity-affected velocity direction, resets alpha and tick counter. Optionally sets blend modes if configured.
0x00B502B0179CEffectParticleEmitter__update_existing_particlesUpdates all existing particles. If looping with zero spawn rate, calls reset function. For each particle: calls virtual update method, checks lifetime expiry (recycles if lifetime reached, zero lifetime, or loop mode), forces alpha on loop mode particles.
0x00B50390257CEffectParticleEmitter__tick_spawn_and_updateMain per-frame tick for the emitter. If not paused: computes spawn count, spawns new particles (with loop-mode alpha override). Then iterates all existing particles and calls virtual per-particle update method.
0x00B504A0819CEffectParticleEmitter__update_single_particleUpdates a single emitter particle. Sets RGB color, handles alpha fade in/out based on lifetime. Applies velocity with speed factor and acceleration/gravity. Builds transform matrix - either fixed rotation (XYZ Euler) with scale, or camera-facing billboard with rotation X + scale. Stores resulting 3x4 transform matrix on the particle.
0x00B507E0111CEffectParticleEmitter__setup_texture_coords_allSets up texture/render parameters for all emitter particles. For each non-null particle: copies billboard mode flag, wrap mode, and UV coordinate data from global defaults at 01183f60.
0x00B5085085CEffectParticleEmitter__setup_texture_coords_singleSets texture/render parameters for a single emitter particle. Copies billboard mode flag, wrap mode, and UV data from global defaults.
0x00B508B0943CEffectParticleEmitter__update_single_particle_fullFull update for a single emitter particle including position copy, lifetime check, and all physics/transform logic. If particle expired and not in loop/immortal mode, recycles it back to pool. Otherwise: applies color, alpha fade, velocity+gravity, and builds billboard or fixed-rotation transform matrix. Increments tick counter.
0x00B50C6040CEffectParticleEmitter__set_particle_countSets the initial particle count (offset 0x55) and rebuilds the emitter if the count changed. Calls virtual clear and create methods to recreate particle pool.
0x00B50C9080CEffectParticleEmitter__set_speed_factorSets the speed multiplier factor (offset 0x158) for the emitter. If changed, propagates the new speed factor to all existing particles' speed field (offset 0xC0).
0x00B50CE047CEffectParticleEmitter__update_distance_checkChecks distance to player and sets visibility/pause flags. If within range: clears out-of-range flag and pause flag. If out of range: sets pause flag, and if no persistent particles remain, also sets visibility flag to hidden.
0x00B50D10136CEffectOrbit__ctor_00b50d10Constructor for CEffectOrbit (orbiting particle effect). Calls CEffectAura base ctor, sets vtable to 01183f74. Initializes orbit state: mode=0, orbit count=2, and 3 additional state fields to zero.
0x00B50DA095CEffectOrbit__dtor_00b50da0Destructor for CEffectOrbit. Sets vtable to 01183f74, calls CEffectAura dtor then CEffectAura base dtor.
0x00B50E00119CEffectOrbit__scalar_deleting_dtor_00b50e00Scalar deleting destructor for CEffectOrbit. Size 0xE0 bytes. Full dtor chain then optional free.
0x00B50E8063CEffectOrbit__clear_all_particlesClears all orbit effect particles. Iterates vector at 0xd4-0xd8, destroys each, resets end pointer.
0x00B50EC0595CEffectOrbit__create_particlesCreates orbiting particles. For each orbit slot (count from 0xCC): creates sub-particles (count from 0xD0) with random angle, random elevation index (0-2), and evenly-distributed initial rotation offset. Selects texture based on skill ID: FireOrb (0x2DF), WaterOrb (0x2E1), StoneOrb (0x2E2), LightningOrb (0x2E0), fog1 (0x3ED). Special color for skill 0xE4 (blue/black). Default texture is effect_thunder_center. Sets size, speed, height offset parameters.
0x00B51120279CEffectOrbit__apply_skill_textureApplies skill-specific texture and size to an orbit particle. Skill 0x2DF=FireOrb (size 2.3), 0x2E1=WaterOrb (size 1.3), 0x2E2=StoneOrb (size 2.3), 0x2E0=LightningOrb (size 2.3), 0x3ED=fog1 (size 6.0, special params). Skill 0xE4=blue/black color per sub-particle index.
0x00B51250668CEffectOrbit__update_all_particles_00b51250Updates all orbiting particles. For each: copies owner position, fades in alpha over 200 ticks, advances rotation angle by speed. Builds combined camera rotation + X rotation (pi) + scale + translation matrix, where translation uses sin/cos of angle for circular orbit path with height bobbing. First sub-particle gets extra size oscillation. Increments tick counter.
0x00B514F0605CEffectOrbit__update_single_particleUpdates a single orbit particle. Fades in alpha over 200 ticks, advances rotation angle. Builds camera rotation + X rotation (pi) + uniform scale matrix. Computes orbital position from sin/cos of angle with height bobbing. First sub-particle gets extra size oscillation. Stores combined transform matrix on particle.
0x00B5175083CEffectOrbit__setup_texture_coords_allSets up texture coordinates for all orbit particles. Calls render mesh with UV [0,1] and billboard flag for each non-null particle.
0x00B517B059CEffectOrbit__setup_texture_coords_singleSets texture coordinates for a single orbit particle. Calls render mesh with UV [0,1] and billboard flag.
0x00B517F029CEffectOrbit__set_orbit_countSets the number of orbital slots (offset 0x33). If changed, calls virtual create method to rebuild particles.
0x00B51810310CEffectNameplate__ctorConstructor for CEffectNameplate (floating name/text above entities). Calls CEffectAura base ctor, sets vtable to 01184080. Initializes font path string (12 chars from DAT_0118410c). Sets various display flags and state fields to zero.
0x00B5195095CEffectNameplate__dtorDestructor for CEffectNameplate. Sets vtable to 01184080, destroys font path string, calls CEffectAura base dtor.
0x00B519B0119CEffectNameplate__scalar_deleting_dtorScalar deleting destructor for CEffectNameplate. Size 0x108 bytes. Destroys font string, base dtor, optional free.
0x00B51A3043CEffectNameplate__set_position_offsetSets the nameplate position offset (X, Y) at large offsets 0x3FEC and 0x3FF0 within the attached render object (offset 0xCC). Used to position the nameplate relative to the character.
0x00B51A60600CEffectNameplate__compute_screen_positionComputes the 3D screen position for the nameplate. Checks visibility conditions (force render or distance check), gets owner entity, computes font height and character-specific offset. Projects 3D position through view and inverse projection matrices to get final screen-space position. Returns 1 if visible and position computed, 0 otherwise.
0x00B51CD065CEffectNameplate__get_render_positionGets the nameplate render position (3 floats) from the attached render object at offset 0x3FC0. If no render object, returns zero vector.
0x00B51D60620CEffectNameplate__get_height_offset_for_skillGets the vertical height offset for positioning a nameplate based on skill ID and effect name. Has hardcoded offsets for specific skills (0x4C3, 0x40B/C, 0x43E, etc.). Also checks effect name for "strangelights", "superstar", "ljosalfar" keywords. For custom headgear effects (ID > 0x9B5), calls Lua "GetHatEfPosX" to get additional offset.
0x00B52060441CEffectNameplate__get_vertical_offset_for_skillGets the vertical position offset for a nameplate based on skill ID and entity state. For custom headgears (ID > 0x9B5), checks Lua "IsIgnoredRidingState_Include_Att..." and "GetHatEfPos". Checks riding state via entity flags. Returns combined offset subtracting 7 as base.
0x00B52980900CEffectNameplate__init_render_layerInitializes the render layer for the nameplate effect. Allocates effect layer, handles shrink state via Lua "IsAdjustSizeWhenShrinkState" and "IsAdjustPositionWhenShrinkState". Configures rendering flags based on a large switch of skill IDs. For custom headgear IDs, queries Lua "IsAttachedToHead". Stores camera angle and calls virtual init method.
0x00B531E0136CEffectNameplate__setup_effect_resourcesSets up effect resources (textures/sounds) based on skill ID. Contains a massive switch for skills 0xCC-0xD3 and 0x426 that add specific effect entries. For skills in range 0x44D-0x976, uses a jump table. For custom headgear IDs (> 0x9B4), queries Lua "IsRenderBeforeCharacter" for render ordering.
0x00B534A0283CEffectAura__add_eleven_effect_entriesCEffectAura: add eleven effect entries
0x00B5621032CEffectNameplate__check_skill_has_custom_renderChecks if the skill ID (0x425-0x976 range) has a custom render configuration. Uses a byte lookup table to dispatch to specific handler cases. Returns a bool-like value indicating custom render status.
0x00B56D3079CEffect__load_effect_resource_by_skill_idLoads effect resources (STR/sprite files) for a given skill ID. For IDs 0x0D-0x976, uses a massive jump table to load skill-specific effect files. For custom headgear IDs (> 0x9B4), queries Lua "GetHatEfResName" and loads the returned resource name. Each case typically constructs a std::string path and calls CEffect__load_resource_by_name.
0x00B5757D33CEffect__load_su_grooming_resourceJump table case that loads the su_grooming/su_grooming.str effect resource.
0x00B5759E33CEffect__load_su_chattering_resourceJump table case that loads the su_chattering/su_chattering.str effect resource.
0x00B575BF33CEffect__load_su_nyanggrass_resourceJump table case that loads the su_nyanggrass/su_nyanggrass.str effect resource.
0x00B575E033CEffect__load_su_hiss_resourceJump table case that loads the su_hiss/su_hiss.str effect resource.
0x00B5760133CEffect__load_su_powerofflock_resourceJump table case that loads the su_powerofflock/su_powerofflock.str effect resource.
0x00B5762233CEffect__load_su_svg_spirit_resourceJump table case that loads the su_svg_spirit/su_svg_spirit.str effect resource.
0x00B63866204CEffect__load_resource_and_check_hatLoads effect resource by name. For custom headgear IDs (> 0x9B4), also queries Lua "GetHatEfResName" for an additional resource name and loads that as well if present.
0x00B65EE0600CEffectNameplate__update_allMain per-frame update for the nameplate effect. Updates camera rotation tracking, copies owner position to render layer, computes screen position and ticks animation. For skill 0x851, plays periodic sound effect (ABC_ABYSS_SQUARE) every 64 ticks. Handles head-tracking: gets entity's render offset and applies scaled position. Stores entity scale factors for rendering.
0x00B6614072CEffectNameplate__update_single_tickUpdates a single render layer tick. Computes screen position; if invisible and not skill 0x584, offsets Y by -80 to hide. Otherwise animates normally at origin.
0x00B6618839CEffect__tick_animation_at_originTicks the effect animation at the origin position (0,0,0).
0x00B662C0154CEffectNameplate__render_with_flashRenders the nameplate effect with optional screen flash. For specific skill IDs (0x647, 0x907-0x90F), adds a white flash overlay that increments at 0x2000000 per tick (max 0xAA000000 alpha). For skills 0x95B-0x95F, flash increments faster at 0x10000000. Renders with additive blending, then calls main layer render.
0x00B663D0138CEffectNameplate__update_camera_rotationUpdates the camera rotation tracking for the nameplate effect. If camera angle has changed since last frame, computes the delta and adds it to the render object's rotation offset (0x3FA4), wrapping to [0, 360) range.
0x00B6646022CEffectNameplate__set_layer_blend_modeSets the blend mode (offset 0x2B8) on the render object at offset 0xCC.
0x00B6648030CEffectNameplate__set_layer_scaleSets the scale value (offset 0x3FB4) on the render object, if it exists.
0x00B664A062CEffectNameplate__init_with_skill_idInitializes the nameplate effect with a skill ID. Calls base CEffectAura__init_with_id, then for specific skill IDs (0x3F4, 0x40A-0x447 subset, and all custom headgear IDs > 0x9B4) sets the force-render flag at offset 0xC8.
0x00B66540111CEffectNameplate__set_render_position_3dSets the 3D render position (3 floats at offsets 0x3FC0-0x3FC8) on the render object. If flag param is 1, also enables auto-positioning flag (0x3FBC) and stores the additional parameter at 0x3FB8.
0x00B665B019CEffectNameplate__set_animation_typeSets the animation type (offset 0x1C) on the render object.
0x00B665D027CEffectNameplate__set_layer_countSets the layer count (offset 0x3F9C) on the render object to (param - 1).
0x00B665F026CEffectNameplate__set_anim_speedSets the animation speed (offset 0x3F98) on the render object.
0x00B6661030CEffectNameplate__set_rotation_offsetSets the rotation angle offset (offset 0x3FA4) on the render object.
0x00B6663030CEffectNameplate__set_render_paramSets a render parameter (offset 0x3FB0) on the render object.
0x00B6665033CEffectNameplate__fast_forwardFast-forwards the nameplate animation by the given amount if a render object exists.
0x00B6668026CEffectNameplate__set_anim_frameSets the current animation frame (offset 0x3FA0) on the render object.
0x00B666A065CEffectNameplate__change_textureChanges the nameplate's texture/font path. Computes string length, updates the font path string, recycles the current render object back to pool, then calls virtual create to rebuild with new texture.
0x00B666F0151CEffectRingBlue2__ctorConstructor for CEffectRingBlue2 (variant blue ring effect). Calls CEffectAura base ctor, sets vtable to 01196310. Initializes 6 vertex slots and 3 state fields to zero.
0x00B6679095CEffectRingBlue2__dtorDestructor for CEffectRingBlue2. Sets vtable to 01196310, calls CEffectAura dtor then base dtor.
0x00B667F0119CEffectRingBlue2__scalar_deleting_dtorScalar deleting destructor for CEffectRingBlue2. Size 0xF0 bytes.
0x00B66870555CEffectRingBlue2__create_particlesCreates particles for the blue ring 2 effect. Generates 21 particles x 4 layers using effect_ring_blue.tga. Two configurations (param 0 vs 1) with different sizes (4.5-5.5 vs 5.5-6.5), elevation angles, and radii per layer. Sets blue color (100,100,255). Initializes billboard quad vertices.
0x00B66AA0433CEffectRingBlue2__update_single_particleUpdates a single blue ring 2 particle. Computes orbital radius from sin/cos LUTs based on angle, applies fade-in during first 91 ticks. Calculates billboard quad corners using elevation angle and rotation. Stores previous/current positions for interpolation.
0x00B66C6063CEffectRingBlue2__clear_all_particlesClears all blue ring 2 particles by recycling each to the effect pool, then resets the vector.
0x00B66CA0124CEffectRingBlue2__init_effectInitializes the blue ring 2 effect. Sets duration to 400, plays a sound billboard, then creates two sets of ring particles (configuration 0 and 1).
0x00B66D30603CEffectRingBlue2__update_all_particlesUpdates all blue ring 2 particles. Each frame: oscillates radius via cos table, fades alpha in (0-20 ticks, +5/tick, max 180) then out (111+ ticks, -1/tick). Computes orbital positions using sin/cos LUTs. Updates billboard quad corners and previous positions. Increments tick counter.
0x00B66F90577CEffectRingBlue2__update_single_particle_fullFull update for a single blue ring 2 particle including radius oscillation, alpha fade in/out, orbital position calculation, and billboard quad update. Similar to the batch update but for a single particle.
0x00B671E0164CEffectRingBlue2__setup_texture_coords_allSets up texture UV coordinates for all blue ring 2 particles. For each with positive frame count: computes UV from frame/atlas dimension with blend flag 0x100.
0x00B67290122CEffectRingBlue2__setup_texture_coords_singleSets texture UV coordinates for a single blue ring 2 particle. Computes UV from frame/atlas dimension with blend flag 0x100.
0x00B67310253CEffectBeamRing__ctorConstructor for CEffectBeamRing (ring beam/laser effect). Calls CEffectAura base ctor, sets vtable to 011963b4. Initializes 6 vertex positions, 6 beam direction fields, and 9 additional state fields all to zero.
0x00B67410125CEffectBeamRing__dtorDestructor for CEffectBeamRing. Sets vtable, calls CEffectAura dtor then base dtor.
0x00B67490149CEffectBeamRing__scalar_deleting_dtorScalar deleting destructor for CEffectBeamRing. Calls full dtor chain, optional free.
0x00B67530919CEffectBeamRing__create_particlesCreates particles for the beam ring effect with multiple configurations based on init parameter.
0x00B678F01006CEffectBeamRing__create_ring_particlesCreates ring-layer particles for the beam ring effect. Allocates 21 particles per layer using effect_ring_white/alpha_down/ring_blue textures. Multiple configurations (0-8) control texture, color, radius, and rotation speed. Each particle gets randomized angle offset and drift values.
0x00B67D10616CEffectBeamRing__create_orbit_particlesCreates orbit-layer particles for the beam ring effect. Allocates 21 particles per orbit band using different textures and colors per configuration (0, 1, 2, 5). Elevation angle decreases per band for stacked ring appearance.
0x00B67F90868CEffectBeamRing__setup_texture_coords_allSets up texture coordinates for all beam ring particles with UV animation.
0x00B68300481CEffectBeamRing__setup_texture_coords_singleSets texture coordinates for a single beam ring particle.
0x00B684F0465CEffectBeamRing__compute_particle_orbitComputes orbital position for a single beam ring particle using sin/cos LUTs. Calculates radius with oscillation factor, applies elevation angle and rotation to determine 3D billboard quad corners. Stores previous positions for interpolation.
0x00B686D0157CEffectBeamRing__clear_all_particlesClears all beam ring particles by recycling to pool and resetting vector.
0x00B688301989CEffectAuraManager__create_effect_by_idFactory method that creates the appropriate CEffectAura subclass based on effect ID. Routes to CEffectRing, CEffectRingBlue, CEffectSquareRange, CEffectTrail, CEffectElectric, CEffectOrbit, CEffectNameplate, CEffectParticleEmitter, CEffectRingBlue2, or CEffectBeamRing constructors.
0x00B69060246CEffectBeamRing__update_single_pok_particleUpdates a single pok-textured beam ring particle per frame. Adjusts rotation speed (offset 0x50), fades alpha in during first 11 ticks (+15/tick) then out (-3/tick). Swaps between pok1 and pok3 textures at specific frame intervals based on particle index. Applies vertical drift.
0x00B691601504CEffectBeamRing__update_all_particlesMain per-frame update for CEffectBeamRing. First calls create_effect_by_id for phased particle creation. Then iterates 3 particle vectors: (1) ring particles with alpha fade and orbital position via sin/cos LUTs, (2) orbit particles with similar but different angle formula, (3) pok particles with rotation/texture swap/drift. Increments tick counters.
0x00B69740529CEffectBeamRing__update_single_ring_particleUpdates a single ring-layer particle for CEffectBeamRing. Computes alpha fade-in (first 16 ticks, +5/tick, max 180) then fade-out (-2/tick). Calculates orbital position using sin/cos LUTs with angle based on particle index and layer. Updates billboard quad corners and previous positions.
0x00B69960529CEffectBeamRing__update_single_orbit_particleUpdates a single orbit-layer particle for CEffectBeamRing. Same alpha fade pattern as ring particles but uses a different angle formula (index*0x11+tick)*2 for the oscillation component. Stores positions at offset 0xe4-0xf8 (orbit vector) vs 0xcc-0xe0 (ring vector).
0x00B69B8059CEffectBeamRing__render_single_mesh_particleRenders a single mesh-type particle for CEffectBeamRing by calling CEffectLayer__render_mesh with default UV (0,0 to 1,1) and blend mode 1. Only renders if particle pointer is non-null.
0x00B69BC0354CEffectBeamRing__render_all_particlesRenders all CEffectBeamRing particles across 3 vectors. Ring and orbit particles use UV-based rendering (CEffectLayer__render_from_struct with frame-based UV coords and blend flag 0x100). Pok particles use mesh rendering (CEffectLayer__render_mesh).
0x00B69D30122CEffectBeamRing__render_single_uv_particleRenders a single UV-animated particle for CEffectBeamRing. Computes texture UV coordinates from particle frame index divided by atlas dimension, applies blend flag 0x100, and calls CEffectLayer__render_from_struct.
0x00B69DB0122CEffectBeamRing__render_single_uv_particle_altRenders a single UV-animated particle (alternate version). Identical to render_single_uv_particle but used as a standalone callback for a different particle vector. Same UV calculation from frame/atlas and blend flag 0x100.
0x00B69E30613CEffectBeamRing__rotate_vertices_by_cameraRotates a 4-vertex quad by camera yaw and pitch angles. Reads camera rotation from the global mode1 object (offsets 0x2c and 0x30). Applies two sequential rotations using sin/cos LUTs to transform the 12-float vertex array (4 vertices x 3 components).
0x00B6A0A0173CEffectSparkle__ctorConstructor for CEffectSparkle (sparkle/pikapika effect). Calls CEffectAura base ctor with duration 200, sets vtable to 0119649c. Initializes 6 vertex positions and 6 additional state fields to zero.
0x00B6A150110CEffectSparkle__dtorDestructor for CEffectSparkle. Sets vtable to 0119649c, calls CEffectAura dtor chain then base dtor.
0x00B6A1C0134CEffectSparkle__scalar_deleting_dtorScalar deleting destructor for CEffectSparkle. Size 0xFC bytes. Sets vtable, calls full dtor chain, optionally frees memory.
0x00B6A250114CEffectSparkle__set_all_particles_colorSets RGB color on all CEffectSparkle particles across both particle vectors (offsets 0xe4-0xe8 and 0xf0-0xf4). Iterates each vector and calls CEffectLayer__set_rgb_color with the given R, G, B values.
0x00B6A2D0578CEffectSparkle__set_all_particles_textureSets texture on all CEffectSparkle particles across both vectors by name string. For each particle, copies the texture name string (with SSO handling for strings > 15 chars) and calls CEffectLayer__set_texture_by_name. Cleans up the string copy after use.
0x00B6A520703CEffectSparkle__create_ring_particlesCreates ring-layer particles for CEffectSparkle. Allocates 22 particles per band (type 0xd) with effect_ring_blue texture, blue color (100,100,255). Creates 3 bands with decreasing elevation angles (0x37, 0x32, 0x2d) and rotation offsets 0x5a apart. Computes initial orbital positions using sin/cos LUTs.
0x00B6A7E0214CEffectSparkle__create_sparkle_particlesCreates sparkle-layer particles for CEffectSparkle. Allocates 2 particles (type 0xd) with pikapika2 texture, alpha=200, size=9.0. Particles are placed 180 degrees apart (angle offsets 0x16 and 0x2c) with elevation offsets 0xb4 apart.
0x00B6A8C0401CEffectSparkle__update_single_particleUpdates a single CEffectSparkle particle's orbital position. Computes radius from sin LUT (no oscillation unlike BeamRing), calculates 3D position using sin/cos of elevation and rotation angles, updates billboard quad corners and previous positions for interpolation.
0x00B6AA60110CEffectSparkle__clear_all_particlesClears all CEffectSparkle particles by recycling each to the effect pool, then resets both particle vectors (offsets 0xe4-0xe8 and 0xf0-0xf4).
0x00B6AAD0216CEffectSparkle__init_effectInitializes the CEffectSparkle effect. Creates 2 sparkle particles (pikapika2 texture, alpha=200, size=9.0, 180 degrees apart), then calls create_ring_particles to add the ring layer with blue ring particles across 3 bands.
0x00B6ABD0184CEffectSparkle__update_rotation_matrixUpdates the Y-rotation matrix for a single CEffectSparkle particle. Accumulates rotation angle (offset 0xc4) based on particle layer index and a time delta, then computes a Y-axis rotation matrix (via CMatrix__init_rotation_y) and stores it to the particle transform at offset 0x1c8.
0x00B6AC90629CEffectSparkle__update_all_particlesUpdates all CEffectSparkle particles per frame. For sparkle particles (vector at 0xe4): computes Z-rotation + X-tilt matrices, applies oscillating scale based on sin LUT, multiplies matrices, and stores the 3x4 transform at offset 0x1c8. For ring particles (vector at 0xf0): accumulates rotation angle and computes Y-rotation matrix. Increments tick counters on all particles.
0x00B6AF10327CEffectAuraManager__update_effect_transformUpdates the transform matrix for an aura effect. Applies Z-axis rotation based on field 0xC4, wraps angle at 360 degrees with +3 step, computes scale from sin table, and builds final 3x4 transform matrix (rotation * scale) stored at offset 0x1C8.
0x00B6B060122CEffectAuraManager__render_layer_effectRenders a single aura layer effect. Checks particle count (offset 0xC), computes UV range from frame count / texture atlas size, and calls CEffectLayer__render_from_struct to draw the effect.
0x00B6B0E0234CEffectAuraManager__render_all_particle_effectsRenders all active aura particle effects. Iterates two particle lists (offsets 0xE4 and 0xF0), rendering mesh billboards for the first list and layer effects with UV animation for the second list.
0x00B6B1D059CEffectBeamRing2__render_single_particleRenders a single beam ring 2 particle if non-null via billboard mesh render with default white/full-scale parameters.
0x00B6B210151CEffectBeamRing2__ctorConstructor for CEffectBeamRing2. Calls CEffectAura base ctor, initializes vertex and state fields.
0x00B6B2B095CEffectBeamRing2__dtorDestructor for CEffectBeamRing2. Calls CEffectAura dtor chain.
0x00B6B310119CEffectBeamRing2__scalar_deleting_dtorScalar deleting destructor for CEffectBeamRing2.
0x00B6B39063CEffectBeamRing2__clear_all_particlesClears all beam ring 2 particles by recycling to pool.
0x00B6B3D0333CEffectBeamRing2__create_particlesCreates particles for the beam ring 2 effect.
0x00B6B5301069CEffectBeamRing2__update_all_particlesUpdates all beam ring 2 particles each frame.
0x00B6B960975CEffectBeamRing2__update_single_particleUpdates a single beam ring 2 particle with position and billboard calculations.
0x00B6BD30121CEffectBeamRing2__render_all_particlesRenders all beam ring 2 particles. Iterates the particle list (offset 0x18C to 0x190) and calls billboard render twice per non-null particle.
0x00B6BDB075CEffectBeamRing2__render_particleRenders a single beam ring 2 particle if non-null. Calls billboard mesh render twice with default white/full-scale parameters.
0x00B6BE00151CEffectBeamRing3__ctorConstructor for CEffectBeamRing3 variant. Calls CEffectAura base ctor, sets vtable, initializes state.
0x00B6BEA095CEffectBeamRing3__dtorDestructor for CEffectBeamRing3.
0x00B6BF00119CEffectBeamRing3__scalar_deleting_dtorScalar deleting destructor for CEffectBeamRing3.
0x00B6BF8042CEffectBeamRing3__clear_all_particlesClears all beam ring 3 particles.
0x00B6BFB0317CEffectBeamRing3__create_particlesCreates particles for the beam ring 3 effect.
0x00B6C1001085CEffectBeamRing3__update_all_particlesUpdates all beam ring 3 particles each frame with orbital position and billboard calculations.
0x00B6C540991CEffectBeamRing3__update_single_particleUpdates a single beam ring 3 particle with position and billboard calculations. Handles particle lifecycle: when lifetime expires, reinitializes with random angles (0-360). Otherwise interpolates orbital position using sin/cos tables, adjusting alpha fade. Builds final transform by composing rotation_x (with pi initial tilt), translation, and scale matrices.
0x00B6C920121CEffectBeamRing3__render_all_particlesRenders all beam ring 3 particles. Iterates particle list (offset 0x18C to 0x190) and calls billboard render twice per non-null particle.
0x00B6C9A075CEffectBeamRing3__render_single_particleRenders a single beam ring 3 particle if non-null. Calls billboard mesh render twice with default white/full-scale parameters.
0x00B6C9F0150CEffectThunder__ctorConstructor for CEffectThunder. Calls base class ctor with -1, sets vtable to 0x0119668C, and zeroes out 6 fields (offsets 0xCC-0xE0) used for particle lists.
0x00B6CA90110CEffectThunder__dtorDestructor for CEffectThunder. Sets vtable, calls CEffectAura::dtor twice (for two particle list layers), then calls base class cleanup.
0x00B6CB00134CEffectThunder__scalar_deleting_dtorScalar deleting destructor for CEffectThunder. Calls dtor chain, then conditionally frees memory (0xE4 bytes) if flag bit 0 is set.
0x00B6CB90532CEffectThunder__init_outer_particlesInitializes outer ring particles for thunder effect. Creates 0x50 particles per row across 4 rows (320 total). Each particle uses effect_white02.bmp texture with random angles. Colors vary by effect type: 0x4AD=blue/purple, 0x4AE=green/cyan, 0x4AF=orange/red, default=grey.
0x00B6CDB0237CEffectThunder__init_center_particlesInitializes center column particles for thunder effect. Creates 4 particles using effect_thunder_center.bmp. Scale=3.5, alpha=1. Colors match effect type: 0x4AD=blue, 0x4AE=green, 0x4AF=orange. Stores in second particle list (offset 0xD0).
0x00B6CEA0323CEffectThunder__update_particle_positionUpdates a thunder particle's 3D position using spherical coordinates. Computes position from scale, angle indices into sin/cos tables. Sets vertex positions and UV coordinates differently based on height direction (param_1+0x58).
0x00B6CFF0110CEffectThunder__release_all_particlesReleases all particles in both particle lists: center column particles (vector at 0xCC) and outer ring particles (vector at 0xD8). Calls recycle_effect_to_pool for each, then resets list sizes to empty.
0x00B6D060255CEffectThunder__init_center_and_outer_particlesInitializes center column particles (4 thunder_center.bmp) then calls init_outer_particles twice with different height params (0 and 1) for upward and downward particle rings.
0x00B6D16084CEffectThunder__has_visible_particlesChecks if any particle in either list (outer or center) has alpha > 0. Returns 1 if any visible particle found, 0 if all particles are fully faded out.
0x00B6D1C01077CEffectThunder__update_all_particlesUpdates all thunder effect particles each frame. For outer particles: updates world position, fades alpha in/out based on frame count (fade in < 300 frames, fade out after), rotates angle by +2 per frame, builds transform matrix. For center particles: grows scale up to threshold, fades out after 500 frames, updates position via spherical coords.
0x00B6D600432CEffectThunder__update_center_particleUpdates a single center thunder particle. Grows scale until threshold, fades alpha after 500 frames, advances rotation angle with random jitter, computes 3D position via spherical coordinates using sin/cos lookup tables.
0x00B6D7B0472CEffectThunder__update_outer_particle_transformUpdates transform matrix for a single outer thunder particle. Fades alpha in (< 300 frames) or out (>= 300 frames). Advances rotation angle by 2 degrees per frame. Builds final transform from rotation_x, scale, and translation matrices.
0x00B6D990161CEffectThunder__render_all_particlesRenders all thunder effect particles from both lists (outer 0xCC-0xD0, center 0xD8-0xDC). Calls billboard render for each non-null particle.
0x00B6DA4059CEffectThunder__render_outer_particleRenders a single outer thunder particle if non-null via billboard render with default white/full-scale params.
0x00B6DA8059CEffectThunder__render_center_particleRenders a single center thunder particle if non-null via billboard render with default white/full-scale params.
0x00B6DAC0195CEffectFirePillar__ctorConstructor for CEffectFirePillar. Calls base class ctor with type 0x28A, sets vtable to 0x0119671C. Initializes 3 particle lists (2x3 vector fields + 9 additional fields zeroed).
0x00B6DB90125CEffectFirePillar__dtorDestructor for CEffectFirePillar. Sets vtable, calls CEffectAura::dtor three times (for three particle list layers), then calls base class cleanup.
0x00B6DC10149CEffectFirePillar__scalar_deleting_dtorScalar deleting destructor for CEffectFirePillar. Calls dtor chain (3 aura dtors + base cleanup), then conditionally frees 0x108 bytes if flag bit 0 set.
0x00B6DCB0228CEffectFirePillar__init_mjin_particleCreates a fire pillar particle. param_2=0 uses effect_mjin2.tga (alpha=200, y=-0.5), param_2=1 uses effect_mjin.tga (alpha=50, y=-0.4). Scale=30. Adds to particle list at offset 0xE8.
0x00B6DDA0200CEffectFirePillar__init_spark_particlesCreates 2 spark particles at 180-degree offsets using effect_pikapika2.bmp. Scale=46, alpha=25, y=-1.0. Stored in particle list at offset 0xF4.
0x00B6DE70287CEffectFirePillar__init_ring_particlesCreates ring particles for fire pillar effect using effect_ring_blue.tga. Creates 0x16 (22) particles per layer across multiple layers with decreasing angle offsets and 90-degree rotation steps. Stored in list at offset 0x100.
0x00B6DF90401CEffectFirePillar__update_ring_segmentUpdates a single ring segment particle for fire pillar. Computes position using sin/cos tables for angular placement. Links segments by copying previous segment's position as start vertex of current segment. Ring-type rendering (type=3).
0x00B6E130157CEffectFirePillar__release_all_particlesReleases all particles in three lists: mjin particles (0xE4-0xE8), spark particles (0xF0-0xF4), and ring particles (0xFC-0x100). Resets each list size to empty.
0x00B6E1D0479CEffectFirePillar__init_all_particlesInitializes all fire pillar particles: creates 2 mjin particles (inner+outer layer), 2 spark particles at 180-degree offsets, and multiple ring layers using effect_ring_blue.tga with decreasing scale per layer.
0x00B6E3C01327CEffectFirePillar__update_all_particlesUpdates all fire pillar particles each frame. Updates mjin particles (world pos + type-specific update), spark particles (4-vertex quad positions via sin/cos at 90-degree offsets with rotation), and ring particles (angular animation + segment linking). All particles get rotation_y transform from camera.
0x00B6E8F0635CEffectFirePillar__update_mjin_particleUpdates a single mjin (magic circle) particle for fire pillar. Advances rotation angle, computes 4 vertex positions at 90-degree offsets using sin/cos lookup tables with scale factor. Applies camera rotation_y transform matrix.
0x00B6EB70588CEffectFirePillar__update_spark_particleUpdates a single spark particle for fire pillar. Advances angle by 3 per frame, computes 4 vertex positions at 90-degree offsets using sin/cos tables with scale modulation. Applies camera rotation_y transform.
0x00B6EDC0587CEffectFirePillar__update_ring_particleUpdates a single ring particle for fire pillar. Advances rotation, applies camera rotation_y, computes segment positions via sin/cos with radius and height. Links consecutive segments by copying previous segment's end position.
0x00B6F010334CEffectFirePillar__render_all_particlesRenders all fire pillar particles across 3 lists. Mjin particles use additive blend (mode 6). Spark particles render normally. Ring particles use additive blend with UV tiling based on segment index.
0x00B6F16069CEffectFirePillar__render_mjin_particleRenders a single mjin particle with additive blend mode (0x2AC=6) via billboard render.
0x00B6F1B059CEffectFirePillar__render_spark_particleRenders a single spark particle via billboard render with default parameters.
0x00B6F1F0132CEffectFirePillar__render_ring_particleRenders a single ring segment particle with additive blend (mode 6) and UV tiling. UV coordinates computed from segment index divided by total ring segments.
0x00B6F280151CEffectMeteorStorm__ctorConstructor for CEffectMeteorStorm. Calls base ctor with type 0x129, sets vtable to 0x011967D0. Allocates 0xA00 (2560) particle slots zeroed (3 fields each), plus 3 additional fields. Object size ~0x96D8 bytes.
0x00B6F32095CEffectMeteorStorm__dtorDestructor for CEffectMeteorStorm. Sets vtable, calls CEffectAura::dtor for particle list cleanup, then base class cleanup.
0x00B6F380119CEffectMeteorStorm__scalar_deleting_dtorScalar deleting destructor for CEffectMeteorStorm. Calls dtor, conditionally frees 0x96D8 bytes if flag bit 0 set.
0x00B6F400615CEffectMeteorStorm__init_particlesInitializes meteor storm particles. Creates 0xA0 (160) particles per layer across 4 layers (640 total). Each particle gets random initial delay, scale, angles. Colors randomly chosen from 5 palettes (red/blue/green/yellow/magenta). Initializes trail data arrays at large offsets.
0x00B6F77063CEffectMeteorStorm__release_all_particlesReleases all meteor storm particles from the particle list at offset 0x96CC. Resets list size to empty.
0x00B6F7D0903CEffectMeteorStorm__update_all_particlesUpdates all meteor storm particles. Each particle has 2 phases: phase 0 = falling down (decreasing Y), phase 1 = dispersing outward with decreasing scale. Manages trail history (shifts position buffer every 3 frames). Cycles explosion sprite animation. Resets particle after 2000 frames with new random angle/scale.
0x00B6FB60818CEffectMeteorStorm__update_single_particleUpdates a single meteor particle. Phase 0: falling with Y deceleration. Phase 1: dispersing outward via sin/cos with shrinking scale. Manages trail shift every 3 frames. Resets after 2000 frames.
0x00B6FEA0857CEffectMeteorStorm__render_all_particlesRenders all meteor storm particles. Each visible particle renders 2 layers: computes 4 vertex quad from rotation angle, applies camera transform, selects explosion texture (pok1/pok2/pok3) based on animation frame, uses subtractive blend mode (2) with alpha halved for inner explosion.
0x00B70200822CEffectMeteorStorm__render_single_particleRenders a single meteor particle with 2 layers. Computes quad vertices from rotation, applies camera transform, selects explosion texture (pok1/pok2/pok3), uses subtractive blend mode.
0x00B707B0151CEffectWaterBall__ctorConstructor for CEffectWaterBall. Calls base ctor with type 0x19A, sets vtable to 0x01196874. Initializes 2 particle list vector fields (2x3 + 3 extra fields zeroed). Object size 0xF0.
0x00B7085095CEffectWaterBall__dtorDestructor for CEffectWaterBall. Sets vtable, calls CEffectAura::dtor for particle list cleanup, then base class cleanup.
0x00B708B0119CEffectWaterBall__scalar_deleting_dtorScalar deleting destructor for CEffectWaterBall. Calls dtor, conditionally frees 0xF0 bytes if flag bit 0 set.
0x00B70930248CEffectWaterBall__init_particlesInitializes water ball particles. Creates 0x15 (21) particles per row across 7 rows (147 total). Uses effect_alpha_center.tga texture. Scale=50, angle offset from camera yaw. Stored in list at offset 0xE8.
0x00B70A30539CEffectWaterBall__update_particle_stripUpdates a single water ball particle strip. Computes vertex positions on a sphere using angular offsets and sin/cos tables. Links consecutive strip segments. Colors vary by row (0-6): blue, teal, cyan, green, red, purple, magenta.
0x00B70CB063CEffectWaterBall__release_all_particlesReleases all water ball particles from list at offset 0xE4. Resets list size to empty.
0x00B70CF0255CEffectWaterBall__init_particles_with_durationInitializes water ball particles (same as init_particles) but also sets duration field at offset 0x2C to 300 frames. Creates 21 particles per row across 7 rows using effect_alpha_center.tga.
0x00B70E00793CEffectWaterBall__update_all_particlesUpdates all water ball particles. Sets world position, fades alpha in (<0xB5 frames) then out (>0xB5), caps at 0xFA. Advances rotation angle. Applies camera rotation_y transform. Computes sphere strip vertex positions via sin/cos. Colors by row index (7 rainbow colors).
0x00B71180720CEffectWaterBall__update_single_particleUpdates a single water ball particle. Fades alpha in/out, advances rotation, applies camera rotation_y, computes sphere strip positions, sets rainbow color by row index.
0x00B714C0164CEffectWaterBall__render_all_particlesRenders all water ball particles. For each non-null particle with segment index > 0, renders with UV tiling based on segment position.
0x00B71570122CEffectWaterBall__render_single_particleRenders a single water ball particle with UV tiling based on segment index.
0x00B715F0151CEffectIceWall__ctorConstructor for CEffectIceWall. Calls base ctor with type 800 (0x320), sets vtable to 0x01196918. Initializes 2 particle list vectors (2x3 + 3 extra fields zeroed). Object size 0xF0.
0x00B7169095CEffectIceWall__dtorDestructor for CEffectIceWall. Sets vtable, calls CEffectAura::dtor then base dtor.
0x00B716F0119CEffectIceWall__scalar_deleting_dtorScalar deleting destructor for CEffectIceWall. Calls dtor, conditionally frees 0xF0 bytes.
0x00B71770456CEffectIceWall__init_particlesInitializes ice wall particles. Creates 0x16 (22) segments per ring at 4 angular offsets (90-degree steps). Each ring has random radius (0.6-1.6), random start delay (60-100 frames). Uses effect_ring_red.tga texture. Type=3 (strip rendering).
0x00B71940573CEffectIceWall__update_ring_segmentUpdates a single ice wall ring segment. Computes vertex positions using orbital parameters. Applies ease-in for first 100 frames using sine lookup table. Links consecutive segments by copying previous end position as current start.
0x00B71B8063CEffectIceWall__release_all_particlesReleases all ice wall particles from list at offset 0xE4. Resets list size to empty.
0x00B71BF0676CEffectIceWall__update_single_segmentUpdates a single ice wall segment with dissipation. Advances rotation angle (wraps at max). After frame 125, shrinks radius and fades alpha. Computes orbital vertex positions and links consecutive segments.
0x00B71EA0732CEffectIceWall__update_all_particlesUpdates all ice wall particles. Sets world positions, advances rotation, handles ease-in/dissipation phases. Computes orbital ring vertex positions and links segments. Increments frame counter.
0x00B72180189CEffectIceWall__render_single_particleRenders a single ice wall particle. If segment index > 0, chooses blend mode based on height flag: additive (6) with dim color for ground level, subtractive (2) with brighter color for elevated. Renders with UV tiling.
0x00B72240234CEffectIceWall__render_all_particlesRenders all ice wall particles. For each non-null particle with segment index > 0, renders with blend mode and color based on height flag.
0x00B72330253CEffectStormGust__ctorConstructor for CEffectStormGust. Calls base ctor with -1, sets vtable to 0x011969B8. Initializes member fields including boolean flag, 2 particle list vectors (2x3), and 6 additional fields zeroed. Object size 0x11C.
0x00B72430110CEffectStormGust__dtorDestructor for CEffectStormGust. Sets vtable, calls CEffectAura::dtor twice (2 particle lists), then base dtor.
0x00B724A0134CEffectStormGust__scalar_deleting_dtorScalar deleting destructor for CEffectStormGust. Calls dtor chain, conditionally frees 0x11C bytes.
0x00B72530250CEffectStormGust__init_snow_particlesInitializes storm gust snow/ice particles. Creates 10 particles per group across 2 groups. Uses effect_storm2.tga texture, blue color (50,50,255). Scale=2.0 with spiral parameters.
0x00B72630289CEffectStormGust__init_cloud_particlesInitializes storm gust cloud/tornado particles. Creates 0x15 (21) particles per layer across 4 angular offsets (90-degree steps). Uses effect_cloud11.tga. Scale decreases per layer. Stored in list at offset 0x114.
0x00B72760110CEffectStormGust__release_all_particlesReleases all storm gust particles from both lists (snow at 0x104 and cloud at 0x110). Resets list sizes.
0x00B727D0524CEffectStormGust__init_all_particlesInitializes all storm gust particles: first creates 2 groups of 10 snow particles (storm2.tga, blue), then creates 4 layers of 21 tornado particles (cloud11.tga).
0x00B729F01495CEffectStormGust__update_all_particlesUpdates all storm gust particles. Snow particles: spiral motion with fade in/out, builds rotation_z + rotation_x + scale + translation transform matrix. Cloud/tornado particles: advance rotation by 5 per frame, expand radius over time, compute strip positions linking segments. Alpha fades in then out after frame 50.
0x00B72FD0638CEffectStormGust__update_snow_particleUpdates a single storm gust snow particle. Spiral motion with fade in/out based on parent frame counter. Builds transform from rotation_z, rotation_x (fixed tilt), scale, and Y translation.
0x00B73250650CEffectStormGust__update_cloud_particleUpdates a single storm gust cloud/tornado particle. Advances rotation, expands radius, computes strip vertex positions via sin/cos. Fades alpha in first 13 frames, grows scale, then fades out after frame 50.
0x00B734E0230CEffectStormGust__render_all_particlesRenders all storm gust particles. Snow particles render as billboards. Cloud/tornado particles render as strips with UV tiling based on segment index.
0x00B735D059CEffectStormGust__render_snow_particleRenders a single storm gust snow particle as a billboard.
0x00B73610118CEffectStormGust__render_cloud_particleRenders a single storm gust cloud/tornado particle as a strip with UV tiling.
0x00B73690419CEffectStormGust__update_cloud_segmentUpdates a single cloud/tornado strip segment for storm gust. Computes vertex positions via sin/cos lookup tables and links consecutive segments. Similar to ice wall segment update.
0x00B73840136CEffectSpiralOrb__ctorConstructor for CEffectSpiralOrb. Calls base ctor with -1, sets vtable to 0x01196A58. Initializes 5 member fields zeroed. Object size 0xE0.
0x00B738D095CEffectSpiralOrb__dtorDestructor for CEffectSpiralOrb. Sets vtable, calls CEffectAura::dtor then base dtor.
0x00B73930119CEffectSpiralOrb__scalar_deleting_dtorScalar deleting destructor for CEffectSpiralOrb. Calls dtor, conditionally frees 0xE0 bytes.
0x00B739B063CEffectSpiralOrb__release_all_particlesReleases all spiral orb particles from list at offset 0xD4. Resets list size.
0x00B739F0206CEffectSpiralOrb__init_particlesInitializes 4 spiral orb particles. Each uses pink/magenta color (255,200,255), additive blend mode (6), scale=2.5, orbit radius=13, rotation speed=0.4. Stored in list at offset 0xD8.
0x00B73AD0844CEffectSpiralOrb__update_all_particlesUpdates all spiral orb particles. First particle (index 0) advances rotation and optionally rotates the attached entity. Trail particles (index 1+) inherit and decrement alpha with delayed angles. Computes orbital position via sin/cos. Builds transform: rotation_x (camera pitch) + rotation_y + scale + translation.
0x00B73E20750CEffectSpiralOrb__update_single_particleUpdates a single spiral orb particle. First particle rotates and optionally spins entity. Trail particles inherit alpha/angle with offsets. Computes orbital position and builds transform matrix from camera rotation_x, rotation_y, scale, and translation.
0x00B7411083CEffectSpiralOrb__render_all_particlesRenders all spiral orb particles as billboards from list at offset 0xD4.
0x00B7417059CEffectSpiralOrb__render_single_particleRenders a single spiral orb particle as a billboard.
0x00B741B0199CEffectTornado__ctorConstructor for CEffectTornado. Calls base ctor with -1, sets vtable to 0x01196B08. Initializes boolean flag, 2 particle list vectors (2x3), and 3 additional fields. Object size 0x104.
0x00B7428095CEffectTornado__dtorDestructor for CEffectTornado. Sets vtable, calls CEffectAura::dtor then base dtor.
0x00B742E0119CEffectTornado__scalar_deleting_dtorScalar deleting destructor for CEffectTornado. Calls dtor, conditionally frees 0x104 bytes.
0x00B7436063CEffectTornado__release_all_particlesReleases all tornado particles from list at offset 0xF8. Resets list size.
0x00B743A0379CEffectTornado__init_particlesInitializes tornado particles. Creates 0x15 (21) particles per layer across 4 layers (90-degree steps). Uses effect_cloud11.tga. For effect 0x3DA: grey (50,50,50) additive blend. For effect 1000: blue (100,100,255) with bigger scale. Stored at offset 0xFC.
0x00B7452093CEffectTornado__set_particle_colorSets tornado particle color based on effect type. Effect 0x3DA: grey additive. Effect 1000: blue with extra scale. Called per-particle during update.
0x00B74590726CEffectTornado__update_all_particlesUpdates all tornado particles. Advances rotation by 5 per frame, expands radius. Computes strip vertex positions via sin/cos. Fades alpha in first 13 frames, grows scale, fades out after frame 50. Links consecutive strip segments.
0x00B74870656CEffectTornado__update_single_particleUpdates a single tornado particle strip segment. Advances rotation, expands radius, computes vertex positions, links segments. Fades alpha in/out over time.
0x00B74B00160CEffectTornado__render_all_particlesRenders all tornado particles as strips with UV tiling based on segment index.
0x00B74BA0118CEffectTornado__render_single_particleRenders a single tornado particle strip with UV tiling based on segment index.
0x00B74C20425CEffectTornado__update_strip_segmentUpdates a single tornado strip segment. Computes vertex positions via sin/cos lookup, links consecutive segments for strip rendering.
0x00B74DD0151CEffectMagicRing__ctorConstructor for CEffectMagicRing. Calls base ctor with -1, sets vtable to 0x01196B94. Initializes 2 particle list vectors (2x3 + 3 extra fields). Object size 0xF0.
0x00B74E7095CEffectMagicRing__dtorDestructor for CEffectMagicRing. Sets vtable, calls CEffectAura::dtor then base dtor.
0x00B74ED0119CEffectMagicRing__scalar_deleting_dtorScalar deleting destructor for CEffectMagicRing. Calls dtor, conditionally frees 0xF0 bytes.
0x00B74F50538CEffectMagicRing__init_ring_layerInitializes one layer of magic ring particles. Creates 0x15 (21) particles per row across 4 rows using given texture. Colors vary by spell type: 0xC=yellow, 0x156=pink, 0x1B9=blue, 0x1C6/0x33A=grey, 0x234=pink, 0x38F=green. Some types set delayed start times per particle.
0x00B75170251CEffectMagicRing__init_all_particlesInitializes all magic ring particles by creating 2 ring layers. Texture and initial alpha vary by spell type: fire=yellow, cold=blue, poison=green, earth=red, dark=black, etc.
0x00B7527063CEffectMagicRing__release_all_particlesReleases all magic ring particles from list at offset 0xE4. Resets list size.
0x00B752B0475CEffectMagicRing__init_with_soundInitializes magic ring with sound effect. Plays EF_BeginSpell.wav, creates 2 ring layers with textures based on spell type, sets effect duration (56 for fire/wind, 1000 for cold, 60 for others).
0x00B754F0162CEffectMagicRing__set_color_by_spellSets particle color based on spell type. 0xC=yellow(FF,FF,AA), 0x156/0x234=pink(FF,59,B6), 0x1B9=blue(64,64,FF), 0x1C6/0x33A=grey(32,32,32), 0x38F=green(64,FF,64).
0x00B755A0248CEffectMagicRing__setup_particle_by_spellConfigures particle parameters based on spell type. Sets orbital speed (0x168), scale (4.1), angle (80). For cold spell 0x156: adds staggered alpha. Others set delayed start with decreasing radius per row.
0x00B756B0682CEffectMagicRing__update_all_particlesUpdates all magic ring particles. Decreases angle, grows scale, fades alpha in then out. Computes ring vertex positions via sin/cos with orbital modulation. Links consecutive strip segments. Different row timing for layers <2 vs >=2.
0x00B75960585CEffectMagicRing__update_single_particleUpdates a single magic ring particle. Shrinks orbital angle, grows scale, fades alpha. Computes ring vertex positions with orbital modulation. Links strip segments.
0x00B75BB0191CEffectMagicRing__render_all_particlesRenders all magic ring particles. For dark spells (0x1C6, 0x33A), uses additive blend mode 6. Renders as strips with UV tiling.
0x00B75C70151CEffectMagicRing__render_single_particleRenders a single magic ring particle. Dark spells use additive blend. Renders as strip with UV tiling.
0x00B75D10116CEffectNyangGrass__ctorConstructor for CEffectNyangGrass (grass/nature ground effect). Calls base ctor with -1, sets vtable to 0x01196C3C. Initializes 3 member fields zeroed. Object size 0xD8.
0x00B75D9095CEffectNyangGrass__dtorDestructor for CEffectNyangGrass. Sets vtable, calls CEffGroundGrow::dtor then base dtor.
0x00B75DF0119CEffectNyangGrass__scalar_deleting_dtorScalar deleting destructor for CEffectNyangGrass. Calls dtor, conditionally frees 0xD8 bytes.
0x00B75E7063CEffectNyangGrass__release_all_particlesReleases all nyang grass particles from list at offset 0xCC. Resets list size.
0x00B75EB0363CEffectNyangGrass__init_particlesInitializes 50 nyang grass particles. For type 0x3EA: loads sprite/animation data, sets random scale (22-28), random orbital radius (2-4 * base), random angles. Duration=300, alpha=250, additive blend.
0x00B76020251CEffectNyangGrass__init_single_particleInitializes a single nyang grass particle for type 0x3EA. Loads sprite/animation data, sets random scale, orbital radius, angles. Alpha=250, additive blend mode.
0x00B76130336CEffectNyangGrass__update_all_particlesUpdates all nyang grass particles. Fades alpha, updates velocity (gravity + orbital drift), builds translation transform matrix from accumulated position.
0x00B76280265CEffectNyangGrass__update_single_particleUpdates a single nyang grass particle. Fades alpha by -3 per frame, applies gravity to Y velocity, drifts in XZ based on angle. Builds translation transform.
0x00B7639045CEffectNyangGrass__render_all_particlesRenders all nyang grass particles using sprite-based rendering (CEffectLayerEx).
0x00B763C027CEffectNyangGrass__render_single_particleRenders a single nyang grass particle using sprite-based rendering.
0x00B763E0126CEffectGroundHit__ctorConstructor for CEffectGroundHit. Calls base ctor with type 0x2C, sets vtable to 0x01196CF4. Initializes 4 member fields (first=1, rest=0). Object size 0xDC.
0x00B7646095CEffectGroundHit__dtorDestructor for CEffectGroundHit. Sets vtable, calls CEffGroundGrow::dtor then base dtor.
0x00B764C0119CEffectGroundHit__scalar_deleting_dtorScalar deleting destructor for CEffectGroundHit. Calls dtor, conditionally frees 0xDC bytes.
0x00B7654063CEffectGroundHit__release_all_particlesReleases all ground hit particles from list at offset 0xD0. Resets list size.
0x00B76580111CEffectGroundHit__init_particlesInitializes 4 ground hit particles from sprite pool. Stored in list at offset 0xD4.
0x00B765F0287CEffectGroundHit__init_single_particleInitializes a single ground hit particle. Loads sprite/animation data, scale=1.5, speed=0.75, alpha=255. Random elevation (75-105 degrees) and random yaw (0-360). Applies rotation_x then rotation_y transform.
0x00B76720837CEffectGroundHit__update_all_particlesUpdates all ground hit particles. For first 50 frames: moves using matrix-derived velocity, advances rotation, fades alpha after frame 34. After frame 50: resets particle with new random direction and speed. Builds translation transform from accumulated position.
0x00B76A70770CEffectGroundHit__update_single_particleUpdates a single ground hit particle. Moves along computed trajectory for 50 frames with alpha fade. Resets with new sprite/animation and random direction after 50 frames.
0x00B76D8056CEffectGroundHit__render_all_particlesRenders all ground hit particles. Only renders particles with index below the active count threshold (offset 0xCC).
0x00B76DC040CEffectGroundHit__render_single_particleRenders a single ground hit particle if index below active count threshold.
0x00B76DF0151CEffectFireIvy__ctorConstructor for CEffectFireIvy (fire ivy/vine effect). Calls base ctor with type 0x198, sets vtable to 0x01196DA8. Initializes 2 particle list vectors + 3 extra fields. Object size 0xF0.
0x00B76E9095CEffectFireIvy__dtorDestructor for CEffectFireIvy. Sets vtable, calls CEffectAura::dtor then base dtor.
0x00B76EF0119CEffectFireIvy__scalar_deleting_dtorScalar deleting destructor for CEffectFireIvy. Calls dtor, conditionally frees 0xF0 bytes.
0x00B76F70458CEffectFireIvy__init_particlesInitializes fire ivy particles. Creates 0x15 (21) particles per layer across 4 layers with 45-degree rotation offsets. Uses effect_fire_ivy.bmp texture, pink color (FF,59,B6). Random radius (3-13), random start delay. Scale=5.0, y=-10.
0x00B77140511CEffectFireIvy__update_strip_segmentUpdates a single fire ivy strip segment. Computes vertex positions using sin/cos for angular placement and radius. Vertices are offset by the fire ivy's orbital parameters. Links consecutive segments.
0x00B7734063CEffectFireIvy__release_all_particlesReleases all fire ivy particles from list at offset 0xE4. Resets list size.
0x00B77380594CEffectFireIvy__init_all_with_soundInitializes all fire ivy particles with multiple layers (5 angular offsets x 4 sub-layers x 21 segments) and plays EF_Blessing.wav sound effect. Duration=200.
0x00B775F0718CEffectFireIvy__update_all_particlesUpdates all fire ivy particles. Fades alpha in then out, grows scale, advances orbital rotation. Computes ivy strip vertex positions using orbital sin/cos. Links consecutive strip segments.
0x00B778C0634CEffectFireIvy__update_single_particleUpdates a single fire ivy particle. Fades alpha in/out, grows scale, advances rotation. Computes strip vertex positions and links segments.
0x00B77B40173CEffectFireIvy__render_all_particlesRenders all fire ivy particles. Only renders particles with positive frame counter and segment index > 0. Renders as strips with UV tiling.
0x00B77BF0131CEffectFireIvy__render_single_particleRenders a single fire ivy particle as a strip with UV tiling. Only renders if frame counter > 0 and segment index > 0.
0x00B77C80151CEffectIvyVine__ctorConstructor for CEffectIvyVine (blue/fire ivy vine effect). Calls base ctor with -1, sets vtable to 0x01196E60. Initializes 2 particle list vectors + 3 extra fields. Object size 0xF0.
0x00B77D2095CEffectIvyVine__dtorDestructor for CEffectIvyVine. Sets vtable, calls CEffectAura::dtor then base dtor.
0x00B77D80119CEffectIvyVine__scalar_deleting_dtorScalar deleting destructor for CEffectIvyVine. Calls dtor, conditionally frees 0xF0 bytes.
0x00B77E00477CEffectIvyVine__init_particlesInitializes ivy vine particles. Creates 21 per layer across 4 layers with 45-degree offsets. For type 0x15A: blue_ivy.bmp with blue color (FF,64,64). For type 0x18A: fire_ivy.bmp with red color (FF,64,100). Scale=14, alpha=100.
0x00B77FE0497CEffectIvyVine__update_strip_segmentUpdates a single ivy vine strip segment. Computes vertex positions using orbital sin/cos. Links consecutive segments for strip rendering.
0x00B781E063CEffectIvyVine__release_all_particlesReleases all ivy vine particles from list at offset 0xE4. Resets list size.
0x00B78220501CEffectIvyVine__init_all_particlesInitializes all ivy vine particles with 5 angular offsets (9 degrees apart) x 4 sub-layers x 21 segments. Blue ivy (0x15A) or fire ivy (0x18A) textures with corresponding colors.
0x00B7843068CEffectIvyVine__update_all_particlesUpdates all ivy vine particles. Sets world position, calls per-particle update, increments frame counter.
0x00B78480655CEffectIvyVine__update_single_particleUpdates a single ivy vine particle. Advances rotation, applies camera rotation_y. Computes strip vertex positions via orbital sin/cos. Links consecutive segments.
0x00B78710164CEffectIvyVine__render_all_particlesRenders all ivy vine particles as strips with UV tiling based on segment index.
0x00B787C0122CEffectIvyVine__render_single_particleRenders a single ivy vine particle as a strip with UV tiling.
0x00B78840116CEffectSoulStrike__ctorConstructor for CEffectSoulStrike. Calls base ctor with -1, sets vtable to 0x01196F00. Initializes 3 member fields zeroed. Object size 0xD8.
0x00B788C095CEffectSoulStrike__dtorDestructor for CEffectSoulStrike. Sets vtable, calls CEffGroundGrow::dtor then base dtor.
0x00B78920119CEffectSoulStrike__scalar_deleting_dtorScalar deleting destructor for CEffectSoulStrike. Calls dtor, conditionally frees 0xD8 bytes.
0x00B789A0342CEffectSoulStrike__compute_world_positionComputes world position for soul strike effect. Transforms effect local position through entity's model matrix, then applies view matrix to get screen-space coordinates. Stores result at particle offsets 0x24/0x28/0x2C.
0x00B78B0063CEffectSoulStrike__release_all_particlesReleases all soul strike particles from list at offset 0xCC. Resets list size.
0x00B78B40126CEffectSoulStrike__init_particlesInitializes soul strike particle. Allocates sprite from pool (type 0x200), sets up particle properties via init helper, stores entity ID at offset 0x2F4. Adds to list at offset 0xD0.
0x00B78BC01985CEffectSoulStrike__init_single_particleInitializes a single soul strike particle with sprite/animation data based on effect type. Huge switch covering 40+ effect types loading different sprite/animation resources. Some types use XOR-encrypted file paths (type 0x98B). Sets scaling, speed, animation loop modes per type.
0x00B79520245CEffectSoulStrike__is_activeChecks if the soul strike effect is still active. For type 0x3DE checks frame comparison. For buff effects (0x46A-0x4BD, 0x561, etc.) checks if entity owner is alive. Default: checks if any particle's lifetime is within range.
0x00B79780286CEffectSoulStrike__update_all_particlesUpdates all soul strike particles. Position computation varies widely by effect type: ground effects use direct position, entity-attached effects compute height from entity, some use special offsets for mounted characters, etc.
0x00B79C4050CEffectSoulStrike__render_all_particlesRenders all soul strike particles. Only renders particles with positive frame counter. Uses sprite-based rendering.
0x00B79C80157CEffectStar__ctorConstructor for CEffectStar. Calls base ctor with type 0x3B1, sets vtable to 0x01197CC4. Initializes 4 particle list vectors (4x3) + 4 extra fields. Object size 0x10C.
0x00B79D2095CEffectStar__dtorDestructor for CEffectStar. Sets vtable, calls CEffectAura::dtor then base dtor.
0x00B79D80119CEffectStar__scalar_deleting_dtorScalar deleting destructor for CEffectStar. Calls dtor, conditionally frees 0x10C bytes.
0x00B79E00195CEffectStar__advance_texture_frameAdvances star texture animation. Every 14 frames, increments texture index (max 7) and loads next frame texture (effect\\star_%02d.bmp).
0x00B79ED063CEffectStar__release_all_particlesReleases all star particles from list at offset 0x100. Resets list size.
0x00B79F10142CEffectStar__init_particlesInitializes star particles. Creates 4 particles per group across 0x41 (65) groups (260 total). Each calls per-particle init helper. Stored in list at offset 0x104.
0x00B79FA0440CEffectStar__init_single_particleInitializes a single star particle. Resets frame counter, alpha=0, randomizes 4 angles (0-360), random lifetime (300-500), random scale offset, random base angle. Uses effect\\star01.bmp texture. Sets random XZ position with random sign flipping.
0x00B7A17068CEffectStar__update_all_particlesUpdates all star particles. Sets world position, calls per-particle update, increments frame counter.
0x00B7A1C0887CEffectStar__update_single_particleUpdates a single star particle. Advances texture animation every 14 frames. Fades alpha in for first 80 frames then out after lifetime. Interpolates angles, accumulates XZ drift from sin/cos lookup. Resets when alpha reaches 0. Builds rotation_x + scale transform matrix.
0x00B7A54083CEffectStar__render_all_particlesRenders all star particles as billboards from list at offset 0x100.
0x00B7A5A059CEffectStar__render_single_particleRenders a single star particle as a billboard.
0x00B7A5E055CEffectStar__update_alpha_lifecycleUpdates star particle alpha lifecycle. Increases alpha by 3 for first 80 frames, holds, then decreases after lifetime exceeded. Resets particle when alpha drops to 0.
0x00B7A620315CEffectStar__update_particle_driftUpdates star particle drift position. Interpolates 2 angle pairs, accumulates XZ offset from sin/cos lookup. Adds parent world position to compute final coordinates.
0x00B7A76092CEffectStar__update_particle_scaleUpdates star particle scale using sinusoidal oscillation based on base angle. Advances base angle by 1 per frame (wrapping at 360).
0x00B7A7C0250CEffectStar__build_transform_matrixBuilds star particle transform matrix from camera rotation_x and particle scale. Composes rotation_x with uniform scale, stores result in particle transform at offset 0x1C8.
0x00B7A8C0116CEffectFrostNova__ctorConstructor for CEffectFrostNova. Calls base ctor with type 0x59, sets vtable to 0x01197D78. Initializes 3 fields zeroed. Object size 0xD8.
0x00B7A94095CEffectFrostNova__dtorDestructor for CEffectFrostNova. Sets vtable, calls CEffectAura::dtor then base dtor.
0x00B7A9A0119CEffectFrostNova__scalar_deleting_dtorScalar deleting destructor for CEffectFrostNova. Calls dtor, conditionally frees 0xD8 bytes.
0x00B7AA2063CEffectFrostNova__release_all_particlesReleases all frost nova particles from list at offset 0xCC. Resets list size.
0x00B7AA60481CEffectFrostNova__init_particlesInitializes 2 frost nova ice particles (if effect option 0xE5 is disabled). Uses effect_ice.tga, alpha=250, random direction (3-28 radius), Y=20. Random scale (400-500). Applies rotation_x/rotation_y transform.
0x00B7AC50336CEffectFrostNova__init_single_particleInitializes a single frost nova ice particle. Sets texture (effect_ice.tga), alpha=250, random direction, scale, rotation transform.
0x00B7ADB0615CEffectFrostNova__update_all_particlesUpdates all frost nova ice particles. Computes velocity from transform matrix (resets at frame 3), accumulates position, builds scale+translation transform. Fades alpha based on lifetime midpoint.
0x00B7B020539CEffectFrostNova__update_single_particleUpdates a single frost nova particle. Computes velocity from transform matrix, accumulates position, builds scale+translation transform. Fades alpha based on lifetime.
0x00B7B24083CEffectFrostNova__render_all_particlesRenders all frost nova particles as billboards from list at offset 0xCC.
0x00B7B2A059CEffectFrostNova__render_single_particleRenders a single frost nova particle as a billboard.
0x00B7B2E085CEffectFrostNova__update_alphaUpdates frost nova particle alpha based on parent frame counter. When halfway through effect lifetime, computes fade rate. Clamps alpha to 0-254 range.
0x00B7B340173CEffectSkillAura__ctor_00b7b340Constructor for CEffectSkillAura. Calls base ctor with -1, sets vtable to 0x01197E14. Initializes 2 particle list vectors (2x3) + 6 extra fields. Object size 0xFC.
0x00B7B3F0110CEffectSkillAura__dtor_00b7b3f0Destructor for CEffectSkillAura. Sets vtable, calls CEffectAura::dtor twice (2 particle lists) then base dtor.
0x00B7B460134CEffectSkillAura__scalar_deleting_dtor_00b7b460Scalar deleting destructor for CEffectSkillAura. Calls dtor chain, conditionally frees 0xFC bytes.
0x00B7B4F0426CEffectSkillAura__init_storm_particlesInitializes 10 storm aura particles. Uses effect_storm2.tga, colors vary by skill: 0x1B3=red, 0x1CB=dark blue, 0x1CC=cyan, 0x1CD=pink, 0x1D0=element-based (fire=cyan, shadow=dark), 0x1D1=green, 0x4C7=light blue. Scale=2.0, radius=40.
0x00B7B6C0515CEffectSkillAura__init_cloud_layerInitializes cloud layer for skill aura. Creates 21 particles per row across 4 angular offsets. Uses effect_cloud11.tga. Layer param determines inner (0) or outer (1) ring with different scale/radius. Stored in list at offset 0xF4.
0x00B7B8D0842CEffectSkillAura__compute_storm_verticesComputes 4 vertex positions for a storm aura particle. Uses iterative radius reduction based on segment index. Places vertices at 90-degree angular offsets on a horizontal plane at computed height. Optimized inner loop with 8x unrolling for radius computation.
0x00B7BC20110CEffectSkillAura__release_all_particlesReleases all skill aura particles from both lists (storm at 0xE4 and cloud at 0xF0). Resets list sizes.
0x00B7BC90148CEffectSkillAura__init_all_particlesInitializes all skill aura particles based on skill type. Creates storm particles + 2 cloud layers for most skills. Some skills (0x1D0) create 2 storm layers. Sets duration: 100 for most, 60 for 0x4C7, 1000 for 0x1D1.
0x00B7BE30133CEffectOrbit__set_color_by_skill_idSets RGB color via FUN_00b40120 based on skill ID (param_2). Skill 0x1b3=blue, 0x1cb=mauve, 0x1cc=white, 0x1cd=light blue, 0x1d0=conditional white/red, 0x1d1=green, 0x4c7=yellow-white.
0x00B7BF701109CEffectOrbit__update_all_particlesUpdates all orbit particles in two lists (inner at +0xe4 and outer at +0xf0). Inner particles: copies position, adjusts alpha with fade, random rotation decrement, builds rotation matrix. Outer particles: grow radius to max 180, compute spiral position using sin/cos tables, set velocity vectors, apply height offset.
0x00B7C3D0111CEffectOrbit__update_rotation_angleUpdates rotation angle at offset +0x4c based on skill ID. Increments by different rates depending on skill type. Wraps angle at 360 degrees.
0x00B7C440276CEffectOrbit__update_inner_particleUpdates a single inner orbit particle. Adjusts alpha based on tick count, applies random rotation decrement, computes rotation matrix via CMatrix__init_rotation_y, and stores it in the particle's transform at +0x1c8.
0x00B7C560609CEffectOrbit__update_outer_particleUpdates a single outer orbit particle. Grows radius to max 180, adjusts spiral angle, computes position using sin/cos lookup tables, sets previous and current position vectors, adjusts height based on alpha/size evolution.
0x00B7C7D0298CEffectOrbit__render_all_particlesRenders all orbit particles. Inner particles rendered with blend mode 6 (or 2 for certain skills), outer particles rendered with graduated alpha based on segment index using FUN_00b3fce0.
0x00B7C990105CEffectOrbit__render_inner_particleRenders a single inner orbit particle. Sets blend mode to 6 for most skills, 2 for default. Special handling for skill 0x1d0: renders at 1/3 alpha with mode 6 when param is 0, mode 2 otherwise.
0x00B7CA90122CEffectOrbit__render_outer_particleRenders a single outer orbit particle as a graduated alpha trail. Uses segment count at +0xc to compute alpha gradient for the trail segments. Calls FUN_00b3fce0 for the actual rendering.
0x00B7CB10206CEffectOrbit__ctorConstructor for CEffectOrbit. Calls base class init (FUN_00b4dae0), sets vtable to PTR_LAB_01197ed4, initializes fields: particle count=0, max=0, active=1, blend=4, and zeros out position/state fields at offsets 0x33-0x40.
0x00B7CBE095CEffectOrbit__dtorDestructor for CEffectOrbit. Restores vtable, calls CEffectAura__dtor for aura cleanup, then FUN_00b4dd10 for base class cleanup.
0x00B7CC40119CEffectOrbit__scalar_deleting_dtorScalar deleting destructor for CEffectOrbit. Calls dtor then optionally frees memory (size 0x104) if bit 0 of param is set.
0x00B7CCC063CEffectOrbit__clear_outer_particle_listClears the outer particle list at +0xf8/+0xfc. Iterates through particles calling FUN_00b82fd0 (free particle) on each, then resets the list end pointer to start.
0x00B7CD0044CEffectOrbit__get_orbit_angle_offsetReturns angle offset for orbit particles. Only non-zero for skill 0x3d5: computes (360 / segment_count) * particle_index as the angular offset.
0x00B7CD30915CEffectOrbit__init_particles_by_skillInitializes orbit particles based on skill ID. Creates particles in a grid (d4 x d8), loading different textures and configuring color/size/position per skill: 0x12a=green leaf, 0x134=white snow, 0x12b/0x21d/0x392=colored orbs, 0x265/0x266/0x267/0x268=coins, 0x3d5/0x3d6=spirit spheres, 0x3dd=elemental orbs (water/stone/fire/lightning). Each particle gets added to outer particle list.
0x00B7D300175CEffectOrbit__init_leaf_particleInitializes a leaf-type orbit particle (skill 0x12a). Sets lifetime=300, height=30.0, loads green texture, scale=1.5, green color (0x87,0xFF,0x87), radius=sin(radius)/something, alpha=255, blend=6, positions relative to orbit center.
0x00B7D3B0163CEffectOrbit__init_snow_particleInitializes a snow-type orbit particle. Sets lifetime=300, height=1.0, scale=1.5, white color, radius computed from sin table, alpha=255, blend=6.
0x00B7D46098CEffectOrbit__init_elemental_orb_particleInitializes an elemental orb particle (skill 0x3dd). Sets lifetime=200, scale=2.0, initial angle=330, radius=1.5, alpha=255, positions relative to orbit center with height offset.
0x00B7D4D0292CEffectOrbit__init_colored_orb_particleInitializes a colored orb particle with element-based coloring. Lifetime=300, height=30.0, scale=1.5, blend=6. Color selected by param_3: 1=red, 2=orange, 3=green, 4=yellow, 5=blue, 6=white.
0x00B7D600158CEffectOrbit__init_white_orbit_particleInitializes a white orbit particle (skill 0x134). Sets lifetime=300, height=10.0, loads white texture, scale=1.0, white color, fixed radius=2.0, alpha=255, blend=6.
0x00B7D6A0202CEffectOrbit__init_spirit_sphere_particleInitializes a spirit sphere particle (skill 0x3d5). Sets lifetime=200, height=1.0, loads sphere texture, scale=3.0, purple color (0xFF,0xC8,0xFF), initial angle=330, radius=1.5, alpha=255, blend=6. Stores initial position if this is the first particle.
0x00B7D770155CEffectOrbit__init_coin_particleInitializes a coin orbit particle (skill 0x3d6). Loads coin_a texture, sets lifetime=200, height=10.0, scale=2.5, orange color (0xFF,0xC8,0x00), initial angle=330, radius=2.0, alpha=255, blend=6.
0x00B7D810146CEffectOrbit__init_generic_orbit_particleInitializes a generic orbit particle with standard settings. Lifetime=200, height=1.0, scale=2.0, purple color (0xFF,0xC8,0xFF), initial angle=330, radius=3.0, alpha=255, blend=6. Used by multiple skill types (coins, orbs).
0x00B7D930767CEffectOrbit__reinit_particle_by_skillReinitializes a single orbit particle based on skill ID. Similar to init_particles_by_skill but operates on a single existing particle. Routes to specific init functions based on skill type (leaf, snow, coin, spirit sphere, elemental orb, etc.).
0x00B7DE701081CEffectOrbit__update_orbit_particles_listUpdates orbit particle positions for the outer list (+0xf8). For each particle: advances angle, applies velocity via sin/cos tables, computes height bob using cos lookup, builds transform matrix (rotation_x * rotation_y * scale * translation), stores result. For skill 0x3d5 first particle, also updates entity rotation angle.
0x00B7E2B0943CEffectOrbit__update_single_orbit_particleUpdates a single orbit particle's position and transform. Similar to update_orbit_particles_list but for one particle. Handles angle increment, velocity via sin/cos, height bob, and builds full transform matrix (rotation_x * rotation_y * scale * translation). For skill 0x3d5 first particle, updates entity rotation.
0x00B7E66083CEffectOrbit__render_orbit_particles_listRenders all particles in the outer list (+0xf8) by calling FUN_00b3fd10 for each non-null particle with billboard rendering (type=1).
0x00B7E6C059CEffectOrbit__render_single_orbit_particleRenders a single orbit particle if non-null. Calls FUN_00b3fd10 with billboard rendering (type=1).
0x00B7E700254CEffectOrbit__compute_particle_trajectoryComputes trajectory parameters for an orbit particle. Calculates direction vector from target to start position, computes angle via atan2, adds angular offset for skill 0x3d5 (multi-sphere), computes distance via sqrt, and determines max tick count based on step size and distance.
0x00B7E80087CEffectOrbit__update_entity_rotation_for_spiritUpdates the entity's rotation angle for spirit sphere effect (skill 0x3d5). Only acts on first particle (index 0,0). Increments entity's angle at +0x4c and wraps at 360.
0x00B7E86086CEffectOrbit__set_segment_count_by_skillSets the orbit segment count (+0xd4) based on skill ID. Skill 0x3d5: 8 segments, 0x3d6: 10 segments, 0x3dd: reads from entity object at +0x3d0 and sets column count to 1.
0x00B7E8C0151CEffectRing__ctorConstructor for CEffectRing. Calls base class init, sets vtable to PTR_LAB_01198128, zeros out 6 fields at +0x33 in pairs, plus 3 more at +0x39.
0x00B7E96095CEffectRing__dtorDestructor for CEffectRing. Restores vtable, calls CEffectAura__dtor for cleanup, then FUN_00b4dd10 for base cleanup.
0x00B7E9C0119CEffectRing__scalar_deleting_dtorScalar deleting destructor for CEffectRing. Calls dtor, optionally frees memory (size 0xf0) if bit 0 of param set.
0x00B7EA40571CEffectRing__init_ring_particlesInitializes ring particles in a circular pattern. Creates 22 particles per 90-degree arc (4 arcs = 88 total). Each particle gets radius, angle offset, scale, and texture based on skill ID. Textures: white/blue/red/green/yellow/purple/brown ring textures. Skill 0x376 special: blue ring with color set. Calls FUN_00b3fc80 to init rendering data.
0x00B7EE8063CEffectRing__clear_particle_listClears the ring particle list at +0xe4/+0xe8. Iterates through particles calling FUN_00b82fd0 (free particle), then resets list end to start.
0x00B7EF30319CEffectRing__init_particle_params_by_skillSets ring particle parameters based on skill ID. Configures radius (0xc0), starting angle (0x4c), max angle (0x50=360), alpha (0x44=1), angular velocity (0xc4), and scale (0x20) per skill type. Skill 0xdf: smaller radius (15.0), others default to radius 25.0.
0x00B7F090194CEffectRing__load_texture_by_skillLoads ring effect texture based on skill ID. Maps skill IDs to ring textures: 0xdf/0xee/0x3a6=white, 0xe1/0x3a8=red, 0xec/0x376=blue, 0xed=green, 0x105/0x107/0x3a9=yellow, 0x305=purple, 0x3aa=brown.
0x00B7F1C0767CEffectRing__update_ring_particlesUpdates all ring particles. For each: copies center position, grows scale over time, shrinks radius toward min (30 or 40), advances rotation angle, adjusts alpha (grow for first 11 ticks, then fade). Computes spiral position using sin/cos lookup tables, sets velocity vectors for trail rendering.
0x00B7F816126CEffectLayer__render_multiple_entries_from_arrayCEffectLayer: render multiple entries from array
0x00B7F860132CEffectRing__render_ring_particleRenders a single ring particle with graduated alpha trail. Sets blend mode to 6, computes alpha gradient based on segment count at +0xc, renders via FUN_00b3fce0.
0x00B7F8F0170CEffectRing__update_particle_alphaUpdates ring particle alpha based on skill type and tick count. Growth rates vary by skill: 0xdf=8/20, 0x105-0xee=2/20, 0x107/0x305=2/10, 0x376-0x3aa=5/20. For first 10 ticks, alpha increases by growth rate; after 10, decreases by fade rate.
0x00B7F9C0103CEffectParticle__set_texture_pathSets the texture path string for a particle effect. Copies the STL string parameter into the object's texture path field at +0x134 using STL_lib_func_004fa8f0. Handles small string optimization (SSO) buffer.
0x00B7FA30170effect_command_handler_beamHandles effect commands for beam-type effects. Parses command ID from stream, looks up effect via EffectMap. Commands: 0=destroy, 1-5=set 3D vectors (position/rotation/scale/etc), 6=set RGBA color (clamped 0-255), 7-9=set 2D params, 10=set texture path, 11=set blend mode, 12-13=set integer params, 14=set render mode, 0x2b=set boolean flag.
0x00B7FFC0170effect_command_handler_beam_extendedExtended effect command handler for beam effects. Same as beam handler but adds extra commands: 0x2d=set boolean at +0x15d, 0x2e=set 3D vector at +0x58, 0x33=set boolean at +0x5b, 0x34=set 2D params at +0x47/0x48.
0x00B804E0108effect_command_handler_type_040fEffect command handler for type 0x40F effects. Parses index and command from stream. Commands: 0=destroy, 8=set int at +0x37, 0xB=set int at +0x36, 0x2C=set 3D position vector at +0x39.
0x00B80640108effect_command_handler_type_0401Effect command handler for type 0x401 effects. Parses index and command from stream. Commands: 0=destroy, 0x10=set float at +0x11, 0x11-0x14=set various params, 0x15-0x29=set indexed params, 0x2A=set float at +0x12.
0x00B807E0123effect_command_handler_genericGeneric effect command handler. Reads key and index from stream, looks up effect via EffectMap. Same command set as 0x401 handler but with dynamic key/index from stream parameters.
0x00B808AC40CEffectLua__set_scale_from_lua_numberLua 5.1 internal: CEffectLua set scale from lua number
0x00B80990166effect_command_handler_type_0927Effect command handler for type 0x927 effects. Extensive command set: 0=destroy, 4=set position, 6=set RGBA bytes, 8=set float at +0x35, 10=set texture path, 0xB-0x15=set various floats/ints, 0x2E=set 2D vector at +0x3A, 0x35=set short at +0x33.
0x00B81160117CEffectPool__ctorConstructor for CEffectPool. Sets vtable to PTR_FUN_011981fc, zeros out capacity fields, calls FUN_00b820e0 for initialization and sets active flag if successful.
0x00B811E0181CEffectPool__dtor_variant_ADestructor variant A for CEffectPool. Iterates through pool entries using indexed lookup (entry_base + offset), calls each entry's virtual destructor (vfunc[0] with flag=1). Then calls FUN_00b814e0 for final cleanup. Restores base vtable.
0x00B812A0181CEffectPool__dtor_variant_BDestructor variant B for CEffectPool. Same pattern as variant A but sets different vtable (PTR_FUN_01198244) and calls FUN_00b815b0 for cleanup instead.
0x00B81360181CEffectPool__dtor_variant_CDestructor variant C for CEffectPool. Same destruction pattern but vtable PTR_FUN_01198214, cleanup via FUN_00b81680.
0x00B81420181CEffectPool__dtor_variant_DDestructor variant D for CEffectPool. Same destruction pattern but vtable PTR_FUN_01198224, cleanup via FUN_00b81750.
0x00B814E0201CEffectDeque__free_all_blocksFrees all deque storage blocks. Decrements count to 0, frees each block (16 bytes each), frees the block pointer array (aligned free for > 0xFFF), then frees the deque header (8 bytes).
0x00B815B0201CEffectDeque__free_all_blocks_00b815b0Frees all deque storage blocks. Identical to CEffectDeque__free_all_blocks at different address.
0x00B81680201CEffectDeque__free_all_blocks_00b81680Frees all deque storage blocks. Identical to CEffectDeque__free_all_blocks at different address.
0x00B81750201CEffectDeque__free_all_blocks_00b81750Frees all deque storage blocks. Identical to CEffectDeque__free_all_blocks at different address.
0x00B818B0115CEffectPool__dtor_simpleSimple destructor for CEffectPool. Sets vtable, iterates entries in vector at +0x2/+0x3 calling virtual destructor on each, then frees the vector buffer.
0x00B81940191CEffectPool__scalar_deleting_dtor_AScalar deleting destructor variant A for CEffectPool. Destroys all entries, frees deque blocks, optionally frees self (size 0x18).
0x00B81A00191CEffectPool__scalar_deleting_dtor_BScalar deleting destructor variant B for CEffectPool. Same pattern as variant A but uses different vtable and cleanup path.
0x00B81AC0191CEffectPool__scalar_deleting_dtor_CScalar deleting destructor variant C for CEffectPool. Same pattern as A/B but vtable 01198214.
0x00B81B80191CEffectPool__scalar_deleting_dtor_DScalar deleting destructor variant D for CEffectPool. Same pattern as A/B but vtable 01198224.
0x00B81C40138CEffectPool__scalar_deleting_dtor_simpleSimple scalar deleting destructor for CEffectPool. Destroys entries via vector iteration, frees vector buffer, optionally frees self (size 0x14).
0x00B81D00233CEffectPool__alloc_or_recycle_CEffectAllocates or recycles a CEffect from the pool. If pool is empty, allocates new CEffect (size 0x3FF8). If pool has entries, pops from deque and calls CEffect__reset_to_defaults to reinitialize. Returns the effect pointer.
0x00B81DF0233CEffectPool__alloc_or_recycle_CEffNyangGrassAllocates or recycles a CEffNyangGrass from the pool. If pool empty, allocates new (size 0x328). If recycling, calls CEffNyangGrass__destroy_all_particles to reset.
0x00B81EE0233CEffectPool__alloc_or_recycle_CEffectLayerAllocates or recycles a CEffectLayer from the pool. If pool empty, allocates new (size 700). If recycling, calls CEffectLayer__reset_to_defaults.
0x00B81FD0233CEffectPool__alloc_or_recycle_CEffectLayerExAllocates or recycles a CEffectLayerEx from the pool. If pool empty, allocates new (size 0x2F8) via CEffectLayerEx__ctor. If recycling, calls CEffectLayerEx__reset_to_defaults to reinitialize.
0x00B820C021CEffectMemoryMgr__call_pool_vfuncCalls virtual function at offset 4 (second vtable entry) on the pool at the given index. Used to invoke pool-specific operations through the pool array.
0x00B820E0781CEffectMemoryMgr__init_poolsInitializes the 4 effect memory pools. Creates pool entries with different vtables for CEffect, CEffNyangGrass, CEffectLayer, and type D effects. Each pool has a deque-based free list with header (8 bytes). Shows MessageBox error if pool sequence is incorrect. Returns 1 on success.
0x00B823F0215CEffectMemoryMgr__get_or_create_singletonGets or creates the singleton CEffectMemoryMgr instance at DAT_016f7140. Creates new pool (size 0x14), initializes pools. If initialization fails, destroys and nulls the singleton. Returns 1 if singleton is valid, 0 otherwise.
0x00B824D039CEffectMemoryMgr__destroy_all_poolsDestroys all pools in the memory manager's vector. Iterates through pool pointers at +0x8/+0xc, calling each pool's virtual destructor with flag=1.
0x00B8250027CEffectMemoryMgr__destroy_singletonDestroys the CEffectMemoryMgr singleton at DAT_016f7140. Calls virtual destructor with flag=1, then nulls the global pointer.
0x00B82520132CEffectDeque__push_back_APushes an element onto the back of deque variant A. If the current block is full (4 elements per block), calls grow to allocate more blocks. Allocates new block (16 bytes) if needed, stores value, increments count.
0x00B825B0132CEffectDeque__push_back_BPushes an element onto the back of deque variant B. Same logic as push_back_A but uses different grow function.
0x00B82640132CEffectDeque__push_back_CPushes an element onto the back of deque variant C. Same logic as push_back_A/B but uses different grow function.
0x00B826D0132CEffectDeque__push_back_DPushes an element onto the back of deque variant D. Same logic as push_back_A/B/C but uses different grow function.
0x00B8276024CEffectMemoryMgr__recycle_to_poolReturns an effect to the specified pool for recycling. Calls vfunc[2] (push_back) on the pool at the given index, passing the effect pointer.
0x00B82780418CEffectDeque__grow_AGrows the deque block array for variant A. Doubles capacity (min 8), allocates new array, copies existing blocks preserving circular layout, frees old array. Each block holds 4 pointers (16 bytes).
0x00B82930418CEffectDeque__grow_BGrows the deque block array for variant B. Identical logic to grow_A at different address.
0x00B82AE0418CEffectDeque__grow_CGrows the deque block array for variant C. Identical logic to grow_A at different address.
0x00B82C90418CEffectDeque__grow_DGrows the deque block array for variant D. Identical logic to grow_A at different address.
0x00B83000102EffectMap__clear_entries_rangeClears effect map entries in a range. Iterates from param_1 to param_2 in 0x10-byte strides, copying +0x4 to +0x8 and calling STL_lib_func_004f9500 for cleanup.
0x00B83070568EffectMap__insert_entry_and_growInserts an entry into the effect map with reallocation. Each entry is 0x108 bytes (0x42 dwords). Allocates new buffer with 1.5x growth, copies entry at insertion point, copies data before and after, frees old buffer.
0x00B832B0440EffectMap__resize_vector_16byteResizes a vector of 16-byte entries. Allocates new buffer with 1.5x growth, copies existing entries, fills new entries with param_3 value. Used for effect map sub-vectors.
0x00B83470140EffectMap__copy_entries_rangeCopies a range of effect map entries (0x108 bytes each = 0x42 dwords) from source to destination. Iterates entry by entry, copying 0x42 dwords per entry.
0x00B83540727EffectMap__ctorConstructor for EffectMap. Initializes vector storage, creates 10 sub-entries via _eh_vector_constructor_iterator_, sets up default rendering parameters (identity matrix, blend modes), initializes to 0xC47 (3143) 16-byte entries with zeros. Uses timeGetTime for creation timestamp. Sets sentinel bytes at specific offsets.
0x00B83820242EffectMap__resetResets the EffectMap to initial state. Clears all entry data, zeros out 16000 bytes of lookup table, resets counters. Zeros sub-entries and sets sentinel values. Sets ID to -1.
0x00B83920173EffectMap__copy_sub_entryCopies a sub-entry from source to destination. Copies first byte, allocates buffer for vector data, memcpy's the vector content.
0x00B83A40144EffectMap__free_16byte_vectorFrees the 16-byte entry vector. Clears entries via EffectMap__clear_entries_range, frees buffer (aligned free for >0xFFF), zeros pointers.
0x00B83AE0162EffectMap__free_108byte_vectorFrees the 0x108-byte entry vector. Destroys entries via FUN_00b873b0, frees buffer (aligned free for >0xFFF), zeros pointers.
0x00B83B90155EffectMap__dtorDestructor for EffectMap. Closes file handle at +0x1DC (if open, flushes log if mode is 0x1F), destroys 10 sub-entries via _eh_vector_destructor_iterator_, frees 16-byte vector.
0x00B83C30123EffectMap__sub_entry_ctorConstructor for an EffectMap sub-entry. Initializes the 16-byte vector via reset_entries_from_backup, zeros 16000 bytes of lookup table at +0x128, clears the 108-byte entry vector. Sets counter at +0x10 and +0x124 to 0.
0x00B83CB080EffectMap__clear_single_entryClears a single 16-byte entry. Copies +0x4 to +0x8 (resets end to start), then calls STL cleanup function.
0x00B83D5051EffectMap__check_effect_type_matchChecks if an effect's type at +0x38 matches a filter condition. For filter=2: matches type 0, 0xD, 1, or 2. For other filters: matches against global DAT_016d3b14. Returns 1 if matched.
0x00B83D90123EffectMap__update_effect_timerUpdates an effect's timer. If DAT_016f7144 is 0, just increments tick count. Otherwise uses timeGetTime, increments ticks and accumulates elapsed time. When accumulated time exceeds limit at +0xa4, transitions to state 6 (completed). Returns 0 when effect finishes, 1 otherwise.
0x00B83E1038EffectMap__reset_timer_if_not_loopingResets effect timer fields if not in looping states (3 or 8). Clears flag at +0x1e4, tick count at +0x1c, and accumulated time at +0x20.
0x00B83E40113EffectMap__xor_decrypt_dataXOR-decrypts data in-place. Derives key from fields at +0x2c (>>5) and +0x30 (>>3). For each dword in the buffer, XORs with (key_base + counter) * key_mul. Updates counter at +0x1e8 and stores computed values at +0x1ec/0x1f0.
0x00B83EC086EffectMap__reset_entries_from_backupResets effect entries from backup. Sets ID to -1, copies 0x108-byte entries from backup range to main range (overwriting), destroys remaining old entries, updates end pointer.
0x00B83F2057EffectMap__close_file_handleCloses the effect file handle at +0x1DC. If mode is 0x1F, flushes log via FUN_00b857e0 before closing. Sets handle to 0.
0x00B83F60367EffectMap__read_header_and_indexReads effect file header and index table. Seeks to offset 100, reads 12-byte header with magic 0x52414705 or 0x51404605, reads up to 26 10-byte index entries (id + 2 offsets). Then calls FUN_00b84930/FUN_00b84e40 to parse content. Returns true on success.
0x00B840D0559EffectMap__open_and_parse_fileOpens and parses an effect file. Mode 0x1F: opens for appending, stores data offset 0x174. Mode 0x20: opens for reading, reads header + index table with magic check, parses effect data. Cleans up on failure. Returns 1 on success, 0 on failure.
0x00B8430059EffectMap__get_entry_by_indexReturns pointer to an effect entry by index. Each entry is 0x108 bytes. Returns 0 if index is out of bounds, otherwise returns pointer to entry data (+4 past start).
0x00B8434089EffectMap__get_duration_as_hmsConverts effect duration at +0xa4 (milliseconds) to hours:minutes:seconds packed into a uint. Returns (hours << 0) \| (minutes << 8) \| (seconds << 16).
0x00B843A082EffectMap__find_sub_entry_indexFinds the index of a sub-entry by ID. First checks if ID matches at expected position (direct index). If not, linear searches all 26 sub-entries (10 bytes each at +0xd2). Returns index or -1 if not found.
0x00B84400182EffectMap__get_last_chunk_offsetCalculates the file offset of the last data chunk. Reads chunks sequentially from start offset (+0x1e0), each chunk is 10-byte header + variable data (size in local_14). Reads (chunk_count - 1) chunks to find the last one's position. Returns the last chunk's data size field.
0x00B844C0169EffectMap__get_time_scale_by_speedReturns a time scale multiplier based on effect speed value at +0x24. Maps several float constants to different scale values. Returns 1.0 as default for unrecognized speed.
0x00B84570169EffectMap__get_frame_rate_by_speedReturns a frame rate value based on effect speed at +0x24. Maps speed constants to different frame rates. Returns 1.0 as default.
0x00B84620169EffectMap__get_speed_indexReturns an integer speed index (1-7) based on the effect speed float at +0x24. Returns 0 for unrecognized speed values.
0x00B846D0168EffectMap__reset_header_preserve_configResets effect header data while preserving configuration fields at +0xb0 to +0xcc. Saves config, zeros 0x84 bytes starting at +0x2c, restores config, sets magic numbers (0x52414705), resets file state to -1/0/0.
0x00B847D0119EffectMap__should_play_effectDetermines if an effect should be played. Always plays 0x8AE. For other IDs, looks up in a tree map. For specific IDs (0x109, 0x8D, 0x8E, 0x97, 0x17F, 0x2DC, 0xBDE), returns the flag at +0xb6. Others return 1 (always play).
0x00B84870185EffectMap__find_entry_by_rrf_nameSearches for an effect entry by its .rrf filename. Formats search name as "%s.rrf", then iterates through entries (0x108 bytes each) comparing the name at +4. Returns 1 if found, 0 otherwise.
0x00B84930396EffectMap__read_sub_entry_dataReads sub-entry data from the effect file. Looks up sub-entry by index (1-25), allocates buffer for the data, seeks to file offset, reads data, and XOR decrypts it. Initializes output vector (param_2) to empty.
0x00B84AC0147EffectMap__read_sub_entry_to_bufferReads sub-entry data into a provided buffer. Calls read_sub_entry_data to get the data, then memcpy's it to param_2. Returns the size copied, or 0 if param_2 is null.
0x00B84B60721EffectMap__scan_replay_rrf_filesScans current directory for replay .rrf files. Uses FindFirstFile/FindNextFile with "Replay/*.rrf" pattern. For each .rrf file, creates a 0x108-byte entry with the filename and optional numeric ID (parsed from last 4 chars if filename is exactly 23 chars). Adds entries to the effect map vector.
0x00B84E40821EffectMap__parse_header_from_dataParses effect header from binary data stream. Expects magic 0x3B6, then reads tagged chunks (0x3B7=end, 0x3C0=header, 0x3C1-0x3CD=various field blocks). Each chunk: 2-byte tag + 4-byte size + data. Copies data to appropriate field offsets. For 0x3C0, also reads duration from last file chunk if header changed.
0x00B851E0364EffectMap__prepare_replay_filenamePrepares a replay filename. Scans existing .rrf files first. If no custom name, auto-generates "Replay/RagnarokReplay_%04d.rrf" with next available number. If custom name set with overwrite flag, checks for duplicates. Otherwise prefixes with "Replay/" path. Returns 1 on success, -2 if duplicate found.
0x00B85350364EffectMap__read_next_data_chunkReads the next data chunk from the effect file during playback. Checks state (must be 7 or forced). Reads 10-byte chunk header, validates sequence number and timestamp against current playback position. Reads chunk payload, XOR-decrypts it, advances file offset. Returns true if chunk was read.
0x00B854C0179EffectMap__should_record_effectDetermines if an effect should be recorded in replay. Returns false if DAT_016f7144 is 0, or for IDs 0x10F, 0x1FE, 0xC9, 0x11E, 0x244. For IDs 0xC3/0xC2/0xC4/0xC7/0xC0, checks config flags at +0xb1-0xb8. Otherwise returns true.
0x00B8558038EffectMap__reset_file_offset_to_firstResets the file read offset (+0x1e0) to the first sub-entry's data offset. Clears flag at +0x1e4, looks up sub-entry index 1 to get its file offset.
0x00B855B0274EffectMap__write_sub_entry_from_vectorWrites sub-entry data from a vector to the effect file. If param_4 is 0xE (new entry), registers the sub-entry in the index table. XOR-encrypts the data using the same key derivation as xor_decrypt_data, then fwrite's to the file at the stored offset.
0x00B856D0259EffectMap__write_sub_entry_from_bufferWrites sub-entry data from a raw buffer to the effect file. Similar to write_sub_entry_from_vector but takes raw pointer + size. XOR-encrypts and fwrite's. Returns 1 on success, 0 on failure.
0x00B857E0570EffectMap__flush_write_dataFlushes pending write data to the effect file. Mode 0xB: final flush - builds header data via FUN_00b85a20, writes sub-entry, writes 100-byte file header + 12-byte effect header. Mode 0xC: periodic flush every 1200 writes, writes alternate magic 0x51404605 + index table. Mode 0xD: immediate flush of header + index. Returns 1 on success.
0x00B85A202579EffectMap__serialize_header_to_chunksSerializes the EffectMap header fields into a vector of tagged binary chunks for writing to the .rrf replay file. Builds chunks: 0x3B6 (6-byte start marker), 0x3C1-0x3C3 (4-byte int fields from offsets 0x34-0x3C), 0x3C4 (64-byte 4x4 matrix from 0x40), 0x3C5 (20-byte data from 0x80), 0x3C6-0x3C7 (4-byte ints from 0x94/0x98), 0x3C8-0x3CD (4-byte fields via helper), 0x3C0 (4-byte magic copy from 0xCE), 0x3B7 (6-byte end marker). Each chunk has 2-byte tag + 4-byte size + payload.
0x00B86440183EffectMap__set_entry_data_at_indexSets data on a 16-byte entry at the given index. Validates index < 0xC47 and entry is active. Resizes the entry's sub-vector to the specified size if needed, then assigns the data range.
0x00B86500350EffectMap__write_game_state_snapshotWrites a game state snapshot to the replay file. Captures data from 2 static memory offsets (0x99B4, 0x1D64 from game object), plus serialized lists for effect IDs 0x10F, 0x235, 0x29D, and optionally character header data if DAT_01738254 is set. Each piece is written as a 0x29-type effect data chunk.
0x00B86660535EffectMap__write_effect_data_chunkWrites an effect data chunk to the replay file. Checks if effect should be recorded (by ID), allocates buffer with 10-byte header + payload. Sets tick count and timestamp in header based on mode (0x2A=relative, 0x2B=offset). XOR-encrypts payload, fwrite's to file, advances write offset and chunk counter.
0x00B86880512EffectMap__write_raw_effect_chunkWrites a raw effect data chunk (from buffer, not vector). Same recording logic as write_effect_data_chunk but takes raw pointer + size. Checks effect ID against play list, XOR-encrypts, writes to file.
0x00B86A8046EffectMap__init_write_sub_entry_1Initializes writing for sub-entry index 1 if flag at +0x1e4 is 0. Sets sub-entry ID=1, size=0, and offset to current write position (+0x1e0). Returns 1.
0x00B86AB025EffectMap__set_max_entriesSets the maximum number of entries at +0x10. Returns 0 if param is 0, otherwise stores the value and returns 1.
0x00B86AD020EffectMap__update_duration_from_timeUpdates the effect duration at +0xa4 by computing (timeGetTime - start_time). Start time is at +0x14.
0x00B86AF083EffectMap__set_filenameSets the filename at +0x14 (260-byte buffer). Checks that param is non-null and flag at +0x118 is set. Clears buffer, copies the filename string. Returns pointer to the buffer or null on failure.
0x00B870D062EffectMap__set_current_entry_indexSets the current entry index (stored at *param_1). Clamps to [0, entry_count-1]. Returns 1 on success, 0 if param_2 < 0.
0x00B87110170EffectMap__set_header_dataSets the full effect header data. Copies 4x4 matrix (param_4, 16 dwords at +0x40), 5 floats (param_5 at +0x80), 4 params at +0x94, position at +0x34, key pair at +0x2c/+0x30, sets magic 0x52414705. Returns 0 if either matrix param is null.
0x00B871C0122EffectMap__increase_speedIncreases the effect playback speed by one step. Maps current speed float to next higher tier: 0.5->1.0, 1.0->2.0, 2.0->4.0, 4.0/5.0->4.0 (capped).
0x00B87240122EffectMap__decrease_speedDecreases the effect playback speed by one step. Maps current speed float to next lower tier: 0.5/1.0->0.25, 2.0->0.5, 4.0->1.0, 5.0->2.0.
0x00B872C036EffectMap__restart_playbackRestarts effect playback from current tick position. Only acts if not in looping states (3 or 8). Copies tick count to entry index, sets both start and current timestamps to timeGetTime.
0x00B872F0112EffectMap__set_playback_stateSets the playback state at +0xc. State 4->1, state 5->6. States 1-8 set directly. Updates global DAT_016f7144 flag: cleared for states 1-2, set to 1 for states 6-8 (recording/playback modes).
0x00B8736043EffectMap__set_config_dataSets configuration data at +0xb0. Clears the buffer first, then copies param_3 bytes from param_2. Returns 1.
0x00B8739022EffectMap__clear_entries_range_wrapperWrapper that calls EffectMap__clear_entries_range with swapped parameter order.
0x00B873B057EffectMap__zero_entries_rangeEffectMap: zero entries range
0x00B87400145EffectMap__fill_entries_with_copyFills a range of 16-byte entries by copying from a template. Creates param_3 copies starting at param_2 offset, then clears any excess entries.
0x00B874A0145EffectMap__copy_entries_range_16byteCopies 16-byte entries from source range [param_2, param_3) to destination param_4. Clears any trailing entries after the copy.
0x00BAC8E01535CEffect__build_resource_path_with_fallbackBuilds a resource path string from components (type, index, parameters). Checks if the resource exists via CResourceMgr, falls back to a default path if not found. Uses format_string_vsnprintf for path construction.
0x00BACEE01337CEffect__build_resource_path_with_packetBuilds a resource path string with packet stream construction. Handles two branches: param_6==-1 formats with 6 args including packet stream, otherwise uses FUN_00de3800 for extra formatting. Uses CPacketStream__construct and format_string_vsnprintf.
0x00BAD4201288CEffect__build_resource_path_simpleSimpler resource path builder variant. When param_6==-1, builds path with 5 format args. Otherwise uses FUN_00de3800 and constructs via CPacketStream. Similar to build_resource_path_with_packet but with fewer string components.
0x00BAD9401921CEffectParticle__ctor_00bad940Constructor for CEffectParticle. Sets vtable to PTR_FUN_01199158. Initializes large particle state structure (~0xFA18 bytes). Calls base class ctor FUN_00ca8730. Initializes position, rotation matrices, color (0xFF RGB), physics params, animation state, and 0x200 sub-particle entries via _vector_constructor_iterator_.
0x00BAE1F0195CEffectParticle__dtor_00bae1f0Destructor for CEffectParticle. Sets vtable, calls virtual method 0x40 on field 0x50 with opcode 0x19, frees field 0x51 memory, deallocates 4 std::vectors, then calls base class dtor FUN_00ca8f90.
0x00BAE2C0219CEffectParticle__scalar_deleting_dtor_00bae2c0Scalar deleting destructor for CEffectParticle. Calls the same cleanup as dtor (vtable set, virtual call, free, vector dealloc, base dtor). If param_2 & 1, frees the object memory (0xFA18 bytes).
0x00BAE3A0116CEffectParticle__advance_animation_frameAdvances the particle animation frame counter. Checks frame interval (field 0x1E0 % 0x1E8). Increments frame index (0x3C). In loop mode (0x254!=0), wraps frame using modulo. In non-loop mode, returns 0 when reaching total frames, with special handling for flag 0x800.
0x00BAE46073CEffectParticle__get_rgb_color_valuesGets RGB color values from the particle's data table at field 0x140. Reads color components from offsets 0x11C88, 0x11C8C, 0x11C90 if they are not -1, writing them to the output byte pointers.
0x00BAE5D0152CEffectParticle__init_from_parent_positionInitializes a particle from its parent object. Sets parent pointer (0x140), type (0x1D0), adds position offsets to 0x388/0x38C/0x390, copies parent position to both origin (0x37C) and current pos (0x10/0x14/0x18), resets state counter (0x13C).
0x00BAE670338CEffectParticle__copy_transform_to_particle_arrayCopies current transform state (position, matrices, colors, render params) from the main particle to each entry in the particle array at offset 0x6BC. Iterates through field 0x1F4 entries, each 0x8C bytes apart. Also computes packed ARGB color value.
0x00BAE7D0199CEffectParticle__update_particle_transformUpdates particle transform state. Large function handling position, rotation, and rendering updates for the effect particle system.
0x00BB48201177CEffectParticle__update_physics_and_colorUpdates particle physics and color per frame. Handles bullet-type timing (field 0x3E8='b'), velocity accumulation, position from parent, bounce/oscillation (flag 0x80), color channel clamping (0-255), random direction jitter (flag 0x08), and frame advance with loop support.
0x00BB4CC0411CEffectParticle__update_position_accumulateSimpler particle position update. Accumulates velocity into position, computes direction via vec3_normalize/cross_product, applies speed to 3D position relative to parent, advances frame counter with loop/terminate check.
0x00BB4F003626CEffectParticle__update_weather_channelsComplex particle update for weather-like effects with 4 channels. Processes camera angle for wind direction. Each channel has type-dependent behavior: 0x0E (pendulum swing), 0x0F (sinusoidal oscillation with decay), 0x10 (random jitter), 0x0B (brownian motion). Uses sin/cos lookup table at DAT_01387fa8.
0x00BB5D30329CEffectParticle__update_wave_patternParticle update with wave/petal pattern. 4 segments rotating at different speeds. Uses sin lookup table (DAT_01387fa8) to modulate radius values per angle. Grows petal size over time with speed clamping.
0x00BB5E80765CEffectParticle__update_growth_and_waveParticle update combining growth and wave patterns. 4 channels, channel 3 is special (height-triggered). Radius grows/shrinks toward target with speed ramp. Once fully grown, switches to wave oscillation mode using sin table. Handles size limits and fade timing.
0x00BB63C0497CEffectParticle__update_growth_animationParticle update with growth animation. 4 channels with height-triggered channel 3. Radius grows toward target; once reached, marks as complete. Handles speed ramping, angle rotation, and boundary clamping. Similar to growth_and_wave but without oscillation mode.
0x00BB65C0608CEffectParticle__update_matrix_rotationParticle update with full 3D matrix rotation. Computes position via rotation matrices (init_rotation_x, set_rotation_y) applied to distance vector. Accumulates velocity, applies parent offset, and updates height with gravity-like clamping. Calls FUN_00bc5e00 for sub-updates and FUN_00be6fe0.
0x00BB6820781CEffectParticle__update_3d_rotation_with_velocityParticle update with 3D rotation and velocity accumulation. Applies rotation matrices (X,Y) from angles, transforms position through matrix with sign-flipped distance. Accumulates angular velocity into direction, limits height, handles flag 0x01 for deceleration. Advances frame with loop support.
0x00BB6B30705CEffectParticle__update_3d_rotation_simpleSimpler variant of 3D rotation particle update. Similar to update_3d_rotation_with_velocity but without separate angular velocity channels. Matrix rotation with height clamping and deceleration flag support.
0x00BB6F301652CEffectParticle__update_with_random_windParticle update with multiple random perturbation modes. Flag 0x400: velocity-based movement. Flag 0x02: random wind drift (periodic XY jitter). Flag 0x04: random 3D direction change with rotation. Flag 0x08: small brownian direction jitter. Flag 0x100: cull by distance. Flag 0x20: camera-relative rotation. Calls advance_animation_frame.
0x00BB75B0741CEffectParticle__update_with_gravity_bounceParticle update with gravity and ground bounce. Applies matrix rotation to distance, adds lateral velocity (0x2EC). Checks ground height via C3dAttr__GetInterpolatedHeight; on ground hit, dampens velocity and plays coin sound effect (EF_Coin_X.wav) if type==1. Calls advance_animation_frame.
0x00BB78A01561CEffectParticle__update_with_wind_and_jitterParticle update combining wind, jitter, and velocity modes. Uses saved origin position instead of parent live position. Same random perturbation flags as update_with_random_wind (0x02 wind, 0x04 direction change, 0x08 brownian, 0x20 camera-relative). Calls advance_animation_frame.
0x00BB7EC0703CEffectParticle__update_spiral_with_keyframesParticle update with spiral motion and keyframe support. Accumulates angular velocity, lateral drift, and height offset. Reads keyframe data from vectors at fields 0x258/0x264/0x270 to change velocity at specific frames. Uses Y-axis rotation matrix, then Z-rotation from accumulated angle. Calls advance_animation_frame.
0x00BB8180706CEffectParticle__update_axis_angle_orbitParticle update with axis-angle orbit rotation. Uses CMatrix__from_axis_angle_rotation_only on axis at field 0x290 with accumulated angle (0x314). Transforms orbit position through secondary matrix (0x190-0x1BC). Applies gravity-like damping on distance (700 - 0x2EC). Calls advance_animation_frame.
0x00BB8610492CEffectParticle__update_linear_velocitySimple particle update with linear velocity through matrix. Adds acceleration to distance, transforms through rotation matrix, positions relative to parent. Flag 0x01: stops velocity at specific frame. Flag 0x02: sets reverse velocity near end of life. No sub-particle or frame advance calls when flag 0x02 active.
0x00BB8A40513CEffectParticle__update_ribbon_quadParticle update computing a ribbon/quad strip. Calculates 4 corner positions using vec3_normalize/cross_product at current and next angle (0x30C + 0x330). Stores 4 vertices at 0x3B8-0x3E4 with height offset (0x364) and depth (0x318). Used for ribbon trail effects.
0x00BB8C502489CEffectParticle__update_full_featuredMost feature-rich particle update. Handles: keyframe parameter loading at start frame, velocity+acceleration, multiple movement modes (0x100 matrix-only, 0x400 velocity-based, default matrix+accumulate), rotation (0x200 camera, 0x40 camera-offset, default ZX), color channel animation with flag 0x800 for 254-clamp mode, flag 0x10 writes back to parent, flag 0x04 ground collision, flag 0x20 periodic damping, flag 0x02 UV scroll.
0x00BB96102443CEffectParticle__update_full_featured_fixed_originSame as update_full_featured but uses fixed origin position (0x37C/0x380/0x384) instead of reading parent each frame. Supports all the same flags: keyframe params, movement modes, rotation modes, color animation, ground collision, periodic damping, UV scroll, parent writeback.
0x00BB9FA0449CEffectParticle__update_radial_decayUpdates 4 particle channels with radial decay pattern. Each channel grows radius toward target, then decays with scaling factor. Channel 3 has special random angle offset. Uses sin lookup table (DAT_01387fa8) for radius per angle slot. Marks slots as complete when capped.
0x00BBA1D01141CEffectParticle__update_multi_ring_growthUpdates multi-ring particle effect with camera angle tracking. Has two ring types (type 0x02 and default) with different radius targets per slot (10 slots each). Grows radii during first 20 frames, then decays. Type-dependent fade behavior at end of life with different decay rates.
0x00BBA650387CEffectParticle__update_expanding_ringUpdates expanding ring effect with 4 channels. Ring radius grows then shrinks based on lifetime. Computes camera-relative angle using parent's rotation matrix (field 0x138). Stores sin/cos values for rendering. Supports speed clamping and angle-based orientation.
0x00BBA7E0290CEffectParticle__update_simple_rotationSimple 4-channel rotation update. Increments angle per frame (channels 0-1 by 1, channels 2-3 stay). Computes camera-relative angle from parent matrix. Scales sin/cos by offset factor. Grows radius (0x3EA) up to 40 in first frames.
0x00BBAA10256CEffectParticle__update_4channel_counterSimple 4-channel counter update. Computes camera angles for billboard orientation. For each active channel (at 0x3E8, 0x49C, 0x550, 0x604), increments frame counter and size counter (capped at 255). No position transform - just counters and camera angles.
0x00BBABC0871CEffectParticle__update_trail_cascadeTrail cascade effect - propagates state from channel 0 to channels 1-3 every 6 frames. Channel 0 computes position with sin-wave height offset. Channels inherit previous channel's data with reduced size (-50). Also manages rotation angle, UV scroll, and camera orientation.
0x00BBAF30318CEffectParticle__update_pulse_ringPulse ring effect with 4 channels. Each channel has grow phase (first 10 frames, +25 radius) then shrink phase (-5 per frame). UV rotation increments each frame. Special type (0x67 flag) adjusts starting height and angle rotation speed (5 deg/frame). Resets to base position when radius hits 0.
0x00BBB070168CEffectParticle__update_static_or_cached_posSimple particle update that either follows parent position (flag 0x454==1) or uses cached position from fields 0x484/0x488/0x48C. Supports camera-relative rotation (flag 0x20). Calls sub-updates FUN_00bc5e00, FUN_00be6fe0, and advance_animation_frame.
0x00BBB120746CEffectParticle__update_trail_propagationTrail propagation effect. Camera angle tracking + 4-channel cascade. After frame 4, copies data from channel 2 to 3, channel 1 to 2, channel 0 to 1 (each with -25 size reduction). Channel 0 grows radius (+20) until reaching max, then shrinks (-10). Computes new trail head position with velocity offset.
0x00BBB4101253CEffectParticle__update_3d_oscillation3D oscillation particle with sin/cos position lookup. Uses 3 oscillation pairs for XYZ. Applies mode-dependent UV rotation speed (modes 10-19 have orbital mechanics with height decay). Computes final position using sin table (DAT_01387fa8/DAT_01388af0) for circular motion with random UV offset.
0x00BBB9D0353CEffectParticle__update_4channel_grow_shrink4-channel particle with grow/shrink lifecycle. Camera angle tracking. Each channel: grows size by 4/frame for first 21 frames, then shrinks by 2/frame after frame 50. Similar to 4channel_counter but with larger grow/shrink rates and fade timing.
0x00BBBB40243CEffectParticle__update_spinning_grow_shrink4-channel spinning particle with grow/shrink. Camera angle tracking. Each channel: frame counter, UV rotation with acceleration for types >9, radius growing in first 11 frames (+12 or +20 based on type), then shrinking after frame 20 (-2 or -4).
0x00BBBC40329CEffectParticle__update_4channel_fast_grow4-channel particle with fast grow/shrink. Camera angle tracking. Each channel: fast growth (+18/frame first 11 frames), then shrink (-15/frame after frame 20). Similar to other 4-channel variants but with aggressive size changes for burst effects.
0x00BBBD90170CEffectParticle__update_cached_positionParticle update using cached/stored position. If channel 0 active, copies position from fields 0x484/0x488/0x48C to accumulator 0x388-0x390. Final position comes from accumulator, not parent. Supports camera-relative rotation (flag 0x20). Calls advance_animation_frame.
0x00BBBF00379CEffectParticle__update_firework_sparkFirework spark effect. 4 channels with sparks that expand, fade, and respawn. Radius decays by scaling factor (DAT_01196714). When radius too large and size hits 0, spark respawns at random angle with new size (200 or 100). Height computed via sin wave. Channels deactivate after 300 frames.
0x00BBC0802190CEffectParticle__update_environment_particleComplex environment particle (rain/snow/leaves). Behavior varies by type field (0x17): type 0 = rain (falls, respawns at random XZ when hitting ground), type 1/3 = snow/petal, type 2 = firefly (slow drift), type 5/6/7/8 = ground effects. Special handling for 'ecl_fild01' map with wider spawn range. Uses C3dAttr__GetInterpolatedHeight for ground detection.
0x00BBC910215CEffectParticle__update_rotate_grow_fade4-channel rotate/grow/fade particle. Camera angle tracking. Each channel: angle rotates +1/frame, grows rapidly (+25/frame) first 10 frames, then fades (-5/frame after 40 frames). Size clamped to 0-255 range.
0x00BBC9F0305CEffectParticle__update_bouncing_particleBouncing particle effect. 4 channels with gravity simulation. Angle rotates +2/frame. Height accumulates velocity; when exceeding threshold, size decreases. On reaching 0 size, increments bounce counter (max 3), respawns at random XZ offset with new downward velocity. Grows size (+5) during first 60 frames.
0x00BBCB30237CEffectParticle__update_aura_pulseAura pulse particle. Camera angle tracking. Single channel: grows size (+10/frame) for first 31 frames (capped at 255), then shrinks (-3/frame). UV wraps around at DAT_010df50c. Copies height value from 0x488 to 0x470 each frame.
0x00BBCC20745CEffectParticle__update_multi_mode_auraMulti-mode aura particle. Size behavior depends on type (0x454): types 1/3 grow then shrink over 300 frames, type 0x16 grows fast, type 0 grows slowly, type 0x14 grows medium, types 0x10-0x12 fixed 100, types 0x0A-0x0C fixed 150, etc. Angle rotation varies by type. UV scrolls based on type. Position offset from parent with height adjust.
0x00BBCF10269CEffectParticle__update_animated_spriteAnimated sprite particle. Camera angle tracking. Advances sprite frame index (0x450) every N frames (6 or 8 based on type). Wraps frame to 0 when reaching total frame count (0x204). Size clamped to 0-255. Position set from parent with height from cached value (0x488).
0x00BBD020517CEffectParticle__update_ribbon_trailRibbon trail particle with 4 channels. Each channel manages a trail history of UV positions. Frame 1 initializes 21 trail segments by shifting positions. Subsequent frames rotate UV values. Grows size in first 10 frames (+15 random), shrinks after frame 20. Trail height accumulates over time.
0x00BBD230345CEffectParticle__update_ribbon_trail_with_flagsRibbon trail variant with position+flag shifting. Similar to update_ribbon_trail but shifts both UV values and flag bytes simultaneously. Uses different height accumulation rate. Grows size randomly (+5-7) in first 26 frames, shrinks after. Trail segments shift including associated flag data.
0x00BBD390238CEffectParticle__update_animated_grow_fadeAnimated grow/fade particle. Camera angle tracking. Advances animation frame every 4 ticks. Size grows (+10/frame) for first 30 frames, then shrinks (-3/frame) after frame 80. Size clamped to 0-255.
0x00BBD480219CEffectParticle__update_uv_scroll_grow_fadeUV scroll with grow/fade particle. Camera angle tracking. UV coordinate (0x41C) scrolls by 2.0/frame, wraps at DAT_010df50c. Size grows (+4/frame) for first 21 frames, then shrinks (-1/frame) after frame 100.
0x00BBD560378CEffectParticle__update_wave_ring_growthWave ring growth particle with 4 channels. Each channel applies sin-modulated radius growth scaled by time-based factor. Angle wraps at 360. Grows size (+5/frame first 20 frames), shrinks after 111 frames. Uses sin lookup table for per-slot radius with growth/decay tracking per slot.
0x00BBD830629CEffectParticle__update_ring_growth_with_decayRing growth with multiplicative decay. 4 channels, each with 10 radius slots growing toward targets (70-250 range). Grows in first 20 frames, then decays by subtraction. After frame 100, outer slots decay additionally. Scale factor multiplied by decay rate each frame. Conditionally follows parent position (type 0x454==1).
0x00BBDAB0382CEffectParticle__update_wave_petal_shrinkWave petal pattern with shrinking radius. 4 channels with sin-wave modulated petal positions. Radius decreases by 1/frame, floored at 10. Size grows when radius below threshold. Type 0x16 channels grow slower (+5) vs default (+10). Uses sin table for position with angle-offset per slot. Pattern similar to update_wave_pattern but with decay.
0x00BBDC30465CEffectParticle__update_spiral_wave_patternSpiral wave pattern with speed variation. 4 channels with sin-wave modulated radial positions. Angle rotates 3 or 5 deg/frame based on acceleration parameter. Size decreases over time per channel type (2-8 rates). Petal count varies by type. Uses sin lookup table for per-slot modulation with accumulated phase.
0x00BBDF50322CEffectParticle__update_wave_petal_decayWave petal pattern with decay and respawn. 4 channels with sin-wave petal positions. Radius decreases by 1/frame, floored at 10. When size reaches 0, respawns at initial position with 74-frame timer. Size grows +20 when radius below threshold. Uses sin table for modulated petal positions.
0x00BBE0A0319CEffectParticle__update_rotating_wave_petalRotating wave petal with angle increment. 4 channels, each with angle rotating +1/frame and secondary angle +3/frame. Computes sin-based offset for height oscillation. Sin-wave modulated petal positions using lookup table. Follows parent position directly.
0x00BBE1E0356CEffectParticle__update_wave_petal_respawnWave petal with threshold-based respawn. 4 channels. Size grows +10 when accumulator below threshold, shrinks -2 above it. On reaching 0 size, resets accumulator and timer to 74 frames. Sin-wave modulated petal positions with per-channel phase offset.
0x00BBE350760CEffectParticle__update_orbital_spiralOrbital spiral particle with multi-phase behavior. Phase 1 (<251 frames): radius grows. Phase 2 (>2599 frames): radius decays with speed reduction, type-dependent decay rate. Orbit position computed via sin/cos with growing/shrinking radius. Height oscillation via sin table. Camera-relative angle determines sprite direction (0 or 6). Type 2 uses double-angle for Z position.
0x00BBE650317CEffectParticle__update_ring_growth_descendRing growth with descending height. 4 channels with per-slot radius growing toward target. Angle rotates +4/frame. Size grows (+8/frame first 31 frames, capped at 160). Height field decreases by constant each frame. Uses growth/completion flags per slot. Similar to other growth patterns but adds height decay.
0x00BBEAF0646CEffectParticle__update_multi_orbit_respawnMulti-orbit particle with respawn on threshold. 4 channels, each with 4 orbit sub-slots. Radius grows by constant, orbits grow. When radius hits threshold, orbit size decays. On reaching 0, respawns at random angle with random speed. Height offsets assigned per sub-slot index (0/4/8/12). Reads parent matrix rotation for height reference.
0x00BBED80260CEffectParticle__update_camera_facing_growCamera-facing particle with size growth. 4 channels. Computes camera-relative angle from parent matrix. Stores sin/cos direction values scaled by offset. Size grows (+5/frame) during first 51 frames, capped at 120.
0x00BBEE90776CEffectParticle__update_multi_type_waveMulti-type wave particle with 4 channels and per-slot processing. Type 0/0x21: wave-modulated with time decay. Type 1/3: simple decay. Type 2: fast 4x-speed decay. Angle rotation varies by type (2-8/frame). Size grows (+2 to +5/frame) in first 16 frames, shrinks when past lifetime. Camera angle tracked for type 0x21. 20+ slots per channel.
0x00BBF230253CEffectParticle__update_position_trailPosition trail particle. 4 channels. Each frame shifts trail history (position values + flag bytes) by one slot. New trail head written from current parent position. Size shrinks (-5/frame after 35 frames). Height field accumulates upward. Similar to ribbon trail but simpler - positions shift each frame rather than UV.
0x00BBF330181CEffectParticle__update_trail_shiftTrail shift particle. 4 channels. Similar to position_trail but with different shift count (20 segments). Shifts both position values and flag bytes. Size shrinks (-5/frame after 35 frames). UV accumulates, triggers frame advance on overflow. No position recording - just shifting existing trail data.
0x00BBF3F0300CEffectParticle__update_grow_shrink_with_uv4-channel grow/shrink with UV scroll and height accumulation. Size grows (+15 or +25 per frame for first 10 frames), shrinks (-7 after frame 25). Type 2 has extra angle rotation (+3/frame). UV scrolls at type-dependent speed. Height field accumulates.
0x00BBF520542CEffectParticle__update_oscillation_with_descentOscillation particle descending over time. 3 oscillation pairs for XYZ. Height (0x488) decreases by radius each frame. Radius (0x324) decays by 2.0/frame. Position computed from sin-table scaled motion. Camera-relative rotation support (flag 0x20). Calls advance_animation_frame.
0x00BBF870379CEffectParticle__update_blink_with_sin_positionBlink particle with sin-table position. Camera angle tracking. Size blinks: grows +4/frame until 255 then resets to 0 (phase toggle at 0x420). Position computed from 3 sin channels with XYZ offsets and a circular orbit component. Height offset from stored value.
0x00BBFAA0443CEffectParticle__update_entity_link_particleEntity-linked particle. Reads target entity position from field 0x3FC (entity ID) via CBGMManager lookup or direct pointer. Stores target XYZ at 0x490-0x498 with height offset. Size behavior varies by type: type 1 grow then shrink, type 2 slow grow with sin-wave radius, type 3 alternating size. Deactivates channel if entity not found.
0x00BBFC60188CEffectParticle__update_4channel_burst_fade4-channel burst/fade particle. Size grows +10/frame (type 0) or +5/frame (type 1) during first 8 frames, capped at 80 or 40. After frame 8, rapid shrink (-30/frame). Channel deactivated when size hits 0. Follows parent position.
0x00BBFDD01015CEffectParticle__update_quad_wing_patternQuad wing/butterfly pattern particle. 4 channels, each with 3 oscillation pairs. Computes 4 wing tips using sin/cos lookup tables at different angles. Wing sizes decay. Negative wing offset triggers secondary position offset from additional sin lookup (scale DAT_010dc4f4). Camera angle tracking.
0x00BC01D0285CEffectParticle__update_delayed_ring_decayDelayed ring decay particle. 4 channels. Angle rotates +1/frame. After 250 frames, size shrinks. After 799 frames, radius decays. Per-slot values computed from sin lookup table scaled by radius, with delay ramp (0-200: zero, 200-291: growing, 291+: full). Type 1 has early size shrink.
0x00BC02F0578CEffectParticle__update_3axis_spiral_trail3-axis spiral trail particle. 4 channels, each with 3 spiral sub-trails at different angle pairs. Position accumulates via sin/cos of trail angles scaled by speed. After frame 25, speed decays and 3 color/size values decrease. Uses both sin and cos tables for XYZ motion on each of 3 axes.
0x00BC06B0312CEffectParticle__update_rising_spiralRising spiral particle. 4 channels. Position accumulates via sin/cos with upward motion using double-angle for height. Size grows (+2/frame first 26 frames), shrinks (-1 after 70 frames). Uses camera angle. Accumulation runs for first 91 frames only.
0x00BC07F0501CEffectParticle__update_oscillation_with_driftOscillation with position drift. 4 channels. 3 oscillation pairs controlling XY radius. Size grows +5/frame first 29 frames, shrinks -2 after. When drift height goes negative, XZ drift accumulates from sin-scaled values. Drift height decreases by speed each frame.
0x00BC09F0232CEffectParticle__update_spray_particlesUpdates spray-type particle emitter state. Calculates camera-relative angles from the 3D scene camera (offsets 0x2C/0x30). Copies position from parent (offset 0x140). Iterates 4 particle slots (stride 0xB4 bytes starting at 0x3EA): if active, increments tick counter, decrements decay angle, adjusts particle size based on tick count and activation state (field 0x38). Size increases by 10 (or 5) in early ticks, shrinks by 10 after tick 65.
0x00BC1910391CEffectParticle__update_radial_wave_particlesUpdates radial wave particles that expand outward with variable height. Iterates 4 particle slots (stride 0xB4). Each active particle: rotates by (index+3) degrees/tick. Size grows by 5 (max 180) during first 40 ticks, shrinks by 5 in last 40 ticks before duration end. Applies distance-based size reduction if camera distance > threshold. Updates height offsets for multiple radial segments (45-degree intervals using cos lookup table), with bounce detection that reverses direction when height reaches max radius.
0x00BC1AA0162CEffectParticle__update_directed_projectileUpdates directed projectile particles. Iterates 4 particle slots (stride 0xB4 at offset 0x3F4). For active particles: increments tick counter. On first tick, computes direction angle from source position (0x10,0x18) to target (0x388,0x390) using compute_angle_from_2d_vector. Then advances position using speed (field 3) * sin/cos lookup tables (DAT_01388af0/DAT_01387fa8) accumulated into fields 0x1E/0x20.
0x00BC22F0450CEffectParticle__update_trailing_projectileUpdates a trailing projectile particle with rotation and trail history. Active only when field 0x3E8==1. On first tick, computes direction angle to target. Size grows by 6 (max 60) during first 10 ticks with speed multiplied by DAT_01196714 (acceleration). After tick 10, size decreases by 3, speed multiplied by DAT_0119920c (deceleration). Deactivates when size < 0. Position advances via sin/cos lookup. Every 3 ticks, shifts trail positions backward through 4 history slots (stride 0xB4) with size decay factor DAT_0111a148. Rotation angle increments by 30 degrees per tick (wrapping at 360).
0x00BC24C0449CEffectParticle__update_large_trailing_projectileUpdates a large trailing projectile particle. Same structure as update_trailing_projectile but with larger size parameters: grows by 25 (max 250) during first 10 ticks, shrinks by 5 after. Same acceleration/deceleration factors, same trail history shift every 3 ticks, same rotation increment of 30 degrees. Deactivates when size < 0.
0x00BC3410394CEffectParticle__update_scattered_projectileUpdates scattered projectile particles with random angle spread. Iterates 4 particle slots (stride 0xB4). On first tick: computes base direction angle to target, then adds random spread (field 0x67==1: +/-5 degrees, else +/-15 degrees). Size grows by 10 during first 10 ticks with acceleration (DAT_01196714), then shrinks by 5 with deceleration (DAT_0119920c). Deactivates when size < 0. Position advances via sin/cos of the spread-adjusted angle.
0x00BC35A0376CEffectParticle__update_spiral_orbit_particlesUpdates spiral orbiting particles. Gets camera angles for orientation. Copies position from parent (offset 0x140). Iterates 4 particle slots (stride 0xB4): radius grows by DAT_01114244 during first 10 ticks, then shrinks by DAT_010df490 after tick 170 (clamped to 0). Orbit angle increases with acceleration (tick/divisor), capped at 359. Computes 3D orbit position: Y-height from angle/factor-constant, X from cos(angle)*radius with sign flip, Z zeroed. Creates a widening spiral orbit around the parent entity.
0x00BC4380135CEffectParticle__update_expanding_particlesUpdates expanding particle effect. Iterates 4 particle slots (stride 0xB4 at 0x3EA). For each active particle: increments tick, accumulates position offset (field 0x3F += field 0x9). During ticks 10-19: increases size by 15 normally, or 8 if game option 0xE5 is set and particle type is 0x18. After tick 19: decreases size by 5, clamping to 0.
0x00BC45F0317CEffectParticle__update_pulsing_ring_particlesUpdates pulsing ring particles. Iterates 4 particle slots (stride 0xB4). Each active particle: rotates by (5-index) degrees/tick. Height oscillates using cosine lookup (tick*2 mapped to 360 degrees). Size decreases when past 67 ticks or marked as fading (field 0x16). For segments < 180 degrees, offset is based on tick+segment index; for segments >= 180, offset uses tick*3. Each segment's radial displacement is computed from base height * cos(segment_angle) * DAT_011190e0 * cos(phase).
0x00BC5440314CEffectParticle__update_multi_type_ringUpdates multi-type ring particles with 3 behavior modes. Iterates 4 particle slots (stride 0xB4). Rotation +5 degrees/tick. Radius grows by 3 per tick. Mode 2: max radius 180, size fades after tick 50, height rises after tick 12 by DAT_010df4ec. Mode 1: max radius 120, size fades after tick 20 with faster decay (-2), height rises after tick 20. Mode 3: does not fade until tick 1400. Size growth during first 12 ticks: +1 for mode 2, +10 (max 250) for others. After tick 1400, all non-mode-3 particles lose size at -3/tick.
0x00BCE350113CEffectParticle__render_dispatchMain render dispatch for particle effects. Checks render conditions (ret_one_00e3d090 and should_render_ground_effect), then dispatches to type-specific renderers based on the effect type at offset 0x1D0. Handles ~170 effect types via a massive switch: types 0-1 and 2 use simple quad renderers, types 3/0x13 compute oriented quads from camera angles, type 0x14 projects to screen space, type 0x16 renders scaled 2D billboards, type 0x81 renders tendril tube segments, type 0xAC renders rotated ground quads. Most types delegate to dedicated CWeather/CEffect render functions. Submits geometry via CRenderPipeline__submit_renderable_object.
0x00BE75D044CEffect__check_trigger_special_effectChecks if an effect object should trigger a special sub-effect. Requires parent entity at offset 0x140, that entity's field at 0x138 to be non-null, and effect type (offset 0x1D0) == 5. If all conditions met, calls FUN_00cabde0.
0x00BE760017CEffect__should_render_ground_effectDetermines if a ground-level effect should be rendered. Checks game option 8 (ground effects) or a per-entity override flag. For map type 0xE8, validates map BGM data. Returns 1 if effect should render, 0 if not. Uses GameSettings__get_option_state and CBGMManager__find_map_by_id.
0x00BE7620185CEffect__update_rotation_and_fadeUpdates an effect's rotation angle (increments by 3 per tick, wraps at 360) and manages fade-out. Copies position from parent entity. When frame counter exceeds lifetime-25, decreases opacity by 8 per tick. Operates on two parallel emitter slots at offsets 0x3EA and 0x49E.
0x00BE76E0315CEffect__update_particle_trail_type1Updates particle trail effect type 1. Copies position from parent entity (offset 0x140). For each active emitter slot (up to 4, stride 0x5A shorts), increments frame counter, rotates by +3 degrees/tick (wraps at 360), ramps up opacity (max 100) in first 30 frames, then fades out. Applies sinusoidal offset to particle positions using precomputed sin table.
0x00BE7820330CEffect__update_particle_trail_type2Updates particle trail effect type 2. Similar structure to type 1 but with gravity-like vertical acceleration. Each emitter slot has a height field that accumulates acceleration (increases until negative, then resets with new parameters). Manages per-slot opacity with fade-in and automatic respawn when opacity drops to 0.
0x00BE7970348CEffect__update_particle_trail_type3Updates particle trail effect type 3. Similar to type 1 but with +1 degree/tick rotation (vs +3) and opacity ramp up by 5 per frame (max 150, or 80 if game option 0xE5 is enabled). Uses GameSettings__get_option_state to check reduced particle option. Fades out after lifetime-46 frames.
0x00BE7AD0354CEffect__update_particle_trail_type4Updates particle trail effect type 4. Combines gravity/bounce behavior (type 2) with sinusoidal particle offset. Emitter slots have height with acceleration, opacity fading, and automatic respawn with new initial conditions when opacity drops to 0 and within lifetime-30 frames.
0x00BE7C401961CEffect__update_main_particle_stateMain per-frame update for a particle effect. Applies sinusoidal offsets from 4 emitter slots, copies position from parent entity, interpolates velocity/position using transformation matrix. Handles random jitter (flag 0x2), random rotation (flag 0x4), random oscillation (flag 0x8), distance culling (flag 0x100), and ground attachment (flag 0x20). Returns 1 if particle is visible, 0 if culled.
0x00BE83F0650CEffect__update_multi_ring_effectUpdates a multi-ring particle effect with camera-relative rotation. Reads camera angles from field4 to set rotation indices. Manages 4 emitter slots (stride 0x2D floats) with 10 scale bands per slot. First 20 frames: ramp up scale (70-250 range). After: fade out. Special handling for types 6/7 after 90 frames with accelerated fade on last band.
0x00BE8680235CEffect__update_rotating_ring_effectUpdates a rotating ring effect with 4 emitter slots. Copies position from parent entity. For each active slot: increments frame counter, rotates ring orientation (by 6 or 3 degrees when frame counter is 0), and advances scale parameter every 4th frame. Wraps scale at the max frame count from offset 0x204.
0x00BE877086CEffect__update_simple_frame_countersSimple frame counter update for a 4-slot effect. Copies position from parent entity, then for each active emitter slot (at offsets 0x3E8, 0x49C, 0x550, 0x604), increments the frame counter by 1. No additional logic, used for effects that only need timing.
0x00BE87D0296CEffect__update_vertical_orbit_effectUpdates a vertically orbiting effect with camera angle tracking. Sets rotation from camera angles. For the first emitter slot: increments frame, advances a float parameter (wraps at a threshold), rotates angle by +1 deg/tick. Positions the effect offset from parent Y position using sin table for vertical bobbing.
0x00BE8900985CEffect__update_aura_swirl_effectUpdates an aura/swirl effect with camera angle tracking. Manages 3 sinusoidal oscillation pairs that converge toward random targets. Controls animation frame based on type field (offset 0x450) for frame skipping. Computes 3D position offsets using sin/cos lookup tables with scaling. Has two rendering modes: scaled (type != 0) and unscaled.
0x00BE8CE0990CEffect__update_aura_pulse_effectUpdates an aura pulse effect with camera tracking. Similar to aura_swirl but with opacity ramp (increases by 1 per frame up to 200 frames). Manages 4 sub-emitter slots with per-slot rotation, scale decay, and automatic respawn when scale drops below threshold. Uses sin/cos tables for oscillating position offsets.
0x00BE90C0166CEffect__update_flash_fade_emittersUpdates 4 emitter slots with camera angle tracking. Each active slot: increments frame counter, ramps opacity by 13/frame (max 255) for first 16 frames, then fades by 3/frame after frame 20. Deactivates slot when opacity reaches 0. Used for flash/burst effects that quickly appear and fade.
0x00BE9170313CEffect__update_animation_frame_countersUpdates animation frame and frame counters for 4 emitter slots. For each active slot: increments frame counter, advances animation frame by a constant, and wraps animation frame at max_frames (offset 0x204). Position is copied from parent entity.
0x00BE92B0480CEffect__update_animation_with_reverseUpdates animation frames for 4 emitter slots with forward playback and reverse secondary animation. For each active slot: increments frame counter, advances animation frame (wraps at max), and decrements a secondary parameter that wraps back by adding a slot-specific value when going below 0. Position copied from parent entity.
0x00BE9490202CEffect__update_dual_decay_emittersUpdates 4 emitter slots with opacity ramp-up and dual parameter decay. Each active slot: increments opacity by 2 (max 255), advances animation frame (wraps at max), and decrements two separate float parameters that wrap around using per-slot base values. Position copied from parent entity.
0x00BE956085CEffect__update_simple_frame_counters_00be9560Simple frame counter update for 4-slot effect (duplicate variant). Copies position from parent, increments frame counter for each active slot. Identical logic to CEffect__update_simple_frame_counters at 00be8770.
0x00BE95C0200CEffect__update_sprite_anim_with_fadeUpdates 4 emitter slots with camera angle tracking and sprite animation. Advances animation frame every 3 ticks. When animation reaches max_frames, wraps back and decreases opacity by 15. Clamps opacity to [0, 255]. Stride between slots is 0xB4 bytes.
0x00BE9690311CEffect__update_ground_aura_effectUpdates a ground-level aura effect with camera tracking. For the first active slot: increments frame counter, ramps opacity (by 8 if type=0x1F, by 3 up to max 60 otherwise) in first 30 frames. Clamps opacity to [0, 255]. Advances a float parameter with wrapping. Copies position from parent and sets 3D offset from stored height value.
0x00BE97D0461CEffect__update_bouncing_scale_effectUpdates a bouncing/scaling particle trail effect. Changes a scale parameter at frame intervals 0, 25, 50, 75 (mod 100). Manages 4 emitter slots with gravity bounce (height acceleration, respawn at opacity 0). Special handling for type 0x16 with reduced opacity ramp. Uses sinusoidal position offsets like other trail effects.
0x00BE99A0248CEffect__update_spinning_fade_emittersUpdates 4 emitter slots with camera tracking and spinning motion. Each active slot: decreases rotation angle by 10 degrees/frame (wraps), randomizes angle on first frame, ramps up opacity by 10/frame for first 10 frames, then fades by 1/frame after frame 100. Deactivates slot when opacity reaches 0.
0x00BE9AA0562CEffect__update_expanding_ring_effectUpdates an expanding ring/wave effect with 4 emitter slots. Generates 21 segments per ring with distance-based scaling (larger at edges, smaller at center). Opacity ramps up by 25/frame (max 250 or 125 with reduced effects option 0xE5). Fades by 10/frame after that, respawning with reduced scale when reaching 0. Uses cos table for radial accumulation offset.
0x00BE9CE0434CEffect__update_spiral_ribbon_effectUpdates a spiral ribbon effect with 4 emitter slots. Copies position from parent with vertical offset. Rotates CW or CCW based on direction flag (+2 or -2 degrees). Fades opacity by 6/frame after frame 60. On first frame of each slot, shifts position history array for trail rendering. Has up to 21 trail segments per slot.
0x00BE9EA0598CEffect__update_homing_projectile_effectUpdates a homing projectile effect with 4 emitter slots. Each slot tracks toward a target using distance check (via sqrtf). Has 3 phases: phase 0 (approaching, switches to phase 1 when close), phase 1 (orbiting with +9 deg/tick, transitions to phase 2 after 10 orbits), phase 2 (retreating with -3 deg/tick, fading after frame 300). Position offset computed from sin/cos tables with scaling.
0x00BEA100275CEffect__update_radial_burst_effectUpdates a radial burst effect with camera tracking. 4 emitter slots: ramps opacity by 25/frame for first 10 frames (max 255). Computes radial offset using sin/cos from rotation angle and a scale factor. When a secondary parameter goes negative, wraps it. After ramp-up, fades opacity by 15/frame. Deactivates slot at opacity 0.
0x00BEA220236CEffect__update_delayed_ring_expansionUpdates a delayed ring expansion effect with 4 emitter slots. Each slot: increments rotation and frame counter. After frame 124, starts fading opacity by 15/frame and decreasing scale. Generates 21 segments per ring where segment scale is 0 before frame 100, linearly interpolated between 100-116 using a lookup table, and full scale after frame 116.
0x00BEA310398CEffect__update_anim_with_secondary_accumUpdates animation frames for 4 emitter slots with a secondary accumulator per slot. For each active slot: increments frame counter, advances primary animation frame (wraps at max), and advances a secondary float that accumulates a per-slot rate and wraps at a constant threshold. Position copied from parent entity.
0x00BEA4F01179CEffect__update_wandering_orb_effectUpdates a wandering orb/firefly effect with camera tracking. 4 emitter slots each with 2 oscillation pairs that approach random targets. Manages 10 angle parameters per slot (wrapped at 360). Ramps up segment opacity in first 10 frames, fades after 20. Applies 3D velocity using sin/cos from 3 angle parameters for position accumulation.
0x00BEA9901163CEffect__update_wandering_orb_slowVariant of wandering orb effect with slower timing. Same structure as update_wandering_orb_effect but ramps up opacity over first 50 frames (vs 10) and fades after frame 60 (vs 20). Target angle randomization uses full 0-360 range instead of restricted range. Same 3D velocity accumulation via sin/cos.
0x00BEAE20497CEffect__update_orbiting_particle_effectUpdates an orbiting particle effect with camera tracking. 4 emitter slots: ramps up scale in first 10 frames, then fades scale after frame 90 (type 0) or frame 270 (non-zero type). Computes orbital position using sin/cos at 6x the frame modulo 60. Position is (distance*sin, -25, distance*cos) plus an accumulated rotation angle. Copies position from parent entity.
0x00BEB02029CEffect__copy_parent_pos_and_advance_animCopies position from parent entity (offset 0x140) then calls CEffectParticle__advance_animation_frame. Minimal wrapper for effects that just need position tracking and animation.
0x00BEB040748CEffect__update_swirling_particle_systemUpdates a swirling particle system with 4 emitter slots. Each slot has 6 angle channels that chase random targets. Ramps scale up for first 30 frames (fast for type 2, slow otherwise), then fades near end of lifetime. Accumulates 3D velocity from 6 sin/cos channels. Calls FUN_00bc5e00, FUN_00be6fe0, and CEffectParticle__advance_animation_frame at the end.
0x00BEB330175CEffect__update_scale_ramp_with_animUpdates 4 emitter slots with scale ramp-up/fade-out and animation. Ramps scale up by 5/frame for first 50 frames (max 150), then fades scale near end of lifetime (lifetime-50). Calls FUN_00bc5e00, FUN_00be6fe0, and CEffectParticle__advance_animation_frame.
0x00BEB3E0225CEffect__update_rotating_sprite_emittersUpdates 4 emitter slots with camera tracking and rotation. Each active slot: increments frame, advances rotation by 5 (wrapping at 100 triggers opacity decrease by 2). Clamps opacity to [0, 255]. Copies parent position to per-slot position fields including a stored height value.
0x00BEB4D01891CEffect__update_multi_tendril_effectUpdates a complex multi-tendril particle effect with 4 emitter slots. Each slot manages 8 oscillation pairs and 4 tendril arms. Each arm accumulates position using sin/cos offsets with gravity-like descent. When tendrils fall below threshold, they respawn with random offset (narrower for type 1). Arms are rotated by camera angle for screen alignment. Extensive use of random values for organic movement.
0x00BEBC4061CEffect__increment_active_slot_countersIncrements frame counters for all active emitter slots (up to 4). Checks if slot is active (> 0 at slot flag offset) rather than == 1. No position copy, no other logic, just counter increments.
0x00BEBC801232CEffect__render_ring_segmentsRenders ring-shaped effect by generating up to 21 segments per emitter slot (4 slots). Computes vertex positions on a ring using sin/cos tables with variable segment width. Renders each pair of adjacent segments via FUN_00be4c60. Ring scale and color vary by type (types 3-11 have different sizes and opacity multipliers). Checks reduced effects option for types 9 and 11.
0x00BEC150634CEffect__render_ring_segments_simpleRenders ring segments for a simpler ring effect. Similar structure to CEffect__render_ring_segments but with fixed vertical offset (5.0) and uniform segment rendering. Generates up to 21 segments per emitter slot with sin/cos position computation and calls FUN_00be4c60 for each adjacent pair.
0x00BEC3D0634CEffect__render_ring_segments_simple_00bec3d0Duplicate of CEffect__render_ring_segments_simple. Identical ring segment rendering with up to 21 segments per slot, sin/cos vertex computation, and FUN_00be4c60 quad rendering. Likely used for a different effect type that shares the same rendering code.
0x00BEC650771CEffect__render_ring_with_height_offsetRenders ring segments with a per-type height offset. 4 emitter slots, 21 segments each. Height offset varies by type field: -2.0 for type 1, -1.0 for type 2, 0 otherwise. Some types also add a horizontal offset to vertex positions. Calls FUN_00be4c60 for quad rendering between adjacent segments.
0x00BEC9601360CEffect__render_skill_sprite_billboardsRenders skill effect sprite billboards. For each emitter slot and sub-particle, projects world position to screen coordinates using CRenderPipeline__project_world_to_screen_2d. Retrieves sprite frames from skill tree data via UISkillWnd__get_skill_tree_node and UISkillWnd__get_detail_entry. Handles sprite flipping, per-type color tinting (type 0: custom color, type 1: blue), depth sorting, and edge expansion. Calls FUN_00cb39a0 for actual sprite rendering.
0x00BECEB0655CEffect__render_diamond_quadRenders a diamond-shaped quad effect for 4 emitter slots. Computes 4 vertex positions at 90-degree intervals around the rotation angle, with radius modulated by sin of a secondary angle. Copies Y position to all vertices. Calls FUN_00be4210 for rendering with full white color and additive blending flag based on scale parameter.
0x00BED140837CEffect__render_pulsing_diamond_quadRenders a pulsing diamond quad with oscillating opacity for 4 emitter slots. Similar to render_diamond_quad but computes per-frame opacity as a triangular wave (frame mod 256, mirrored). Renders twice per slot: once with forward opacity and once with inverse opacity, creating a pulsing/breathing visual effect.
0x00BEE9001660CEffect__render_dual_rotating_quadsRenders two rotating quads for the first emitter slot. First quad uses base scale, second quad uses modulated scale with sinusoidal variation. Both quads are computed as 4 vertices at 90-degree intervals, rotated by camera angles via rotate_quad_vertices_by_angles, then offset to effect position. Color varies by type: white (10), cyan (11), red (12), green (13), or default.
0x00BEEF801847CEffect__render_star_with_trailsRenders a star shape with trailing quads. First renders two layered quads (orange-tinted and blue-tinted) using fixed sin/cos lookup indices, rotated by camera angles. Then renders 4 trailing quad segments at different rotation offsets with per-segment color coding (R values: 105, 35, 75, 5 by index). Each trail segment uses computed sin/cos positions with vertical offset from scale parameter.
0x00BEF6C01722CEffect__render_cross_shape_effectRenders a cross/plus shape for 4 emitter slots. Each slot generates 2 perpendicular line segments forming a cross. Vertex positions computed from sin/cos tables with angle offsets. Renders 4 quads total per slot (2 for highlight pass at 1/4 opacity, 2 for main pass at full opacity) via FUN_00be4210. Color varies by type: blue-purple (1), white (2), or red (default). Uses -6.0 as constant Y offset.
0x00BEFD80654CEffect__render_kite_shaped_quadRenders a kite-shaped quad for 4 emitter slots. Computes 4 vertices at different angle offsets (-90, -7/+7, +7/-7, +90 degrees based on direction) from the base rotation angle. Inner vertices use a larger radius, outer vertices use a smaller radius. Color is blue-purple (0x69, 0x69, 0xFF). Calls FUN_00be4210.
0x00BF0010855CEffect__render_radial_beam_slicesRenders up to 6 radial beam slices per emitter slot (4 slots). Each slice is a quad at a radial position with vertices computed from base rotation and angular offsets. Slice positions accumulate along the slot's scale parameter. Color is blue-purple (0x69, 0x69, 0xFF). Calls FUN_00be4210 for each slice quad.
0x00BF03703744CEffect__render_segmented_tendril_beamsRenders segmented tendril beams for 4 emitter slots. Two passes per slot (7 segments each). Each segment advances along a curved path with progressive angle offsets at distance thresholds. Vertices are computed from sin/cos with the accumulated angle. First pass uses color (0x41, 0x41, 0xFF), second pass uses (0x23, 0x23, 0xFF). Calls FUN_00be4210 per segment.
0x00BF1210484CEffect__render_flat_blade_quadRenders a flat blade-shaped quad for 4 emitter slots. Two vertices at angle +/-5 degrees from rotation, two vertices at the center. Creates a thin blade/wedge shape. Color is pure blue (0, 0, 0xFF). Calls FUN_00be4210 with additive blending flag.
0x00BF14001632CEffect__render_variable_shape_quadRenders variable-shaped quads for 4 emitter slots. Shape changes based on a type field (0=square 90deg, 1=60deg, 2=130deg apart). Renders two passes: base shape and modulated shape with sinusoidal scaling. Per-type coloring: white (types 0/3), green (0x13), blue+highlight (0x14), bright green (0x15). Rotates vertices by camera angles.
0x00BF1F001176CEffect__render_tornado_helixRenders a tornado/helix effect for 4 emitter slots. Generates a rotating quad at the base, then renders 36 stacked helix segments (rotating by 45 degrees each with 2-unit vertical offset). Uses sinusoidal scale modulation. Color is blue-tinted (0x37, 0x37, 0xFF). Also calls FUN_00bf23a0 for an additional layer with darker color (0x19, 0x19, 0xFF).
0x00BF23A01060CEffect__render_helix_layerRenders a single helix layer for a given emitter slot index. Similar to the tornado helix main renderer but with parameterized scale multiplier (param_4) and color (params 7-9). Generates 36 stacked segments rotating by 45 degrees each with 2-unit vertical offset. Used as a helper by CEffect__render_tornado_helix for secondary color layers.
0x00BF27D0744CEffect__render_ring_with_position_offsetRenders ring segments with additional position offsets from stored vectors. 4 emitter slots, up to 21 segments each. Subtracts stored position offsets (0x478, 0x480) from vertex positions. Scale value stored at slot offset 0x53 is written to the effect's rendering state field (0x318). Calls FUN_00be4c60 for adjacent segment pairs.
0x00BF2AC02574CEffect__render_tendril_tube_segmentsRenders complex tendril tube segments for 4 emitter slots. Uses random jitter arrays (7 entries each for X/Y/Z). For each pair of adjacent particles, computes tube cross-section vertices and angle from 2D vector between positions. Renders tube quads via FUN_00be4210 with per-type coloring. Stores endpoint positions in arrays for connecting tubes across emitter slots. Has stack cookie protection.
0x00BF34D01789CEffect__render_dual_rotated_quad_pairRenders two rotated quads per emitter slot (4 slots). First quad uses small angle offsets (+/-2 degrees), second uses larger offsets (+/-8, +/-180-188 degrees). Both shapes are oriented by a secondary rotation angle. Per-type color schemes: type 0 = yellow/blue, type 1 = white/cyan, type 2 = blue/purple, type 3 = cyan/red. Calls FUN_00be4210 twice per slot.
0x00BF3BD01339CEffect__render_octagonal_billboardRenders an octagonal billboard (8-vertex polygon approximation) for 4 emitter slots. Computes vertices using fixed sin/cos lookup offsets, rotates by camera angles, then offsets to effect position. Renders two passes: main shape with per-type color (white/gray/dark gray), and a scaled+offset version with near-black color for shadow/outline effect.
0x00BF41101304CEffect__render_ring_with_inner_ringRenders a ring with an inner ring for 4 emitter slots. Two passes: outer ring (5 segments via FUN_00be4210 with 1/5 opacity for glow) and inner ring (5 segments via FUN_00be4c60 with scaled-down radius). Both rings use same rotation angle with different angular offsets. Color is near-black for outer glow, standard for inner ring.
0x00BF46302595CEffect__render_wing_feather_quadsRenders wing feather-shaped quads for 4 emitter slots. Each slot renders 5 quads: main shape, then 4 progressively offset feather segments at -20 degree angle intervals. Uses a shearing transform with scale parameters for perspective. Has stack cookie protection. Per-type color and variable UV coordinates. Calls FUN_00be4210 for each quad.
0x00BF50602177CEffect__render_double_octagonal_billboardRenders two octagonal billboards per emitter slot (4 slots). First uses the slot's primary position, second uses secondary position offsets. Both shapes use 8-vertex polygon approximation rotated by camera angles. Per-type coloring with highlight pass: type 1 = highlight+red, type 2/3 = special vertex ordering, default = highlight+green. Calls FUN_00be4210 twice per position.
0x00BF58F0962CEffect__check_ground_collision_spawn_effectChecks if an effect's billboard has reached ground level (Y <= 0) and spawns a ground impact effect. Computes 8-vertex billboard rotated by camera, positions at effect location. If vertex Y drops to 0, before frame 300, and has secondary opacity > 0, spawns effect ID 0x352 (type 0) or 0x3A4 (type 1). Also checks map BGM data to conditionally trigger the impact.
0x00BF5D801008CEffect__render_ground_sprite_billboardRenders a ground-attached sprite billboard. Copies position from parent entity, gets interpolated ground height via C3dAttr__GetInterpolatedHeight, projects to screen. Retrieves skill sprite data from skill tree node. Renders sprite with ARGB color where alpha is based on field 0x324. For map type 0x4D8, triggers a special sub-effect. Calls FUN_00cb39a0 for sprite rendering.
0x00BF61702393CEffect__render_multi_layer_sprite_effectRenders a multi-layer sprite effect with 4 emitter slots. For each slot and sub-particle, projects to screen and renders up to 6 sprite layers: base sprite, expanded edge overlay (green or red per type 2), two offset layers from stored position deltas, and their expanded edge overlays. Uses UISkillWnd for sprite data. Extensive depth sorting with perspective correction.
0x00BF6AD01280CEffect__render_colored_sprite_with_glowRenders sprites with color tinting and glow for 4 emitter slots. Projects world to screen, retrieves skill sprite frames. Applies RGB color via CEffectParticle__get_rgb_color_values with alpha from field 0x324. Renders two passes: main sprite (mode 5 or 0x101 based on slot flag) and expanded glow overlay (mode 5). Uses perspective depth correction for Z-ordering.
0x00BF6FD0924CEffect__render_arrow_shaped_quadRenders an arrow-shaped quad for 4 emitter slots. Computes a tapered shape: front edge is full radius, back edge is reduced by a fraction based on a secondary rotation parameter. Four vertices placed at 90-degree intervals but with asymmetric offsets for the arrowhead shape. Rotates by camera angles. Color is blue-purple (100, 100, 0xFF). Calls FUN_00be4210.
0x00BF73701513CEffect__render_animated_quad_layersRenders 4 animated quad layers per emitter slot (4 slots). Each layer has different size and animation frame offset. Layer 1: standard quad. Layer 2: quad at same size but different plane. Layer 3: mirror with different height. Layer 4: smaller quad with different proportions. All use sin/cos from slot rotation angle with various scale multipliers. Animation frame cycles through 30-frame loops with offsets per layer.
0x00BF79602308CEffect__render_multi_position_octagonRenders octagonal billboards at 4 different positions per emitter slot. Computes 8-vertex shape rotated by camera, then renders at primary position, secondary offsets (-8/-7/-6), and tertiary offsets (+1/+2/+3). Only renders when Y <= 0 (below camera). Opacity is distance-based with clamping. Color derived from stored byte fields scaled by a constant factor. Calls FUN_00be4210 for each position.
0x00BF84B0577CSkillEffectManager__ctorConstructor for CSkillEffectManager. Initializes base class via FUN_00ca8730, sets vtable to PTR_FUN_011992f8, initializes 20 effect slot arrays (0x14 entries of 0x50 dwords stride), constructs linked list node (0xC bytes), and sets up a large data region (0xD800 bytes at offset 0x107D) plus various state fields. Clears effect IDs to -1 and resets flags.
0x00BF8AC0323CSkillEffectManager__dtorDestructor for CSkillEffectManager. Sets vtable, iterates linked list calling virtual method at offset 0x38 on each node's data, disconnects and frees all list nodes, calls virtual method 0x8 on field 0x4E if present, releases resource reference, frees the linked list sentinel, then calls base class destructor FUN_00ca8f90.
0x00C0AED0363CSkillEffectManager__scalar_deleting_dtorScalar deleting destructor for CSkillEffectManager. Performs same cleanup as CSkillEffectManager__dtor (clear effects, free list nodes, release resources), then if param_2 bit 0 is set, frees the object memory (0x11CA8 bytes).
0x00C0B040146CSkillEffect__update_offertoriumUpdates the Offertorium skill effect. On first frame (field 0x178 == 0), plays sound effect/ab_offertorium.wav with distance attenuation from camera. Advances sprite animation with Y offset -80.0. Returns true if animation is still playing.
0x00C0B0E0146CSkillEffect__update_full_throttleUpdates the Full Throttle skill effect. On first frame, plays effect/all_full_throttle.wav with distance attenuation from camera. Advances sprite animation with Y offset -80.0. Returns true if still playing.
0x00C0B180146CSkillEffect__update_angelusUpdates the Angelus skill effect. On first frame, plays effect/EF_Angelus.wav with distance attenuation from camera. Advances sprite animation with Y offset -80.0. Returns true if still playing.
0x00C0B360697CSkillEffect__update_aspersio_effectUpdates the Aspersio skill effect. On frame 70, plays priest aspersio sound. Every 5 frames between frames 60-140, spawns a sub-particle (type 7) with random angle, scale 1.5, and specific rotation/position offsets. Sets sub-particle lifetime to 30 frames. Returns 0 when effect reaches max lifetime, 1 otherwise while advancing sprite animation.
0x00C0B620146CSkillEffect__update_autocounter_effectUpdates the Auto Counter skill effect. On frame 0, plays the knight autocounter sound effect. Then advances sprite animation each frame, returning true while animation continues.
0x00C0B6C0351CSkillEffect__init_ground_smoke_effectInitializes a ground smoke skill effect. Copies position from the source entity (offset 0x138). On frame 0, creates a sub-particle (type 5) with flags \|= 0x200. Sets particle lifetime to 125, Y offset to -10.0. Clamps scale params (0x13C, 0x140) to minimum 1.0. Randomly selects between two color modes (10% chance of dark vs normal). Initializes sprite animation with random variant (0-4). Copies transform to particle array.
0x00C0B820230CSkillEffect__init_ground_particle_type_eInitializes ground particle effect (type 0xE). On frame 0, creates a sub-particle with lifetime 250, scale 13.5, Y offset -10, angle 2.0, alpha 100. Allocates texture array and loads texture from DAT_01183ac4. Simple single-particle ground effect.
0x00C0B9101106CSkillEffect__init_bash_effectInitializes the Bash skill effect. Checks if reduced effects are enabled. On frame 0: plays EF_Bash.wav, creates a main particle (type 4) with alpha_down.tga texture, flags \|=1, lifetime 40, alpha 100. Then spawns 14-20 sub-particles (type 3) with alpha_center.tga, each with random angles, random radius (10-69), random scale (5-29), and random lifetime offsets. Reduced effect mode uses only 10 sub-particles.
0x00C0BD70146CSkillEffect__init_begin_spell_blue_ringInitializes begin-spell effect with blue ring visual. Copies position from source entity. On frame 0, plays EF_BeginSpell.wav sound and loads ring_blue.tga effect texture with type 2.
0x00C0BE10146CSkillEffect__init_begin_spell_yellow_ring_type1Initializes begin-spell effect with yellow ring (type 1 variant). Copies position from source entity. On frame 0, plays EF_BeginSpell.wav sound and loads ring_yellow.tga effect texture with type 1.
0x00C0BEB0146CSkillEffect__init_begin_spell_green_magicInitializes begin-spell effect with green magic visual. Copies position from source entity. On frame 0, plays EF_BeginSpell.wav sound and loads Magic_Green.tga effect texture with type 0x21.
0x00C0BF50146CSkillEffect__init_begin_spell_yellow_ring_type0Initializes begin-spell effect with yellow ring (type 0 variant). Copies position from source entity. On frame 0, plays EF_BeginSpell.wav sound and loads ring_yellow.tga effect texture with type 0.
0x00C0BFF0164CSkillEffect__init_begin_spell_double_white_ringInitializes begin-spell effect with double white ring visual. Copies position from source entity. On frame 0, plays EF_BeginSpell.wav and spawns two ring_white.tga effects at sizes 0x2D and 0x19.
0x00C0C0A0146CSkillEffect__init_begin_spell_violetInitializes begin-spell effect with violet magic visual. Copies position from source entity. On frame 0, plays EF_BeginSpell.wav sound and loads Magic_Violet.tga effect texture with type 0x21.
0x00C0C140146CSkillEffect__init_begin_spell_yellow_ringInitializes begin-spell effect with yellow ring visual. Copies position from source entity. On frame 0, plays EF_BeginSpell.wav sound and loads ring_yellow.tga effect texture with type 0x21.
0x00C0C1E0164CSkillEffect__init_begin_spell_double_yellow_ringInitializes begin-spell effect with double yellow ring visual. Copies position from source entity. On frame 0, plays EF_BeginSpell.wav sound and spawns two ring_yellow.tga effects at different sizes (0x2D and 0x19) via FUN_00c62b60.
0x00C0C290164CSkillEffect__init_begin_spell_double_yellow_ring_type1Initializes begin-spell effect with double yellow ring (type 1 variant). Copies position from source entity. On frame 0, plays EF_BeginSpell.wav and spawns two ring_yellow.tga effects at sizes 0x2D and 0x19, both with type 1.
0x00C0C340179CSkillEffect__init_begin_spell_earthdriveInitializes begin-spell effect for Earth Drive skill. Copies position from source entity. On frame 0, plays EF_BeginSpell.wav. Uses reduced effects setting to choose between mineffect_new_earthdrive (reduced) or new_earthdrive_ring_brown (full) texture, both type 0x21.
0x00C0C400146CSkillEffect__update_benedictio_effectUpdates the Benedictio skill effect. On frame 0, plays priest_benedictio.wav sound. Then advances the sprite animation each frame, returning true while it continues.
0x00C0C4B0146CSkillEffect__update_blast_mine_effectUpdates the Blast Mine skill effect. On frame 20 (0x14), plays hunter_blastmine.wav sound with distance attenuation. Advances sprite animation each frame, returning true while animation continues.
0x00C0C5501386CSkillEffect__init_blessing_effectInitializes the Blessing skill effect. On frame 0: plays EF_Blessing.wav, creates main column particle (type 0xC) with blue color (0x20,0xB0,0xE8), alpha_down.tga texture. Every 3 frames (frames 0-9), spawns glow particles (type 5) at Y=-25. Every 4 frames, spawns floating sparkle particles (type 5) with random angles and scale.
0x00C0CAC02047CSkillEffect__init_blitz_beat_effectInitializes the Blitz Beat skill effect. Plays blitzbeat_1st.wav on frame 5 and blitzbeat.wav on frame 30. On frame 0: spawns 10 feather particles (type 0x10) with ac_center2.tga texture, random angles, velocity, and size. After frame 35 and every 3 frames: spawns impact particles (type 0xD) with magic_green.tga at random positions around the entity. Tracks spawn count in DAT_016fdae8.
0x00C0D2C0874CSkillEffect__init_radial_fire_particlesInitializes radial fire/explosion particles. On frame 0, spawns param_2 particles (type 8) evenly distributed at 90-degree intervals starting from -90. Each particle has lifetime 60, red color (0xFA,0x64,0x64), Y offset -10, random scale from entity facing angle. Sets initial velocity, growth rate, and color index 7. Used for AoE skills.
0x00C0D6301065CSkillEffect__init_aura_blade_green_particlesInitializes green aura blade particles. On frame 0, creates 2 pairs of particles (type 0xF) positioned on opposite sides of the entity (front and side), facing perpendicular to entity direction. Each particle: lifetime 9999, magic_green.tga texture, radius 2.5, scale 15.0, alpha 180. Uses entity facing angle to compute rotation matrix. Permanent effect until cancelled.
0x00C0DA601167CSkillEffect__init_aura_blade_violet_particlesInitializes violet aura blade particles. Same structure as green aura blade but uses magic_violet.tga texture. Creates 2 pairs of particles (type 0xF) at larger offset (DAT_010df490 vs DAT_010dc4f4), with radius 5.0 (vs 2.5 for green), and alpha starts at 0 with growth to 180. Uses entity facing angle for rotation. Permanent effect (lifetime 9999).
0x00C0DEF0903CSkillEffect__init_expanding_ring_blueInitializes an expanding blue ring effect. Triggers on frame 0 and frame 5. Creates a spinning ring particle (type 0xD) with ring_blue.tga, angle offset based on frame number. On frame 0 also creates a pulsing column particle (type 0xC) with ring_yellow.tga and 20 sub-particles. Alpha decays over time based on frame.
0x00C0E280873CSkillEffect__update_magnum_break_effectUpdates the Magnum Break skill effect. On frames 7 and 20: plays EF_MagnumBreak.wav, creates expanding ring particle (type 0xC) with ring_yellow.tga and scaling pulsation, plus a secondary expanding particle (type 0xE). Lifetime 300 frames max. Advances sprite animation each frame.
0x00C0E6F0146CSkillEffect__update_claymore_trap_effectUpdates the Claymore Trap skill effect. On frame 0, plays hunter_claymoretrap.wav. Advances sprite animation each frame, returning true while animation continues.
0x00C0E790134CSkillEffect__init_cloaking_effectInitializes the Cloaking skill effect. On frame 0, plays assasin_cloaking.wav. Sets opacity to 50 (semi-transparent) with white color. Clears the active flag at offset 0xA4.
0x00C0E820946CSkillEffect__update_cold_bolt_scatterUpdates Cold Bolt scatter particles. On frame 20 (unless reduced effects enabled), spawns 2-5 particles (type 6) scattered around the entity with random angles and positions. Each particle has random lifetime (40-70), random radius (50-100), random vertical velocity, scale 2.0, and color index 2. Advances sprite animation until frame 100.
0x00C0EBE01504CSkillEffect__init_frost_diver_effectInitializes the Frost Diver skill effect. On frame 0, spawns ice shard particles (type 2) distributed in a ring (every ~1/3 of 360deg). Each shard has ice.tga texture, random angle and size. Copies rotation matrix to secondary transform. Also on frame 0 and 7, spawns smoke particles (type 0) with smoke.tga, random angle and vertical spread, lifetime 25.
0x00C0F1C0146CSkillEffect__update_concentration_effectUpdates the Concentration skill effect. On frame 0, plays ac_concentration.wav. Advances sprite animation each frame.
0x00C0F260513CSkillEffect__update_periodic_sparkle_effectUpdates a periodic sparkle effect that triggers every 130 frames. Creates a spinning particle (type 7) with lifetime 300, small scale (0.1-0.2), angle 2.0, radius 15.0, and scale 1.2. Particle positioned via rotation matrix from entity facing. Used for aura/buff visual indicators.
0x00C0F470186CSkillEffect__update_fire_pillar_effectUpdates the Fire Pillar skill effect. On frame 30, plays wizard_fire_pillar_b.wav. On frame 35, triggers a secondary effect (0x7A) via the game manager virtual call. Advances sprite animation each frame.
0x00C0F530146CSkillEffect__update_cure_effectUpdates the Cure skill effect. On frame 0, plays Acolyte_cure.wav. Advances sprite animation each frame.
0x00C0F5D0260CSkillEffect__init_curse_status_iconInitializes the Curse status icon effect. On frame 0, creates a billboard particle (type 0xF) with curse.bmp texture, permanent duration (9999). Scale 4.5, size 4.0, positioned above entity head. Simple status indicator that persists until removed.
0x00C0F6E0249CSkillEffect__init_dark_spark_ground_effectInitializes a dark ground spark effect. On frame 0, creates a ground particle (type 5) with flags \|=0x200. Y offset below entity, scale 0.8, black (G=0, B=0), fade at frame 60, lifetime 65. Uses textures from DAT_0119cd68/0119cd80. Ground-level dark burst.
0x00C0F7E01315CSkillEffect__init_decrease_agility_effectInitializes Decrease Agility skill effect. On frame 0: plays EF_DecAgility.wav, creates a slow.bmp billboard particle (type 0) that descends, with alpha 180 and alpha decay. Every even frame: spawns additional floating particles (type 0x10) with ac_center2.tga at random angles around the entity, small radius, slow descent. Projects entity screen position for UI overlay.
0x00C0FD101133CSkillEffect__init_detecting_fashasha_effectInitializes a detection/ground circle effect with fashasha.tga texture. param_2 selects sound: 0=detecting.wav, 2=benedictio.wav, 4=grand_cross.wav, 5=ANALYZE.wav. Also selects color: 4=red(0xFF,0x8C,0x8C), 5=purple(0xD2,0xFA,0xD2), 6=dark(0x0A,0x0A,0x0A), 7=magenta(0xFA,0xD2,0x8C), 8=blue(0x8C,0xFF,0x8C). Creates expanding circle particle (type 0xF) with scaling and Y offset.
0x00C101801312CSkillEffect__update_detoxify_effectUpdates the Detoxify skill effect. On frame 0, plays EF_Detoxication.wav. Spawns bubbling particles (type 5) every 5 frames (or every 15 frames in reduced effects mode) with random angles at radius 2-7, tilted 90 degrees. Random scale (30-60 or 80-90) and rising velocity. Color index 3.
0x00C106A0394CSkillEffect__init_generic_ground_burstInitializes a generic ground burst particle effect. On frame 0, creates a particle (type 5) positioned at the effect's target location (offset 0x180-0x188). Random tilt angle (75-105 degrees) and horizontal angle (0-360). Scale 0.75, Y offset -9, random radius (3-5). Lifetime from param_1+0x17C. Uses textures from DAT_01196d7c/01196d90.
0x00C1083037CSkillEffect__update_simple_sprite_anim_00c10830Simplest skill effect update: just advances sprite animation each frame. No sound, no particles. Returns true while animation continues.
0x00C108601775CSkillEffect__init_earth_spike_effectInitializes Earth Spike skill effect. param_2 selects variant: 0=stone(earthspike.wav, stone.bmp), 2=ice(EF_IceArrow.wav, ice.tga). Triggers effect 0x7A and sets render params (1.0, 0.24, 0.2). Creates a central pillar particle (type 9) with upward motion (Y=10), plus 7 surrounding spike particles at 60-degree intervals, each with random rotation and rising motion. Uses stone.bmp or ice.tga texture.
0x00C10F50881CSkillEffect__init_ice_wall_effectInitializes Ice Wall skill effect. On frame 0, plays wizard_icewall.wav. Creates 3 stone block particles (type 9, stone.bmp) with flags\|=1, positioned at offsets -2, 0, +2. Each block has random rotation, random size (300-340), random angle (0-360), random tilt (87-93 degrees), alpha 200. Lifetime 9999 (permanent until removed).
0x00C112D0829CSkillEffect__update_enchant_poison_effectUpdates the Enchant Poison skill effect. Plays assasin_enchantpoison.wav on frames 0, 5, 11, 18, 26, 40. Every 3 frames, spawns green bubble particles (type 5) at random angles with random radius (2-7), tilted 90 degrees. Random scale (30-80) and rising velocity. Color index 3.
0x00C116101616CSkillEffect__update_envenom_effectUpdates the Envenom/Poison Attack skill effect. On frame 0 (param_2==0): plays enchantpoison.wav and EF_PoisonAttack.wav. param_2==1: spawns particles every 9 frames (slower rate). Default: spawns particles every 5 frames. All variants create green bubble particles (type 5) at random angles. Effect ID 0x304 uses special render flags (0x201). Color index 3.
0x00C11C601334CSkillEffect__init_endure_effectInitializes the Endure skill effect. On frame 0: plays EF_Endure.wav, creates main aura particle (type 0, endure.tga) with flags\|=2, large size (150x150), Y offset -20, with scaling animation. Then for frames 0-49: spawns scattered particles (type 0, alpha_down.tga) each frame with random angle, random radius (100-140), and rising motion above entity head.
0x00C121A0862CSkillEffect__init_radial_cold_particlesInitializes radial cold/ice particles. On frame 0, spawns 4 particles (type 8) evenly distributed at 90-degree intervals starting from -90. Each has lifetime 60, blue color (0x64,0x64,0xFA), Y offset -10, random scale from entity facing. Sets growth rate and color index 7. Same structure as init_radial_fire_particles but with blue/cold colors.
0x00C125001671CSkillEffect__init_energy_coat_effectInitializes Energy Coat skill effect. On frame 0: creates a rotating ring particle (type 0xC, ring_yellow.tga) with elevation 90deg, radius 22.5, alpha 128. Also creates a glowing sphere particle (type 0xD, alpha_down.tga) with scaling. Spawns scattered sparkle particles (type 0x10, alpha_down.tga) every 5 frames (or 15 in reduced mode) at random angles with rising motion.
0x00C12B90807CSkillEffect__init_double_blue_ring_effectInitializes a double blue ring effect. On frame 0, creates two ring_blue.tga particles (type 0xD). First ring: descending motion (Y offset -10), large size with scaling. Second ring: ascending motion (Y offset +10), expanding with size growth. Both have lifetime 55 and alpha decay. Used for energy/magic barrier effects.
0x00C12EC0518CSkillEffect__update_fire_bolt_trailUpdates a fire bolt trail effect. Computes direction vector from stored origin to entity position and normalizes it. Sets yellow/orange tint (200,200,0). Every 5 frames, allocates a new 0x518-byte particle emitter positioned along the trail path. Advances the origin position along the direction by half the total distance each step. Creates visual fire trail between caster and target.
0x00C130D0988CSkillEffect__update_heal_effectUpdates the Heal skill effect. On frame 0: plays heal_effect.wav, creates expanding ring particle (type 0xD, alpha_down.tga) with lifetime 100, scale 4.5/4.5. Every 9 frames (if not reduced effects): spawns sparkle particles (type 7) at random angles with small scale (3.0), random rotation, and upward positioning via rotation matrix.
0x00C134B02254CSkillEffect__update_fire_arrow_effectUpdates the Fire Arrow skill effect. At frame 12, plays 'effect\\EF_FireArrow_%d.wav' sound and creates a particle effect type 0x10 with 6 texture frames (fire animation). Creates billboard particles with randomized direction angles and velocity. On every 4th frame, creates type 5 ember particles with randomized lifetime, direction, and scale. Also handles a secondary ring effect using 'effect\\ring_yellow.tga' with scaling decay. Copies source entity position each frame.
0x00C13D801930CSkillEffect__update_fireball_projectileUpdates the Fireball projectile skill effect. Plays 'effect\\EF_FireBall.wav' at frame 5. Creates 3 groups of 4 directional particle effects (type 5) at different angular offsets: group 0-3 with blue tint (0x9B,0x9B,0xFF), group 6-9 with green (0x9B,0xFF,0x9B), group 12-15 with red (0xFF,0x9B,0x9B). Each group has particles facing toward a target point using CSprite__set_facing_toward_point, with angle adjustments and speed based on distance. Loads sprite/act resources for the fire effect.
0x00C14510690CSkillEffect__init_fireball_explosionInitializes Fire Ball explosion effect. Triggers on frames 20, 24, 28, 32. Each trigger plays EF_FireBall.wav, creates a ground burst particle (type 5) with flags\|=0x120, Y offset -15, entity-facing rotation. First burst (frame 20) uses default color; subsequent bursts use orange (0xF6,0xC7,0x4C) with smaller alpha. Alpha varies by frame: 24=180, 28=130, 32=80.
0x00C147D01104CSkillEffect__update_fire_pillar_effect_00c147d0Updates the Fire Pillar skill effect. Creates particle type 5 at frame 0 with randomized direction (0-360 degrees), rotation, and scale. Positions particle along the entity's transformation matrix with randomized column offset (+2 to +15). Sets up size keyframe animation with 3 stages (40->120->200 width, 100->0->80 height). Loads sprite/act resources for the pillar effect. Particle has flag 0x84 (billboard + special mode).
0x00C14C20187CSkillEffect__update_random_sound_sprite_animUpdates a skill effect with random sound selection. On frame 0, picks a random sound via get_random_hit_sound_by_element(3) and plays it with distance attenuation. Advances sprite animation each frame.
0x00C14EA0146CSkillEffect__update_fire_pillar_a_effectUpdates Fire Pillar variant A. On frame 75, plays wizard_fire_pillar_a.wav. Advances sprite animation each frame.
0x00C14F40146CSkillEffect__update_fire_pillar_b_effectUpdates Fire Pillar variant B. On frame 0, plays wizard_fire_pillar_b.wav. Advances sprite animation each frame.
0x00C14FE0407CSkillEffect__init_concentric_ring_effectInitializes concentric ring effect with 3 rings. On frame 0, creates 3 ring particles (type 0xD) at different sizes (4,3,2 radius) and descending Y offsets (-3). Each ring has scaling and alpha based on its position. param_2 selects texture: 0=magic_red.tga (fire), 1=ring_white.tga (holy). Alpha decays based on frame.
0x00C153A037CSkillEffect__update_simple_sprite_anim_00c153a0Simplest skill effect update: just advances sprite animation each frame. No sound, no particles. Returns true while animation continues. Duplicate of another simple sprite anim updater.
0x00C153D01458CSkillEffect__update_flasher_trap_effectUpdates the Flasher trap skill effect (Hunter trap). At frame 0, plays 'effect\\hunter_flasher.wav' and creates a central hex particle (type 0xF) with 'effect\\thunder_center.bmp' texture, plus 20 scattered spark particles (type 3) with randomized directions, sizes, and angular velocities. Central particle uses billboard mode with scale 20x20, fade at 200/8 rate. Sparks have random direction 0-360, random scale 20-60, random height 5-30 / 10.0. Projects entity position to screen coordinates.
0x00C15A10146CSkillEffect__update_freezing_trapUpdates Freezing Trap skill effect. On first frame (0x178==0), plays sound "effect\\hunter_freezingtrap.wav" at effect position relative to camera. Advances sprite animation with Y offset -80.0. Returns whether animation is still playing.
0x00C15AB0907CSkillEffect__update_frost_diver_effectUpdates the Frost Diver skill effect. At frame 0, plays 'effect\\EF_FrostDiver2.wav' and creates 8 ice shard particles (type 9). Each shard has random direction, randomized speed (1-3/10), random scale (100-350/10), and random size (200-500/10). Shards are oriented using rotation matrix copied to particle transform. Height starts at 30.0 with upward deceleration. Uses 'effect\\ice.tga' texture. Particles have flag 0x01 and lifetime of 40 frames with alpha fadeout starting 10 frames early.
0x00C15E401510CSkillEffect__update_frost_projectile_trailUpdates a frost projectile trail effect. Checks game settings option 0xE5 (effect quality). At frame 0, computes movement direction toward target using CSprite__set_facing_toward_point and builds rotation matrix. Moves effect along direction with deceleration. Each frame creates ice shard particles (type 9) with randomized direction, scale, and size. Uses 'effect\\ice.tga' texture. param_2==3 sets special particle type. Copies rotation matrix to particle transform.
0x00C16440465effect_id_to_cached_counterLooks up or creates a cached counter entry for an effect ID in a global unordered_map (DAT_016fdac0). Uses FNV-1a hash of the 4 byte ID. If the entry doesn't exist and the sentinel value matches DAT_016fdac4, returns 0. Otherwise finds or inserts a new node with counter initialized to 0. Returns the counter value from the node (offset 0xC). Handles rehashing when load factor exceeded.
0x00C166201283CSkillEffect__update_glass_wall_effectUpdates the Glass Wall (Safety Wall) skill effect. At frame 0, plays 'effect\\EF_GlassWall.wav' and creates two pairs of hex ring particles (type 0xF) with 'effect\\ring_blue.tga' texture. Pairs are placed at +1 and -1 positions along the entity's facing direction, one perpendicular and one parallel. Each ring has scale 3.0/2.6, size 40, angular speed 0.25, alpha fade rate 180/8. Advances sprite animation downward (-80 Y offset).
0x00C16B30146CSkillEffect__update_gloriaUpdates Gloria skill effect. On first frame (0x178==0), plays sound "effect\\priest_gloria.wav" at effect position relative to camera with volume 1.0. Advances sprite animation with Y offset -80.0. Returns whether animation is still playing.
0x00C16BD0146CSkillEffect__update_illusion_dopingUpdates Illusion Doping (GN) skill effect. On first frame (0x178==0), plays sound "effect\\gn_illusiondoping.wav" at effect position relative to camera. Advances sprite animation with Y offset -80.0. Returns whether animation is still playing.
0x00C16C701451CSkillEffect__update_frost_diver_projectileUpdates the Frost Diver projectile moving toward target. At frame 0, plays 'effect\\EF_FrostDiver.wav', computes direction matrix, and initializes velocity. Every 3rd frame, creates stone/ice shard particles (type 9) with randomized direction, scale (60-100/1000), size 10, and 6 trail segments. Uses 'effect\\stone.bmp' texture. Checks distance to target - sets arrival flag when close. Applies velocity offset each non-arrival frame.
0x00C17220723CSkillEffect__update_stone_curse_orbitingUpdates Stone Curse orbiting stone particles. At frame 0, creates 3 orbiting stone particles (type 9) at 120-degree intervals around the target. Each stone has different starting position offsets (0/-12/6 X, -12/6/6 Z), fixed Y height 40. Scale 0.9, size 25, elevation angle 75 degrees. Rotation matrix copied to particle transform. Uses 'effect\\stone.bmp' texture. Particles have flag 0x201 (billboard + persistent) with 1000 frame lifetime.
0x00C175001250CSkillEffect__update_adrenaline_rush_effectUpdates the Adrenaline Rush skill effect. At frame 0, plays 'effect\\black_adrenalinerush_a.wav' and at frame 30 plays '_b.wav'. Sets 300 frame lifetime. Projects entity position to screen. Creates 20 scattered spark particles (type 3) with randomized parameters and 'EFFECT\\alpha_center.tga' texture. Also creates 4 rotating sprite particles (type 7) at 90-degree intervals around the target with decay animation. Loads sprite/act resources for the rush effect.
0x00C179F01690CSkillEffect__update_heal_effect_00c179f0Updates the Heal skill effect. At frame 0, creates 3 concentric rising ring particles (type 0xD) with increasing radius (2.5/3.5/4.5) and size (15/25/35), all with blue-green tint (0x20,0xB0,0xE8). Uses 'effect\\alpha_down.tga' texture. Each ring fades in at different speeds. Plays '_heal_effect.wav' sound. On every even frame, creates a floating sprite particle (type 7) with random direction, upward velocity (-1.2), and loads healing sprite/act resources.
0x00C180901011CSkillEffect__update_earth_spike_effectUpdates the Earth Spike skill effect. At frame 0, plays 'effect\\wizard_earthspike.wav' and triggers screen shake (type 0x7A). Increases lifetime by 50 frames. Creates a 5x5 grid (spacing 5, from -10 to +10) of stone spike particles (type 9) at ground level. Each spike has randomized lifetime, direction, scale (300-350/1000), size (1-60/10 + base), and elevation angle (80-100 degrees). Particles use 'effect\\stone.bmp' texture with upward initial velocity and gravity deceleration.
0x00C184902296CSkillEffect__update_jupitel_thunder_effectUpdates the Jupitel Thunder skill effect. At frame 0, creates a central ring particle (type 0xD) facing the target direction with 'effect\\ring_blue.tga'. If effects not reduced (option 0xE5), creates 2 forward-facing flame particles (type 5) and 2 backward-facing trail particles (type 6) with randomized positions, scales, and lifetimes. Flame particles positioned 4-7 units along transformation matrix column. Trail particles have angular decay and direction-based rotation. All load fire sprite/act resources.
0x00C18D901078CSkillEffect__init_hit2_effectInitializes Hit2 skill effect. Projects world position to screen, plays EF_hit2.wav sound, creates particle effects with lens1/lens2 textures in a loop. Randomizes particle rotation, scale, speed, and lifetime. param_2 controls color override (0x78,0x78 when nonzero).
0x00C191D01960CSkillEffect__init_hit3_effectInitializes Hit3 skill effect. Plays EF_hit3.wav, creates two lens2 ring particles (type 0xd) with rotation from world-to-screen angle, plus 8 scattered sprite particles (type 5) using act/spr resources. Each scattered particle has randomized rotation, speed, scale, and lifetime.
0x00C199801592CSkillEffect__init_hit4_effectInitializes Hit4 skill effect. Projects position to screen, plays EF_hit4.wav, creates lens2 ring particle plus scattered sprite particles (same structure as hit3 but with different particle counts and parameters). Uses act/spr resources for sprite-based particles.
0x00C19FC0755CSkillEffect__init_hit5_effectInitializes Hit5 skill effect. Plays EF_hit5.wav, creates 2 particles with lens2 texture, each with random starting rotation offset. Particles have 17 frame lifetime, rotating with scale fade. Uses random angular offset between the two particles (90 degrees apart).
0x00C1A2C0755CSkillEffect__init_hit6_effectInitializes Hit6 skill effect. Plays EF_hit6.wav, creates 2 rotating particles with lens2 texture (same structure as hit5 but different scale/fade parameters). Particles have smaller initial scale (10 vs 20) and different alpha fade values.
0x00C1A5C02375CSkillEffect__init_hit7_effectInitializes Hit7 skill effect. Creates ring_blue ring particle (type 0xd) with rotation, plus 2 scattered sprite particles (type 5) with act/spr resources and small color (20,20,20). Then creates 2 additional falling particles (type 6) with gravity and rotation. Larger scale than other hit effects.
0x00C1AF101404CSkillEffect__init_ice_arrow_effectInitializes Ice Arrow skill effect. On frame 12, plays random EF_IceArrow_1/2/3.wav sound and multiplies duration by 10. Creates directional ice arrow particles (icearrow.tga) with calculated angle toward target, plus ring_blue ring particles on impact. Uses direction angle calculation for projectile orientation.
0x00C1B490881CSkillEffect__init_ice_wall_effect_00c1b490Initializes Ice Wall skill effect. Plays wizard_icewall.wav, sets duration to 9999 (persistent). Creates 3 ice particles (type 9) at different heights (-2, 0, 2) with random rotation, scale fade, and ice.tga texture. Particles copy rotation matrix and have tall vertical positioning.
0x00C1B810146CSkillEffect__update_impositio_manusUpdates Impositio Manus skill effect. On frame 60 (0x178==0x3c), plays sound "effect\\priest_impositio.wav" at effect position relative to camera. Advances sprite animation with Y offset -80.0. Returns whether animation is still playing.
0x00C1B8B01296CSkillEffect__init_increase_agi_dex_effectInitializes Increase AGI+DEX buff effect. Projects position to screen, plays EF_IncAgiDex.wav, creates upward-rising particle with dex_agi_up.bmp texture. On even frames, creates additional scattered particles (type 0x10) with ac_center2.tga texture and randomized speed/rotation.
0x00C1BDC01296CSkillEffect__init_increase_agility_effectInitializes Increase Agility buff effect. Projects position to screen, plays EF_IncAgility.wav, creates upward-rising particle with agi_up.bmp texture. On even frames, creates additional scattered particles (type 0x10) with ac_center2.tga texture. Very similar structure to AGI+DEX effect but with different sound and texture.
0x00C1C2D04807CSkillEffect__init_effect_sound_and_resourceInitializes skill effect by mapping effect ID to sound/animation resource path. Massive switch on effect ID (0x0a-0x421+) mapping to WAV file names like ArrowShot, Firewall, StoneCurse, Lightning, Meteor, etc. Some effects have min/full quality variants based on GameSettings option 0xe5. Loads the resource via CResourceMgr and stores sprite/act pointers for animation playback.
0x00C1DC7087CSkillEffect__init_sprite_animation_framesInitializes skill effect sprite animation frame state. Resets frame counter (0x119f4) and timer (0x178) to 0. Reads total frame count from animation resource (0x7f0->0x8). If animation has no looping (0x7f0->0x18==0), decrements max frame by 1. Clears all per-frame flags array (0x11a7c onwards) to 0.
0x00C1DCD0146CSkillEffect__update_envenomUpdates Envenom (Thief) skill effect. On first frame, plays "effect\\thief_invenom.wav". Advances sprite animation with Y offset -80.0.
0x00C1DD70252CSkillEffect__update_kyrie_eleisonUpdates Kyrie Eleison skill effect with two-part sound. On frame 0, plays "effect\\priest_kyrie_eleison_b.wav". On frame 15, plays "effect\\priest_kyrie_eleison_a.wav". Advances sprite animation with Y offset -80.0.
0x00C1DE70311CSkillEffect__create_particle_effectCreates a new particle effect (CEffectParticle) and attaches it to the skill effect's linked list at field 0x1a4. Allocates 0xFA18 bytes for the particle, calls CEffectParticle__ctor, initializes position from parent, inserts into the linked list, and registers with the global effect map. Returns pointer to new particle or 0 on failure.
0x00C1DFB0146CSkillEffect__update_lex_aeternaUpdates Lex Aeterna skill effect. On frame 15 (0x178==0xf), plays "effect\\priest_lexaeterna.wav". Advances sprite animation with Y offset -80.0.
0x00C1E050567CSkillEffect__update_lex_divina_effectUpdates Lex Divina skill effect per frame. Plays priest_lexdivina.wav at frames 0, 20, 35, 60, and 70 for a multi-hit sound pattern. Advances sprite animation with Y offset -80.0 and returns whether animation is complete.
0x00C1E290517CSkillEffect__init_kings_grace_effectInitializes King's Grace (LG) skill effect. Creates 4 particles (type 0xab) at 90-degree intervals (0, 90, 180, 270 degrees) around the caster. Each particle uses lg_kings_grace.tga texture, has a vertical offset of -8.0, and scale of 8.0. Particles persist for the skill duration.
0x00C1E4A037CSkillEffect__update_generic_spriteUpdates a generic skill effect by simply advancing its sprite animation with Y offset -80.0 and no sound. Returns whether animation is still playing.
0x00C1E4D084CSkillEffect__load_sprite_resourceLoads a sprite resource for the skill effect. Gets CResourceMgr instance, loads resource by path string (param_2), stores handle at field 0x7ec. Increments reference count. Sets animation data pointer (0x7f0) to resource + 0x110. Reads total frame count and adjusts for non-looping animations (decrements by 1 if loop flag at offset 0x18 is 0).
0x00C1E5301025CSkillEffect__init_lock_on_effectInitializes Lock On targeting effect. Creates two billboard particles (type 0xf, flag 0x800) with LockOn128.tga texture. First particle at rotation 0, second at rotation 45 degrees. Both have scale 30x30, fade to -1, and color (20, 250, 150) with fade to (-15). Adjusts Y position to ground height.
0x00C1E940155CSkillEffect__update_meteor_stormUpdates Meteor Storm skill effect with multiple impact sounds. On frame 0, plays "effect\\wizard_meteo.wav". On frame 10, plays "effect\\hunter_blastmine.wav". On frames 20,50,80,100,130,140,180,200, plays "effect\\wizard_meteo.wav" again. Periodically triggers screen shake (every 50 frames between 50-300). Advances sprite animation with Y offset -80.0.
0x00C1EB90146CSkillEffect__update_magnificatUpdates Magnificat skill effect. On first frame, plays "effect\\priest_magnificat.wav". Advances sprite animation with Y offset -80.0.
0x00C1EC301111CSkillEffect__init_magnum_break_effectInitializes Magnum Break skill effect. Plays EF_MagnumBreak.wav. Creates expanding ring_yellow ring particle (type 0xc, flag 0x200), plus a secondary expanding particle (type 0xe), then a third ring_yellow ring with 30-frame lifetime. All rings expand outward from caster position with scale fade.
0x00C1F090146CSkillEffect__update_magnus_exorcismusUpdates Magnus Exorcismus skill effect. On first frame, plays "effect\\priest_magnus.wav" with volume 1.0. Advances sprite animation with Y offset -80.0.
0x00C1F130765CSkillEffect__update_spawn_sub_effectUpdates a skill effect that periodically spawns sub-effects. Sets entity color (blending with target entity color if target has overlay). On first frame or every 5th frame, allocates a new 0x510-byte effect object and initializes it via FUN_00da0e60. Special handling for effect type 0x1e (every frame), and for certain job IDs (0, 6, 10, 11, 13). Grows the sub-effect vector.
0x00C1F430549CSkillEffect__update_spawn_sub_effect_variantUpdates a skill effect that spawns sub-effects on first frame only (frame 0 or 0x270e reset). Similar to update_spawn_sub_effect but uses 0x518-byte allocation and FUN_00da17a0 constructor. Sets entity color with blending if target has overlay. Grows sub-effect vector.
0x00C1F660520CSkillEffect__update_ground_effect_spawnerUpdates a ground-targeted skill effect that spawns sub-effects. Uses entity at offset 0x138 (target entity) instead of 0x4e (source). Spawns 0x518-byte sub-effects via FUN_00da1470. On first frame or every 5th frame (or type 0x1e every frame). Blends color with target entity overlay. Grows sub-effect vector.
0x00C1F870729CSkillEffect__update_spawn_job_dependent_effectUpdates a skill effect that spawns sub-effects based on job type. Checks effective job ID via CEntity__get_effective_job_id and FUN_00dfbce0 to decide between 0x458-byte (FUN_00da1270) or 0x518-byte (FUN_00da17a0) sub-effects. For Angelus (0x29), spawns every 20th frame; otherwise every 20th frame. Handles color blending with target overlay.
0x00C1FB50462CSkillEffect__update_maximize_power_effectUpdates Maximize Power (Blacksmith) skill effect. Plays circle sound at frame 0, sword sound at frames 40 and 47, and a third sword sound at frame 65. Advances sprite animation with Y offset -80.0. Returns whether animation is complete.
0x00C1FD20185CSkillEffect__update_meteor_singleUpdates single meteor impact effect. On frame 0, plays "effect\\wizard_meteor.wav". On frame 40, triggers screen shake via virtual function 0x18 with param 0x7a. Advances sprite animation with Y offset -80.0.
0x00C1FDE0146CSkillEffect__update_mvp_effectUpdates MVP announcement effect. On first frame, plays "effect\\st_mvp.wav". Advances sprite animation with Y offset -80.0.
0x00C1FE80960CSkillEffect__init_napalm_beat_effectInitializes Napalm Beat skill effect. Projects position to screen, plays EF_NapalmBeat.wav on first frame. Creates particles every 5 frames for the first 15 frames, each with randomized direction and speed. Uses 8-frame animated texture sequence. Particles scatter outward with gravity and alpha fade.
0x00C2024045CSkillEffect__dispatch_effect_by_idMain skill effect dispatcher. Large switch on effect ID (field 0x168 - 300). Routes to specific initialization/update functions for 70+ effect types including: Apocalypse (300), magic rings, heals, teleport, portal, waterfall variants, AOE sprites, explosions, Valentine models, rotating rings, etc. Most cases initialize particle effects and play sound on first frame. Returns 1 to continue or 0 to end effect.
0x00C35160644CSkillEffect__init_stone_curse_effectInitializes Stone Curse skill effect. On first frame, plays "effect\\black_overthrust.wav" and "effect\\EF_StoneCurse.wav". Creates particle effect type 4 with lifetime 40. Configures ring overlay with angle step 10.0, inner/outer radius 10.0, and radius 7.0. Computes fade rate from radius and lifetime. Loads "effect\\alpha_center.tga" texture. Projects entity position to screen space.
0x00C353F0379CSkillEffect__init_party_effectInitializes a party visual effect. Copies position from source entity (offset 0x138). If frame is 9998 (0x270e), resets to 0. Creates effect type 0xf (15) via FUN_00c1de70, sets duration to 9999, configures scale (4.0), color (R=50, G=253, B=50), loads effect_party_tga texture. Adjusts Y position using terrain height interpolation minus an offset.
0x00C35570146CSkillEffect__update_weapon_perfectionUpdates the Weapon Perfection skill effect. On frame 0, plays "effect_black_weapon_perfection_w" sound relative to player position. Advances sprite animation with Y offset -80.0 via advance_sprite_animation.
0x00C356102464CSkillEffect__update_ring_yellow_particlesComplex skill effect that spawns yellow ring particles at periodic intervals (every 20 frames). Creates an initial ring effect (type 0xd) with rotation based on source entity direction, then spawns 4+4 particles (types 5 and 6) at random positions around the effect origin. Each particle gets randomized lifetime (6-30 frames), scale, rotation speed, and color fade. Uses effect_ring_yellow_tga texture. Part of a buff/area effect visual.
0x00C35FB0186CSkillEffect__init_single_particle_effectInitializes a single particle effect (type 5) on frame 0. Sets duration from param, scale 1.5, billboard mode 2, enables flag 0x200, disables alpha. Loads color/texture from global data at 0x0119c9b4/0x0119c9cc.
0x00C36070146CSkillEffect__update_poison_reactUpdates the Assassin Poison React skill effect. On frame 0, plays "effect_assasin_poisonreact_wav" sound relative to player position. Advances sprite animation with Y offset -80.0 via advance_sprite_animation.
0x00C361101047CSkillEffect__update_blue_ring_expandUpdates an expanding blue ring skill effect. On frame 0, creates two concentric ring effects (type 0xd) with blue ring texture (effect_ring_blue_tga), different scales (3.5/4.0 and 4.0/5.0), both with height 36.0 and angle fade 128. Every 14 frames spawns additional blue ring particles (type 0xc) with rotation and fade properties. Used for buff/aura visualization.
0x00C36530318CSkillEffect__create_alpha_down_ringCreates a ring effect (type 0xd) with alpha_down texture. Takes scale (param_2) and duration (param_3). Configures ring with scale 4.5, initial size 10.0, alpha fade from 90.0, and angle increment based on duration/total frames. Uses effect_alpha_down_tga texture. Called by concentration and similar buff effects.
0x00C36670152CSkillEffect__update_concentrationUpdates the Concentration buff skill effect. Copies position from source entity. On frame 30 (0x1e), plays concentration sound and creates an alpha_down ring with scale ~1.95 and 30-frame duration. Advances sprite animation with Y offset -80.0 via advance_sprite_animation.
0x00C367101002CSkillEffect__update_awaken_particlesUpdates an awakening/buff effect with golden particles. On frame 0, calls vtable method to set color (0x7f alpha, 250 fade) and creates alpha_down ring. At frame 18, triggers screen flash (0x7a). Between frames 13-109 (every 4th frame), spawns particle effects (type 0x10, 40 frames) with random Y rotation, random distance (2-8 units), 90-degree X tilt, randomized speed/size, yellow color (R=240, G=240, B=120), using effect_ac_center2_tga. After frame 150, resets color to normal. Returns 0 to signal completion or 1 to continue.
0x00C36B001055CSkillEffect__update_awaken_red_particlesUpdates an awakening/buff effect with red particles. Similar to update_awaken_particles but with red color (R=240, G=0, B=0) instead of yellow. On frame 0, sets entity color (0x7f alpha, 250 fade to 120 R/120 G). At frame 18, triggers screen flash and plays concentration sound. Spawns red center particles between frames 13-109. After frame 150, resets entity color to normal.
0x00C36F20152CSkillEffect__update_concentration_auraUpdates a concentration aura skill effect. Copies position from source entity. On frame 0, plays concentration sound and creates alpha_down ring with scale 2.0 and 50-frame duration. Advances sprite animation with Y offset -80.0 via advance_sprite_animation.
0x00C36FC01263CSkillEffect__advance_sprite_animationCore sprite animation advancement for skill effects. Manages frame-based animation state across multiple animation layers/tracks. Projects effect position to billboard coordinates with configurable offset (param_2=X, param_3=Y, param_4=Z). Iterates through animation tracks in the sprite data (offset 0x7f0), advancing keyframe indices and interpolating properties (position, scale, rotation, color, UV). Handles 5 different interpolation modes: (1) additive, (2) clamped increment, (3) wrapping increment, (4) wrapping decrement, (5) ping-pong. Returns 0 when all tracks are complete, 1 while animating.
0x00C374D0253CSkillEffect__update_provokeUpdates the Swordman Provoke skill effect. Plays "effect_swordman_provoke_wav" sound at frames 5 and 30, positioned relative to the player. Delegates to advance_sprite_animation for frame-based rendering.
0x00C375D0171CSkillEffect__update_quagmireUpdates the Wizard Quagmire skill effect. On frame 0, has 1/12 chance to play "effect_wizard_quagmire_wav" sound relative to player position (with Y offset -100.0). Delegates to advance_sprite_animation for rendering.
0x00C37880146CSkillEffect__update_priest_recoveryUpdates the Priest Recovery skill effect. On frame 0, plays "effect_priest_recovery_wav" sound relative to player position. Delegates to advance_sprite_animation for frame-based rendering.
0x00C37920146CSkillEffect__update_refine_failedUpdates the Blacksmith Refine Failed effect. On frame 5, plays "effect_bs_refinefailed_wav" sound relative to player position. Delegates to advance_sprite_animation for rendering.
0x00C379C0146CSkillEffect__update_refine_successUpdates the Blacksmith Refine Success effect. On frame 15, plays "effect_bs_refinesuccess_wav" sound relative to player position. Delegates to advance_sprite_animation for rendering.
0x00C37A60674CSkillEffect__update_remove_trapUpdates the Hunter Remove Trap skill effect. On frame 0 or 7, spawns 12 particle effects (type 7, 50 frames each) with random Y rotation (0-360 degrees), slight size variation, upward velocity, and randomized speed. Plays "effect_hunter_removetrap_wav" sound on frame 0. Each particle is configured with color/texture data and added to the effect manager.
0x00C37D10170CSkillEffect__render_sprite_layersRenders the sprite animation layers for a skill effect. Checks if rendering is enabled (ret_one check and FUN_00c734b0 visibility check). Iterates through animation layers starting from index 1, and for each active layer (flag set in 0x119fc array), calls render_sprite_quad to submit the layer's quad geometry for rendering. Tracks rendered layer count for draw ordering.
0x00C37DC01423CSkillEffect__render_sprite_quadRenders a single sprite animation quad for a skill effect layer. Projects the entity's world position to screen coordinates, calculates screen-space scale. Builds a 4-vertex textured quad from the animation frame data, handling UV coordinate ordering based on flip state. Applies rotation (sin/cos from animation angle), translation, and scaling. Retrieves the correct frame texture via CAniClip__GetFrameTexture. Computes UV scaling based on texture atlas dimensions. Assembles vertex colors (ARGB) and submits the quad to the render pipeline (type 5 = alpha-blended sprite).
0x00C38350253CSkillEffect__update_weapon_repairUpdates the Weapon Repair skill effect. Plays "effect_black_weapon_repair_a_wav" sound at frames 20 and 55. Delegates to advance_sprite_animation for frame rendering.
0x00C38450146CSkillEffect__update_resurrectionUpdates the Priest Resurrection skill effect. On frame 0, plays "effect_priest_resurrection_wav" sound relative to player position. Delegates to advance_sprite_animation for rendering.
0x00C384F0539CSkillEffect__spawn_periodic_yellow_ringsSpawns yellow ring effects periodically (every 25 frames). Creates ring effect (type 0xd) with 60-frame duration, scale parameters, rotation increment, and yellow ring texture. First ring (frame 0) has longer duration and no rotation delta. Subsequent rings have rotation wobble. Uses effect_ring_yellow_tga.
0x00C38710146CSkillEffect__update_rk_luxanimaUpdates the Rune Knight Lux Anima skill effect. On frame 0, plays "effect_rk_luxanima_wav" sound relative to player position. Delegates to advance_sprite_animation for rendering.
0x00C38A30146CSkillEffect__update_sanctuaryUpdates the Priest Sanctuary skill effect. On frame 0, plays "effect_priest_sanctuary_wav" sound relative to player position. Delegates to advance_sprite_animation for rendering.
0x00C38AD0679CSkillEffect__update_sand_particle_effectSpawns sand/dust particle effects every other frame for the first 60 frames. Projects entity position to screen coordinates, then creates particle (type 0) with randomized lifetime, scale (260-560), Y rotation (130-145 degrees), size 30.0, random X position (-500 to 140), random Y position (-240 to -190), random emitter delay (10-20). Uses effect_sand1_bmp texture. Part of a ground/earth-type skill visual.
0x00C38D8086CSkillEffect__dispatch_render_by_typeDispatches skill effect rendering based on effect type ID (param_2, range 14-143). Uses a jump table at 0x00c39148 indexed by a lookup table at 0x00c3915e to call the appropriate render function for each effect type. Only dispatches when param_3 is exactly 0.
0x00C39460713CSkillEffect__update_shadow_sprite_orbitingUpdates an orbiting shadow sprite effect. Copies position from source entity, projects to screen. Every other frame, calculates an orbital position using sin/cos at an angle that increases with frame count. Spawns two particle sprites (type 5, 20 frames each): one with the main effect sprite at Y=-20 and one with Shadow.spr at Y=0. Each gets scale, alpha fade, and velocity parameters. Used for skills with circling visual elements.
0x00C397301929CSkillEffect__update_sight_rasherUpdates the Wizard Sight Rasher skill effect. On frame 0, sets entity color overlay (0x6d type, alpha 22) and plays "effect_wizard_sightrasher_wav" sound. Every 5 frames for the first 20 frames, spawns two rings of 8 particles each radiating outward. First ring uses effect sprites with 3D velocity, second ring uses Shadow.spr. Particles have decreasing lifetime as animation progresses. At frame 10, spawns a yellow ring particle (type 0xc) at 90-degree tilt with fade properties.
0x00C39EC01184CSkillEffect__update_signum_crucisUpdates the Signum Crucis skill effect. Projects entity to screen coordinates. At frame 30, plays both "effect_EF_Signum_wav" and "effect_EF_Bash_wav" sounds, creates an expanding alpha_down ring effect (type 4, 40 frames, flag 0x1, Y offset -40, size 100), then spawns 20 rotating particles (type 3, 35 frames each) with random Y rotation (0-360), random angular speed, random radius (15-40), random size (30-90), and random vertical scale. Particles use EFFECT_alpha_center_tga texture. Delegates to advance_sprite_animation for base rendering.
0x00C3A360146CSkillEffect__update_skid_trapUpdates the Hunter Skid Trap skill effect. On frame 0, plays "effect_hunter_skidtrap_wav" sound relative to player. Delegates to advance_sprite_animation.
0x00C3A400829CSkillEffect__update_poison_attack_particlesUpdates the Poison Attack skill effect with scattered particles. Every 5 frames, plays "effect_EF_PoisonAttack_wav" on frame 0, then spawns a particle (type 5, 40 frames) with random Y rotation (0-360), random distance (2-8), 90-degree X tilt, randomized scale and speed, fading alpha. Uses sprite data from 0x01114b58.
0x00C3A740469CSkillEffect__init_rising_particle_burstInitializes a burst of rising particles on frame 0. Copies position from source entity. Spawns 2-5 particles (type 5, random count) with random X tilt (75-105 degrees), random Y rotation (0-360), Y velocity -9, scale 0.75, randomized speed (3-6). Particles have 2/3 duration fade. Uses sprite from 0x01196d7c.
0x00C3A920786CSkillEffect__update_timed_sprite_spawnSpawns sprite particles at timed intervals (every 160+ ticks from vtable timer). Copies position from audio listener entity. Creates 2 particles (type 0x15, 320 frames) at player position, with random Y rotation (0-360), 90-degree X tilt, random distance offset (-300 to 0), random Y offset (-240 to -190), random emitter delay (10-20). Speed -0.5, scale 1.5, 4/5 duration fade. Uses sprites from 0x0119c600.
0x00C3AC40146CSkillEffect__update_elemental_shieldUpdates the Sorcerer Elemental Shield skill effect. On frame 0, plays "effect_so_elemental_shield_wav" sound relative to player position. Delegates to advance_sprite_animation.
0x00C3AF00984CSkillEffect__init_sonic_blow_ringInitializes the Assassin Sonic Blow skill ring effect. On frame 0, plays "effect_assasin_sonicblow_wav" sound, then creates a ring effect (type 0xd, 12 frames) oriented by entity direction. Calculates ring position with offset, applies random position jitter, sets scale (7.0 width, 4.0 height), size 3.5, and loads effect_magic_red_tga texture. Ring has 0.4 initial alpha with fade-out.
0x00C3B2E0976CSkillEffect__update_soul_strikeUpdates the Soul Strike skill effect. Hit count varies by skill level (1-7 hits) with different angular spacing (360/180/90/60/45/30/25 degrees). Every 11 frames starting from frame 5, plays "effect_EF_SoulStrike_wav" sound and spawns a projectile particle (type 8, 40 frames) at Y=-10, with facing angle from entity direction (negated), scale 1.0, scale fade 3.5/-2.0, angular speed 2.75. Level-dependent sprite selection (param_2 determines sprite variant).
0x00C3B730674CSkillEffect__update_fireball_hitUpdates the Fire Ball hit effect. On frames 0, 4, 8, and 12, plays "effect_EF_FireBall_wav" sound and creates a sprite particle (type 5, 15 frames) with flag 0x120 (billboard + additive blend), Y offset -15, facing angle from entity direction (negated), speed decay per frame. Brightness varies by hit frame (0=max, 4=180, 8=130, 12=80). Each hit triggers a vtable call to apply damage.
0x00C3B9E0703CSkillEffect__update_smoke_trail_particlesUpdates a smoke/trail particle effect that spawns every 10 frames. Copies position from source entity. Creates particle (type 7, 300 frames) with small scale, slight rotation wobble, Y rotation 2.0, angular growth 8.0 with negative increment, scale 1.2. Positions particle offset from entity with a constant displacement. Uses vector push_back to add size (95.0), growth rate (-0.15), and fade params. Remaining duration decreases with each spawn. Uses standard effect sprites.
0x00C3BCA0146CSkillEffect__update_venom_splasherUpdates the Assassin Venom Splasher skill effect. On frame 10, plays "effect_assasin_venomsplasher_wav" sound relative to player position. Delegates to advance_sprite_animation.
0x00C3BD401618CSkillEffect__update_water_pond_effectUpdates a water/pond area skill effect with multiple periodic components. On frame 0, creates 8 pond water billboard effects (type 0xf, 130 frames) evenly spaced in a circle (45-degree increments), each with size 5.5, scale 2.7, and pond_water_bmp texture. Every 10 frames, spawns 8 alpha_down fade rings around the area at the same positions with 90-degree Z tilt. Every 20 frames, spawns a centered horizontal ring particle (type 0xc, 25 frames) with alpha_center_tga texture at 90-degree X tilt.
0x00C3C3A0146CSkillEffect__update_spring_trapUpdates the Hunter Spring Trap skill effect. On frame 0, plays "effect_hunter_springtrap_wav" sound relative to player position. Delegates to advance_sprite_animation.
0x00C3C440146CSkillEffect__update_sr_flash_comboUpdates the Sura Flash Combo skill effect. On frame 0, plays "effect_sr_flashcombo_wav" sound relative to player position. Delegates to advance_sprite_animation.
0x00C3C4E0765CSkillEffect__init_status_icon_gridInitializes a grid of status effect icons on the screen. On frame 0 (or after a reset/flag change), iterates through active status effects in a linked list, creates a billboard particle (type 0, flag 0x201, mode 4) for each unique status icon. Positions icons in a grid layout starting from the top-left corner, wrapping to new rows when exceeding screen width. Each icon has 16.0 scale, 99999999 frame duration, and uses the status effect's texture plus white02_bmp overlay. Deduplicates by tracking already-displayed effect IDs (up to 100). Resets when a special frame marker (0x5f5e0fe) is reached.
0x00C3C7E01116CSkillEffect__update_stealUpdates the Steal skill effect. On frame 0, plays "effect_EF_Steal_wav" sound and spawns 10 particles (type 6) with random Y rotation (0-360), random X tilt (-50 to 50), random distance (4-8 units), randomized scale (50-100), rotation speed (60-150), and alpha fade (100-200). Each particle has 2/3 duration fade. Uses sprite from 0x01183d38.
0x00C3CC4037CSkillEffect__update_simple_sprite_animSimplest skill effect update - just delegates to advance_sprite_animation with Y offset -80.0 and no additional logic. Used as a generic handler for effects that need only sprite playback.
0x00C3CC70894CSkillEffect__update_storm_gustUpdates the Wizard Storm Gust skill effect. On frame 0, plays "effect_wizard_stormgust_wav" sound. If effects are not minimized (option 0xe5), every 29 frames between frames 31-150 spawns 2 ice shard particles (type 9, remaining duration). Each shard has flag 0x1, random Y rotation for position, random distance (3-28), Y=20, random size (400-500), scale 20.0. Ice shards rotate at random angles (0-360) and 100-degree X tilt, with 3D matrix copies for orientation. Uses effect_ice_tga texture. Scale 1.5 with no fade, brightness 250.
0x00C3CFF0146CSkillEffect__update_suffragiumUpdates the Priest Suffragium skill effect. On frame 0, plays "effect_priest_suffragium_wav" sound relative to player position. Delegates to advance_sprite_animation.
0x00C3D090104CSkillEffect__update_screen_flash_effectUpdates a screen flash/shake effect. On frame 0, calls FUN_00c18d90(1) to trigger a screen effect. On frames 3, 7, and 9, triggers screen flash (vtable call 0x7a with white flash). Delegates to advance_sprite_animation.
0x00C3D100139CSkillEffect__update_position_override_effectUpdates a skill effect that temporarily moves the source entity to a different position. Saves the entity's current position (from offset 0x138+0x10/14/18) to local storage (offset 0x18c), replaces it with the override position (offset 0x180), runs advance_sprite_animation, then restores the original position. This allows an effect to render at a target location while the entity stays in place.
0x00C3D190759CSkillEffect__update_alpha_center_burstSpawns a burst of 20 rotating alpha_center particles on frame 0 and triggers a color reset on frame 35. Projects entity to screen coordinates. Each particle (type 3, 40 frames) has random Y rotation (0-360), random angular growth (10-70), random radius (5-30), random size (20-60), random vertical scale (20-50), brightness fade to 200. At frame 35, calls vtable method to set entity color to state 0x3f (normal). Uses EFFECT_alpha_center_tga texture.
0x00C3D620505CSkillEffect__update_ground_particle_spraySpawns sprite particles every 5 frames that spray upward from ground level. Creates particle (type 5, 10 frames) with random Y rotation (0-360), 90-degree X tilt, randomized scale (20-40), scale 0.8, angular growth 3.0, brightness 70, 4/5 duration fade. Adjusts Y position using terrain height interpolation. Uses sprite data from 0x01114b58.
0x00C3D820605CSkillEffect__update_magic_circle_groundUpdates a ground magic circle effect. On frame 0, creates a billboard particle (type 0xf) with MagicCircle_bmp texture, 90-degree Y rotation, size 30.0, scale 30.0 with -1.0 shrink rate, no rotation animation. On subsequent frames, checks a linked reference entity and at threshold frame counts (300, 500, 1000, 1500, 2000) modifies the circle's draw order and rotation speed (forward/backward), then clears the reference. Adjusts Y to terrain height.
0x00C3DBF0146CSkillEffect__update_thunderstormUpdates the Magician Thunderstorm skill effect. On frame 0, plays "effect_magician_thunderstorm_wav" sound relative to player position. Delegates to advance_sprite_animation.
0x00C3DC90465CSkillEffect__init_lockon_target_circleInitializes a lock-on targeting circle effect on the ground. Copies position from source entity. On frame 0 or reset (frame 9998), creates a billboard particle (type 0xf, 9999 frames) with LockOn128_tga texture, 90-degree Y rotation, rotating at 4.5 speed, scale 4.0. Color varies by effect subtype (offset 0x174): type 11 = blue (R=0,G=250,B=0), others = red scaling with (10-type)*25 for G and B channels. Adjusts Y position to terrain height.
0x00C3DE70274CSkillEffect__init_configurable_sprite_particleInitializes a configurable sprite particle on frame 0. Creates particle (type 5) with flag 0x200 (no depth write), duration from param, Y offset -10. Scale and billboard mode are read from the effect's custom parameters (offsets 0x13c and 0x140), with defaults of 1.0 if not set. Uses sprite data from 0x0119c590.
0x00C3DF901839CSkillEffect__update_bash_shockwaveUpdates a Bash-like shockwave skill effect. At frame 37, plays "effect_EF_Bash_wav" sound. On frame 0, creates an expanding alpha_down ring (type 4, 20 frames, flag 0x1, size 370, Y offset -40, brightness fade 130). Also spawns 5 (frame 0) or 20 (other frames) rotating alpha_center particles (type 3, 20 frames) at the entity's position with random rotation, angular growth, radius, and brightness. On frame 0, particles orbit outward (size 350-380, speed -150 to -180); on other frames, particles converge inward with smaller size (50-70). At frame 50, creates a ring_liner billboard (type 0xf, 30 frames) at 90-degree Y rotation with scale growth 1.5 and alpha fade.
0x00C3E6C0156CSkillEffect__update_two_hand_quickenUpdates the Knight Two-Hand Quicken buff effect. On frame 0, sets duration to 9999 and plays "effect_knight_twohandquicken_wav" sound relative to player position. Delegates to advance_sprite_animation.
0x00C3E760448CSkillEffect__update_periodic_particle_spraySpawns sprite particles every 5 frames with upward spray. Creates particle (type 5, 10 frames) with random Y rotation (0-360), 90-degree X tilt, randomized scale (20-40), scale 0.8, angular growth 3.0, brightness 70, 4/5 duration fade. Same as ground_particle_spray but without terrain height adjustment. Uses sprite data from 0x01114b58.
0x00C3E920146CSkillEffect__update_poison_react_altAlternative Assassin Poison React skill effect update. On frame 0, plays "effect_assasin_poisonreact_wav" sound relative to player position. Delegates to advance_sprite_animation. Identical behavior to update_poison_react but at a different address, likely used by a different effect ID.
0x00C3E9C01102CSkillEffect__update_yellow_ring_with_sparklesUpdates a skill effect with periodic yellow rings and sparkle particles. Every 20 frames, spawns a horizontal yellow ring (type 0xc) at 90-degree X tilt with size 2.0, radius 22.5, scale 10.0, flag 0x200, brightness 200, and RING_YELLOW_TGA texture. Every other frame, spawns a sparkle particle (type 7, 40 frames) with random distance (1-3 units), random Y rotation (0-360), rotation speed 2.0, random scale, 2/3 duration fade. Uses standard effect sprites.
0x00C3EE101578CSkillEffect__update_blue_ring_aura_with_sparklesUpdates a blue ring aura with sparkle particles (looping at frame 145). On frame 0 or reset (frame 145), creates a large expanding alpha_down ring (type 0xc, 158 frames, flag 0x1, size 15, Y offset -1). Every 28 frames (up to frame 117), spawns a smaller blue ring (type 0xc, 80 frames) at 90-degree X tilt with size 14, fade-out, scale 4.0. Also pushes size (20.0) and growth (0) to vectors. Every 10 frames, spawns a sparkle particle (type 7, 130 frames) with random distance (3-5), random Y rotation (0-360), rotation speed 2.0, random scale. Uses effect_ring_blue_tga and standard effect sprites.
0x00C3F440862CSkillEffect__init_waterball_projectileInitializes a Water Ball projectile effect on frame 0. Plays "effect_wizard_waterball_chulung" sound, creates a sprite projectile (type 8, 40 frames) at Y=-10. Calculates facing angle from entity direction (negated), sets speed per frame, scale fade 3.5/-2.0, scale 0.75, 12-frame hold. Positions projectile at unit distance from entity origin with direction-based orientation. Uses water ball sprite data from 0x0119cc04.
0x00C3F7A01067CSkillEffect__init_waterball_splashInitializes the Water Ball splash/hit effect on frame 0. Plays "effect_wizard_waterball_chulung" sound. Creates 3 effect elements: (1) a blue ring (type 0xc, 30 frames) at 90-degree X tilt with scale 12.0, fade 1.75, flag 0x200; (2) an ice crystal (type 0xe, 30 frames) with angular speed 3.0, fade 1.15; (3) another blue ring (type 0xc, 20 frames) at 90-degree X tilt with scale 12.0. All use effect_ring_blue_tga or effect_ice_tga textures.
0x00C3FBD0558CSkillEffect__init_water_out_billboardInitializes a water splash billboard effect on frame 0. Plays "effect_wizard_waterball_chulung" sound. Creates a billboard (type 0xf) with flag 0x40+0x100 (ground-projected + additive), scale 3.5, flag 0x2 on 0x1c4, alpha enabled, billboard mode 5, Y offset -5.0. Loads 3 animation frame textures: water_out_a_bmp, water_out_b_bmp, water_out_c_bmp. Duration from param. Has negative scale decay per frame for shrinking effect.
0x00C3FE0037CSkillEffect__update_simple_sprite_no_offsetSimplest skill effect - delegates to advance_sprite_animation with zero offset (no Y displacement). Used for effects that render at exact entity position.
0x00C3FE301563CSkillEffect__init_shockwave_trapInitializes the Hunter Shockwave Trap effect on frame 0. Plays "effect_hunter_shockwavetrap_wav" sound. Creates two expanding billboards: (1) type 0xf with flag 0x40+0x400, scale 3.5, facing from entity direction, Y offset -5, brightness 170, texture depends on param_2 (thunder_center_bmp or twirl_soft_bmp); (2) type 0xf with flag 0x40+0x400+0x100, alpha enabled, scale 4.5, billboard mode 1. Second billboard has 6 animation textures: either thunder_ball_a through _f or alternating twirl_soft/thunder_ball variants depending on param_2.
0x00C404501072CSkillEffect__update_thunder_plasma_effectUpdates a thunder/plasma skill effect. Copies position from source entity. Every 20 frames, spawns a flash billboard (type 0xf, 10 frames) with flag 0x40, scale growth 2.5, UV scroll, 1-frame delay. Uses thunder_pang_bmp or pokjuk_d_bmp depending on param_2. At frame 10, spawns the main plasma billboard (type 0xf, 300 frames) with flag 0x40+0x100, alpha enabled, scale 7.5, billboard mode 1. Uses 5-frame animated textures: either thunder_plazma_blast_a/b + thunder_ball_d/e/f, or alternating twirl_soft/thunder_ball variants.
0x00C40E70545CSkillEffect__init_3d_projectile_effectInitializes a 3D projectile skill effect (type 0x62) on frame 0. Copies position from source entity. Creates a 3D effect with mode 5 flag, duration from param, loads texture from param_2. Sets up projectile parameters: scale 0, no initial movement, size 5.0, random initial angle (0-360). Computes facing angle from source position to target position (offset 0x180), adding 90-degree offset with wrapping. Initializes 4 sub-effect slots (at offsets 0x3e8, 0x49c, 0x550, 0x604) to inactive state.
0x00C410A0474CSkillEffect__init_4ring_orbit_effectInitializes a 4-ring orbital effect (type 0x6a) on frames 0 and 4. Creates a 3D effect with mode 5, scale 4.0, loads texture from param_2. Sets up 4 orbital ring sub-effects spaced 90 degrees apart (0x5a = 90-degree increments), each with initial radius 8.0, angular range 360, scale 10.0, growth 10.0, and height 22 units. Initializes the offset data arrays (7 entries per sub-orbit) to zero for each of the 4 orbits.
0x00C41280413CSkillEffect__init_4ring_billboard_orbitInitializes a 4-ring billboard orbital effect (type 0x69) on frame 0. Creates a 3D effect with mode 0x201, scale 100.0, loads texture from param_2. Sets up 4 orbital ring sub-effects spaced 45 degrees apart with initial radius 8.0, angular range 360, scale 20.0. Initializes all sub-orbit data arrays to zero.
0x00C4142068CSkillEffect__init_double_ring_effectInitializes a double ring effect on frame 0. Copies position from source entity. Calls FUN_00c62b60 twice: first with effect_ring_white_tga (45-degree count, 22 spacing) and then effect_ring_yellow_tga (25-degree count, 22 spacing). Used for buff/aura skill visuals with concentric rings.
0x00C41470532CSkillEffect__init_multi_orbit_configurableInitializes a configurable multi-orbit effect (type 0x59) on frame 0. Creates a 3D effect with mode 5, duration from param, loads texture from param_2. Sets up 4 orbital ring sub-effects spaced at 90-degree increments. Orbit behavior varies by param_4 type: types 2,3,6 start at Y=0 with size 2.0, others start at Y=-24 with size 2.0. Angle multiplier varies by param_4 (type 3 uses 7x, others use 22x param_3). Random initial angle (0-360) per orbit, Y offset -12.0. Initializes all sub-orbit data arrays.
0x00C416903392CSkillEffect__init_4ring_orbit_two_phaseInitializes a 4-ring orbital effect with two phases (type 0x6b) at frames 1 and 2. Each phase creates a 3D effect with mode 5, duration from param, loads texture from param_2. Phase 1 (frame 1): first orbit at scale 2.5, angle 53, angular range 360, start 270 deg; second at scale 5.25, angle 60, start 60 deg; third at scale 7.5, angle 55, start 90 deg; fourth at scale 10.2, angle 50, start 180 deg. Phase 2 (frame 2): similar but with slightly different scales (~2.7, 5.3, 7.7, 10.2) and angles (~52, 59, 54, 49). All orbits have 7 sub-entries initialized to zero.
0x00C423D0464CSkillEffect__init_fullbuster_effectInitializes the Full Buster / ice effect (type 0x47) on frame 0. Copies position from source entity, adjusts Y position downward. Creates a 3D effect with flag 0x200, duration from param. Loads 2 textures: effect_fullb_tga and white02_bmp. Sets up first sub-effect slot with initial Y=0. If param_2 is 0, size is 65.0 with no movement flag. Otherwise, size decreases by (param_2 * 10) and movement is enabled. Initializes 4 sub-effect slots (0x3e8-0x604) to inactive, then activates the first.
0x00C425A01435CSkillEffect__init_multi_layer_ground_particleInitializes a multi-layer ground particle effect (type 0x5a). Creates particle with texture from param_2. Configures 2+2 layers (0xb4 bytes each) with different parameters based on param_3 (0, 10, 11, 20, 21). Layers have different rotation speeds, scales, and display types. Used for various ground-targeted skills like Safety Wall variants.
0x00C42B40823CSkillEffect__init_skill_icon_particleInitializes a floating skill icon particle effect (type 0x44). Loads texture from param_2 or generates skill icon path from random skill IDs (when param_3 > 0) or specific skill ID 0x8ed (when param_4 == 2). Configures a single visible layer with scale and positioning. Creates at specified frame (param_3 offset).
0x00C42E801443CSkillEffect__init_soul_letters_effectInitializes Soul Link letter effect (type 0x44). At frame 1, loads soul_l/u/o/s textures (spelling "soul" or similar) and creates 4 letter layers rising upward with staggered timing. At frame 21, loads soul_k/n/i/l textures for a second set of letters. Each layer has independent scale and animation parameters.
0x00C434301887CSkillEffect__init_asura_strike_effectInitializes Asura Strike (Guillotine Fist) effect. Plays EF_BeginSpell.wav with white ring ground effects. At frame 1, loads asura1/2/3 textures (or asura11/12/13 for param_2 variant) as 3-layer expanding particles. At frame 21, loads asura4/5/6 (or asura14/15/16) for second wave. Minimum duration enforced at 350 frames.
0x00C43B901792CSkillEffect__init_firewall_ground_effectInitializes Fire Wall ground effect (type 0x76). Plays EF_FireWall.wav, loads texture from param_2. Configures 4 layers of fire particles at different rotation speeds (0x13b, 0x13b, 0x13b, 0x168 degrees), heights (25, 22, 19, 30), and scales. Each layer has its own animation timing and sub-particle arrays.
0x00C442901710CSkillEffect__init_ground_aoe_particle_00c44290Initializes a ground AoE particle effect. Uses type 0x19 (or 0x17 for param_3=='!'). Loads texture from param_2, enforces min duration 70. Creates 4 layers with rotation (0x13b, 0x13b, 0x13b, 0x168), various heights, and sub-particle arrays. Similar structure to firewall but with different particle type and rotation speeds. param_3 controls rotation speed variant.
0x00C44940559CSkillEffect__init_simple_floating_particleInitializes a simple floating particle effect (type 0x83). Creates single texture particle from param_2 with one visible layer. Scale 24.0, basic animation parameters. Used for simple floating icon effects that stay attached to an entity.
0x00C44B70164CSkillEffect__init_blue_ring_ground_effectInitializes blue ring ground effect. On first frame, plays "effect\\EF_BeginSpell.wav" with Y=-100 offset. Creates two multi-ring ground effects using "effect\\ring_blue.tga": one at angle 45 and one at angle 25, both with 5 rings.
0x00C44C201062CSkillEffect__init_waterfall_column_effectInitializes waterfall-style column particle effect (type 0x4f). Loads 3 textures based on param_4: waterfall11/12/13 (type 0), waterfall31/32/33 (type 1), or alpha_down (type 10). Creates multiple layers with staggered Y positions forming a vertical column. Each layer has 10 sub-frames of animation with ascending positions. param_3 controls height variants.
0x00C45050426CSkillEffect__init_orbiting_particleInitializes an orbiting particle effect (type 0x72). Creates single particle from texture param_2 with random rotation angles. Scale 1.6, height -12.0. Used for effects that orbit around entity with randomized starting angle and delay.
0x00C45200702CSkillEffect__init_aura_circle_particleInitializes an aura/circle particle effect (type 0x27). Creates single particle from texture param_2. param_3 controls variant: types 2-4 have different scales, rotation speeds, and heights. Types 10-12 use fixed rotation 0x168. Height -2.0, random starting rotation. Used for buff/aura visual circles around entities.
0x00C454C0750CSkillEffect__init_spinning_ground_particleInitializes a spinning ground particle (type 0x32). Single layer with rotation speed 0x13b degrees, random start rotation, height varies randomly. Used for ground-targeted spinning effects. Stores param_3 type in field 0x318.
0x00C457B0992CSkillEffect__init_rotating_ring_particleInitializes a rotating ring particle effect (type 0x40). Single layer particle that rotates at various speeds based on param_3 (0-4). param_3==0: quality-dependent height (option 0xe5), rotation speed 30, range 0x360. param_3==1/3: height 16, rotation 120, range 0x758. param_3==2: height 32, rotation 30, range 29999. param_3==4: similar to 1 but with additional random delay. Scale 2.5x2.5 for most variants.
0x00C45B901096CSkillEffect__init_floating_sprite_particleInitializes a floating sprite particle effect (type 0x2f). Loads texture based on param_3: type 5 picks random from 3 textures, type 2 picks melody_a/b, type 8 picks from spell_01-08 bitmaps. Configures scale (varies by type), position anchored to entity, random starting rotation. Supports multiple sub-layers for type 2 (melody notes). Type 7 uses special display mode 7, type 9 uses display mode 9.
0x00C45FE0673CSkillEffect__init_scatter_sprite_particleInitializes scatter sprite particles (type 0x31). Creates 2-3 particles (2 for param_3==1, 3 for param_3==0) with random start delay. param_3==0: random scale 0-5, position at entity height. param_3==1: larger random scale with multiplier, position offset below entity. Particles anchor to entity position with rotation speed 45 degrees.
0x00C46290374CSkillEffect__init_rain_drop_particleInitializes rain drop particle effect (type 0x33). On first frame, creates particle with lifetime from parent (0x17c). Sets initial position to entity position with slight Y offset. Configures weather tint to 250.0 (0x437a0000). Loads sprite/act resources. Sets rendering mode 4. Initializes 4 trail slots as inactive. Calls CEffectParticle__copy_transform_to_particle_array.
0x00C464101100CSkillEffect__init_directional_scatter_particleInitializes directional scatter particles (type 0x30). Creates 4 particles with different movement patterns based on param_3: type 0 uses random direction/offset, types 1-2 use mirrored diagonal movement (first 2 vs last 2), types 3-4 use axis-aligned movement with first pair active only. Each variant stores type in field 0x3fc.
0x00C468602158CSkillEffect__init_expanding_4layer_particleInitializes a 4-layer expanding particle effect (type 0xa9). Creates during first 4 frames. Each layer has rotation speed 0x168, random starting angle, scale based on frame*2 + offset (varies per layer). All 4 layers use same texture with sub-particle arrays zeroed. Used for multi-ring expanding aura effects around entities.
0x00C470D0673CSkillEffect__init_small_orbiting_particleInitializes a small orbiting particle effect (type 0x24). Single layer with rotation speed 0x168, height 15.0, random start angle, random rotation offset. Scale ~2.6, rotation speed 80. Stores param_3 type in field 0x318. Similar to expanding_4layer but simpler with 1 active layer plus sub-particle arrays.
0x00C47380562CSkillEffect__init_homing_sprite_particleInitializes a homing sprite particle effect (type 0x7f). Single particle with scale 1.0, positioned at entity with negative height offset from field 0x13c. Has 4 sub-layers (0x49c, 0x550, 0x604) all active. Random start rotation, display mode 2. Used for tracking/homing projectile visuals.
0x00C475C0372CSkillEffect__init_expanding_circle_effectInitializes expanding circle particle effect. On frame 100, creates particle type 0x4A with blend mode 5. Loads texture from param_2. Configures single particle slot at entity position with Y offset -5.0. Sets radius to 8.0, heading to 360 degrees (full circle), and alpha to 0 (fades in).
0x00C47740585CSkillEffect__init_slash_trail_effectInitializes slash trail effect (type 0x37, flag 0x200) at frame 40. Creates 4 particles with slash01.tga texture. Each particle gets direction angle computed from entity to target position. param_2 controls forward/backward Y offset distribution. Scale 100, lifetime 1. Used for melee slash visual trails.
0x00C479901147CSkillEffect__init_line_projectile_effectInitializes line projectile effect (type 0x38, flag 0x201). Creates 4 particles with line3.tga (param_2<10) or line3y.tga (yellow variant). Each particle has randomized scale, position offset, and speed based on param_2 type ranges (0-9, 10-19, 20+). Direction angle computed from entity to target. Used for arrow/bolt trail effects.
0x00C47E10337CSkillEffect__init_shockwave_ring_effectInitializes shockwave ring particle effect (type 0x36). On first frame, creates particle with blend mode 5. Loads "effect\\shockwave_c.bmp" texture. Configures 4 particle slots at 90-degree intervals (0,90,180,270) with base angle from param_2. Each slot starts with radius 100.0, heading at its base angle, and alpha 0. Y position offset from terrain height.
0x00C47F70818CSkillEffect__init_directional_sprite_effectInitializes directional sprite-based effect (type 0x2e). Plays sound on first frame for param_2==0. Loads texture/act resources based on param_2 (0: specific sprite with action 2, 1-2: different sprites with action 6, 12-13: additional variants). Computes direction angle from entity to target, determines facing quadrant (0-3), copies transform. Sets flag 0x200 for sprite rendering.
0x00C482B01275CSkillEffect__init_orbiting_element_ballsInitializes orbiting elemental ball particles (type 0x20). Creates 1-5 balls based on field 0x180 (clamped to 1-5). Each ball has 6 random rotation angles, height -15, random starting position angle. param_2 controls variants: type 1 uses small scale (1.3), types 3-4 use density-based spacing, types 10+ use specific elemental textures (fire_1, lightning_1, water_1, stone_1, RL_richs_coin). Default uses thunder_center.bmp.
0x00C488201130CSkillEffect__init_buff_scatter_particleInitializes buff scatter particle effect. Projects position to screen, plays EF_IncAgility.wav (or alternate for param_2==3). On even frames, creates scattered particles (type 0x10) with ac_center2.tga texture. param_2 controls particle parameters: types <2 have smaller speed/scale, types >=2 have larger values. Creates particles with randomized rotation, speed, and direction. Similar to increase_agility but more configurable.
0x00C48C90575CSkillEffect__init_aurora_particle_ringInitializes aurora particle ring effect (type 0x81). On first frame, creates particle with blend mode 5. Loads texture from param_2. Initializes 3 particle slots (at 0xB4 stride) with: alpha 30, radius 0, speed increasing by 1.0 per slot, heading at 25-degree intervals. Positions initialized to entity position with Y offset -10.0. param_3 stored as type flag at offset 0x450.
0x00C48ED01067CSkillEffect__init_stacked_rotating_particleInitializes stacked rotating particle effect (type 0x84). Creates 4 layers with staggered start delays (-20 apart). Each layer has height 10.0, random rotation angles, and stores param_3 type. At frame 0 (or 99999998 reset), creates first set; at frame 10, creates second set. Used for multi-layer rotating buff indicators. Duration supports 99999999 for infinite display.
0x00C493002903CSkillEffect__init_weather_particle_effectInitializes weather/environmental particle effect (type 0x21). Creates 4 particles with textures based on param_2: type 3 uses fog1/2/3.tga, types 9/15 use star01-06.bmp (6 textures), others use cloud4/1/2.tga. Each particle gets random position offset, scale, and rotation. param_2 controls spawn area and behavior: type 0 spawns at height -152, type 2/5 spawn at offset from entity, type 3 uses map ground height, types 9/15 spawn in wider area. Special handling for ecl_fild01 map (wider spawn range).
0x00C49E60954CSkillEffect__init_snow_projectile_effectInitializes snow/ice projectile effect (type 0x86). Creates 4 particles with E9_snow/snow01/snow02/snow03 textures. Each particle starts at target position with computed direction angle offset by 160+random(41) degrees. Random scale, random starting rotation. Used for ice/snow attack projectile effects that scatter from target location.
0x00C4A220894CSkillEffect__init_wedding_petal_effectInitializes wedding/petal particle effect (type 0x4e). Plays wedding.wav for param_3==0. Creates 4 particles with texture from param_2, each at 45-degree rotation intervals. Random height offset, random position scatter (-50 to +50), random Y position above entity. Random scale with multiplier. Used for flower petal / confetti visual effects.
0x00C4A5A0166CSkillEffect__init_red_ring_ground_effectInitializes red ring ground effect. On first frame, plays "effect\\EF_BeginSpell.wav" and creates two multi-ring ground effects using param_2 (texture path): one at angle 45 and one at angle 25, both with 3 rings.
0x00C4A6501646CSkillEffect__init_4layer_rotating_ground_effectInitializes 4-layer rotating ground particle effect (type 0x18). Creates particle with texture from param_2. Layer 1: rotation 0x168, height 40, start angle 0xb4, scale 8.0. Layer 2: rotation 0x168, height 39, start angle 0x10e, scale ~7.9. Layer 3: rotation 0x168, height 38, start angle 0, scale ~7.8. Layer 4: rotation 0x168, height 37, start angle 0x5a, scale ~7.7. All layers have sub-particle arrays zeroed.
0x00C4ACC0180CSkillEffect__init_begin_spell_effectInitializes a spell begin effect. Copies position from source entity at offset 0x138. If not on sub-map (0x178==0), plays BeginSpell.wav sound relative to camera, then creates two black ring ground effects (sizes 0x2d and 0x19).
0x00C4AD80374CSkillEffect__init_entity_aura_effectInitializes an entity aura/overlay effect (type 0x33). Creates an effect object, loads ACT resource, sets up particle with position offset below entity. Configures scale (0x318=1.2), clears multiple particle layer flags (0x49c, 0x550, 0x604). Copies entity transform to particle array.
0x00C4AF001165CSkillEffect__init_super_nova_particlesInitializes super nova particle effect (type 99/0x63). Loads 5 super textures (super1-5.bmp). For each particle (up to param_2 count), randomizes: Y offset (0-9), scale (0-4), angle (0-359), additional height layers. Each particle gets stride of 0xB4 bytes. Uses param_3 to set particle sub-type flag.
0x00C4B3901899CSkillEffect__init_ground_aoe_particleInitializes a ground AOE particle effect (type 0x52). Loads a single texture from param_2. Large switch on param_3 (0x01-0x22) to configure: particle scale, Y offset, rotation mode, visual type. Some modes use entity's custom range (0x13c). Mode 0x16 queries skill tree for radius calculation. Sets random initial angle, position, and height offset.
0x00C4BB003112CSkillEffect__init_torch_particle_effectInitializes torch/flame particle effects (type 0x80). Loads different texture sets based on param_2: 0=dust01-09 (9 frames), 1=torch_red01-13 (13 frames), 2=torch_green01-13, 3=torch_violet01-13, 4=lord_stick_a-h + plazma_a-c + blast (11 frames). Configures particle scale from entity range or default, sets Y offset, rotation speed, and particle color type.
0x00C4C730273CSkillEffect__init_sprite_act_effectMassive sprite/ACT effect initializer with 80+ cases. Creates effect object (type 5), configures based on param_2: loads SPR/ACT files, plays sounds (blood_lust, firehit, itempokjuk), sets animation modes (billboard, looping). Handles hit effects, weapon impacts, elemental attacks, homunculus skills, and various visual overlays. Uses directional calculation for projectile-type effects (cases 8, 0x1c). Some cases set gravity offset, RGB tint, or random animation frames.
0x00C4E3F0822CSkillEffect__init_electric_chain_particlesInitializes electric chain particle effect (type 0x66). Loads elec1.tga texture. Creates 4 particle chains (stride 0xB4) between source and target positions. For each chain: computes angle to target, randomizes scale and speed, initializes 3 sub-segments of 10 floats each (zeroed). Sets initial velocity to 20.0 units. Uses param_2 as chain count/type.
0x00C4E730955CSkillEffect__init_radial_electric_effectInitializes a radial electric effect (type 0x65) with guard condition 0x178 < 4. Loads elec1.tga, creates 4 particle slots (stride 0xB4). Each slot gets angle offset (sVar6 * 45 + param_3), random scale, initial position from entity. Clears 2 sub-segment arrays of 10 entries per slot. Sets particle rotation speed to 3.
0x00C4EAF0936CSkillEffect__init_radial_electric_effect_altInitializes a radial electric effect variant (type 0x65) with guard condition 0x178 in range [0xB, 0xE]. Same structure as radial electric effect but activates only for specific sub-map values. Loads elec1.tga, 4 particle slots, rotation speed 0. Nearly identical to init_radial_electric_effect.
0x00C4EEA0936CSkillEffect__init_radial_electric_effect_alt2Initializes a radial electric effect variant (type 0x65) with guard condition 0x178 in range [0x14, 0x17]. Same structure as other radial electric variants. Loads elec1.tga, 4 particle slots, rotation speed 0. Activates for a different sub-map value range than the other variants.
0x00C4F2501024CSkillEffect__init_multi_projectile_effectInitializes a multi-projectile sprite effect (type 8). Creates 4 projectiles at angles -90, -30, 30, 90 degrees. Each projectile: calculates distance and facing to target (0x180/0x188), computes travel speed, sets up parabolic arc (height velocity + gravity), applies rotation matrix for sprite orientation. Random RGB tint (160-240 range) and random scale. Loads SPR/ACT resources, sets animation mode 7.
0x00C4F6501115CSkillEffect__init_multi_projectile_coloredInitializes colored multi-projectile sprite effects (type 8). Creates 4 projectiles at angles -90 to 90. Similar to init_multi_projectile_effect but adds color variant selection based on param_2: 0=random R/B + full G, 1=warm white (200-255), 2=dark (20-120). Each projectile gets parabolic trajectory, random scale, and direction-based rotation.
0x00C4FAB01900CSkillEffect__init_portal_ring_effect_00c4fab0Initializes a portal ring visual effect (type 0x3C). Plays EF_Portal.wav sound. Loads ring_blue.tga texture. Sets up 4 concentric ring layers with different scales and rotation speeds: layer 0 (scale 3.7, angle incr 90), layer 1 (scale 3.4, angle incr 90), layer 2 (scale 3.6, angle incr 10), layer 3 (scale 3.7, angle incr 5). All layers have 1400-frame lifetime and random initial angle.
0x00C502201888CSkillEffect__init_teleport_ring_effectInitializes a teleportation ring effect (type 0x3C). Plays EF_Teleportation.wav. Loads custom texture from param_2. Sets up 4 ring layers with decreasing lifetimes (60 frames). Layer 0: expanding ring, layer 1: contracting ring at 45 deg offset, layer 2: fast expanding ring, layer 3: slow inner ring. All rings have 360-degree full rotation and varying scale speeds.
0x00C509801192CSkillEffect__init_directed_torch_red_effectInitializes a directed red torch flame effect (type 0x85). Loads torch_red01-13 textures (13 frames). Configures a single particle with scale 12.0, positioned at Y offset. Computes facing angle from source to target position (0x180/0x188) + 180 degrees. Stores target coordinates and random initial rotation. param_2 sets particle sub-type.
0x00C50E30647CSkillEffect__init_heal_sparkle_effectInitializes a heal sparkle visual effect (type 0x3A). Plays heal_effect.wav sound relative to camera. Loads pikapika2.bmp texture. Creates a single particle with scale 10.0, small growth rate (0x414=0.02), random initial angle, and position at entity with Y offset. Activates only the first particle layer, clears remaining 3 layers.
0x00C510C01246CSkillEffect__init_4layer_ring_effectInitializes a 4-layer concentric ring effect (type 0x6C). Loads texture from param_2. param_3 sets initial scale (0x318). Has two ring configuration modes (param_4=0 or 1) that vary ring sizes, angle increments, and rotation speeds for each of the 4 layers. Each layer has 7 sub-segments cleared to zero. All layers use 315-degree rotation range.
0x00C515A0414CSkillEffect__init_ground_indicator_particleInitializes a ground indicator particle effect (type 0x43). Loads texture from param_2. param_3 toggles between two modes: mode 0 (no initial scale, small size) or mode 1 (scale=100.0, larger size). Sets initial facing angle from target X position, and a slow growth rate (-0.05). Creates one active particle layer with position tilt angle of 150.
0x00C51740864CSkillEffect__init_expanding_ring_4slotInitializes a 4-slot expanding ring effect (type 0x42). Loads texture from param_2. Creates 4 ring slots with progressive offsets. param_3 selects ring behavior: modes 1/11 use wider spacing, modes 2/12/13 use tight spacing, mode 10 uses different height offset. Each slot stores source and target positions. Target position is computed as offset from source based on mode.
0x00C51AA0722CSkillEffect__init_spiral_ring_effectInitializes a spiral ring particle effect (type 0x71). Loads texture from param_2. Creates 4 ring slots with decreasing scale (6.0 to 4.0), each with radius 15.0, random initial angle, and 50-degree tilt. Scale 4.0 as base. Clears 3 sub-segment arrays per slot (7 entries each). Used for upward spiral visual effects.
0x00C51D80451CSkillEffect__init_flat_ring_rotation_effectInitializes a flat rotating ring effect (type 0x25). param_2 selects texture: 0=ring_yellow.tga, 1=ring_black.tga. Creates 2 ring slots with 90-degree separation, billboard render mode (flags 1\|5). Each slot has radius 60.0, scale 24.0, height 3.2, and no additional offset. Scale=1.0. Clears layers 2 and 3.
0x00C51F501054CSkillEffect__init_grand_cross_ring_effectInitializes a Grand Cross ring effect (type 0x22). Plays cru_grand_cross.wav. param_3 selects texture: 0=ring_white.tga (scale 1.0), 1=ring_black.tga (scale 12.0). Creates all 4 ring layers with identical parameters: 90-degree rotation per frame, radius 120.0, scale ~19.85, tilt 90. Uses param_2 as initial angle offset. Layers are at compass directions (0, 90, 180, 270).
0x00C52370288CSkillEffect__init_magic_target_effectInitializes a magic targeting ground effect (type 0x70). Loads magic_target.tga texture. Simple single-layer particle with no rotation. Clears all 4 particle layers, then activates only layer 0 with initial angle 0. Used as a ground targeting reticle for magic skills.
0x00C52490575CSkillEffect__init_aoe_sprite_effectInitializes an AOE sprite effect (type 0x54) for skills like safety wall. Guard condition allows sub-map values 0-9. param_2 selects variant: 0 loads one pair of SPR/ACT, 1+ loads another. Mode 2 uses a fixed initial speed, others calculate speed from (10 - submap_value) * 3. Sets billboard rendering (0x200 flag), animation mode 2, scale 1.5. Copies entity transform to particle array.
0x00C526D01614CSkillEffect__init_glass_wall_ring_effectInitializes Glass Wall ring effect (type 0x3C). Plays EF_GlassWall.wav. Creates 3 ring layers with scale 10.0. Layer 0: full rotation, radius 34.0, tilt 90. Layer 1: full rotation, radius 37.0, tilt 90. Layer 2: full rotation, radius 40.0, tilt 90. Long lifetime (5500 frames). Calls advance_sprite_animation at end.
0x00C52D205873CSkillEffect__dispatch_particle_creationDispatches skill particle effect creation. 5.8K bytes. Calls CSkillEffect__create_particle_effect with various configs, uses rand for randomization, runs anti-cheat sweep. No callers (likely virtual/callback).
0x00C54420841CSkillEffect__init_ice_stone_explosion_effectInitializes ice/stone explosion effect (type 0x75). Creates a grid of 5x5 positions with 4 debris objects each (100 total). Each debris: random angle, random elevation (60-100), random scale (300-349/1000). First 2 use stone.bmp, last 2 use ice.tga. Each has parabolic trajectory, rotation matrix from random angles, 240-frame lifetime with 10-frame fade.
0x00C54770582CSkillEffect__init_vertical_column_effectInitializes a vertical column/pillar particle effect (type 0x58). Billboard mode (flags 1\|5). Loads texture from param_2, height varies by param_4: 1=101.0, 2=102.0, 3=111.0 (with random Y drift), 4=113.0, 10=114.0. Sets single active particle with downward fall speed (-5.0 default, random for mode 3). Uses param_3 as initial frame counter.
0x00C549C0542CSkillEffect__init_maximize_power_effectInitializes Maximize Power skill effect (type 0x3D). Plays black_maximize_power_sword.wav. Loads 2 textures: param_2 and a01.bmp. Scale 11.0. Single active particle with radius 10.0, scale 1.0, and mode flag 1. Clears other 3 layers.
0x00C54BE0625CSkillEffect__init_kyrie_guard_effectInitializes Kyrie Eleison guard visual effect. Copies position from linked entity, creates effect type 0x3D with 2 textures (effect_kyrie_guard_wav, effect_guardK2_tga). Plays sound effect. Sets particle scale/rotation/fade parameters. param_3 selects effect variant (2/3/4/5 for different visual modes).
0x00C54E601164CSkillEffect__init_super_novice_effectInitializes Super Novice angel/star effect. Creates effect type 0x23 with 5 textures (super1-5.bmp). Sets up multiple particle layers with random angles (0-360), speeds, and fall rates. param_2 controls particle count, param_3 is variant flag passed to each particle.
0x00C552F0373CSkillEffect__init_single_texture_auraInitializes a single-texture aura effect. Creates effect type 0x68 with flags 0x201 and 1 texture. Sets up a single active particle with scale 8.0, rotation period 0xB4 (180 degrees). Simple static aura around entity.
0x00C554705317CSkillEffect__dispatch_particle_creation_bSecond skill particle effect creation dispatcher. 5.3K bytes. Same pattern as CSkillEffect__dispatch_particle_creation - creates particle effects with randomization. No callers (likely virtual/callback).
0x00C569402780CSkillEffect__init_heal_particle_effectInitializes heal/recovery particle effect with rising sparkle particles. Creates effect type 0x3C with rotating particles and optional secondary particle layer (type 0x3B with pok1/pok3 textures for splash variant). param_3=0: large heal with 60-frame duration, param_3=1: small heal with 30 frames and random size variation. Plays heal_effect.wav sound. Uses two concentric particle rings at offsets 0x3E8 and 0x49C.
0x00C574201026CSkillEffect__init_pok_splash_effectInitializes pok/splash particle effect (skill impact visuals). Creates effect type 0x3B with 2 textures (pok1.tga, pok3.tga). Activates when frame counter is divisible by 4. Sets up 4 particles (0xB4 stride) with random positions around entity. param_3 controls variant: 0/2=small spread, 1/3=large spread with different color indices (0xB vs 0x12).
0x00C578301132CSkillEffect__init_rotating_ring_effectInitializes a rotating ring particle effect. Creates effect type 0x6E with rotating particles (rotation=360deg), scale 12.0, target position passed as params. Sets up two concentric ring layers with color value 0x21 for all particle slots. Duration based on entity timer minus 25 frames.
0x00C57CA01538CSkillEffect__init_white_particle_burstInitializes white particle burst effect (white02.bmp). Creates effect type 100 with 1 texture. param_2 controls intensity: 1=2 iterations (light burst), 3=5 iterations (heavy burst). Each particle has random upward velocity, angle offset from 125-245 degrees, random 360-degree rotation, and size variation. Includes trail buffer with color interpolation.
0x00C582B01020CSkillEffect__init_white_rising_particlesInitializes white rising particle effect (white02.bmp). Activates when entity frame counter is 6-9. Creates effect type 100 with 4 particles rising from entity position. Each particle has random upward velocity (0-30), angle 125-245 deg, random rotation, size 3-8. param_2=3 uses different fade speed. Trail buffer for smooth animation.
0x00C586B01275CSkillEffect__init_directional_particle_burstInitializes directional particle burst using white02.bmp. Creates effect type 100 with particles aimed toward a target position (from offsets 0x180-0x188). Computes angle from entity to target, randomizes +-60 degrees spread. param_2=3: deeper upward velocity range (-25 to -46) with slower fade; default: shallower range (-15 to -40) with faster fade. 4 particles per effect with trail buffers.
0x00C58BB0964CSkillEffect__init_white_sparkle_particlesInitializes white sparkle particle effect (white02.bmp, effect type 0x46). Activates when entity frame counter < 4. Creates billboard particles with OR'd flags (1\|5). 4 particles with random upward velocity, 125-176 deg angle range, random 360-deg rotation, size 3-10. Uses trail buffer for particle history. param_2 variant stored per particle.
0x00C58F80851CSkillEffect__init_white_projectile_effectInitializes white projectile particle effect (white01/white03.bmp). Creates effect type 0x2B with particles aimed at target position (0x180-0x188). param_2 controls variant: 2=slow downward with color 2, 3=fast downward (-70 to -100) with random color 3-5, 4=medium with white03 texture, default=fast downward with color 0. 4 particles with random 360-degree angles and scale 12.
0x00C592E0430CSkillEffect__init_magic_green_ringInitializes green magic ring effect (magic_green.tga). Creates effect type 0x4B with scale 9.0. Activates only on frame 5. Sets up 4 particles evenly spaced at 90-degree intervals (0x5A = 90 degrees each), with param_2 as angle offset. Each particle has scale 2.0 and distance 1.0. Also checks sprite animation advance when param_2 == 0.
0x00C59490384CSkillEffect__init_magic_blue_ringInitializes blue magic ring effect (magic_blue.tga). Creates effect type 0x4B with scale 4.0. Sets up 4 particles evenly spaced at 90-degree intervals with param_2 as angle offset. Each particle has size 2.0, scale 1.5, and distance 1.0. Always created regardless of frame counter (unlike green variant).
0x00C59610839CSkillEffect__init_fire_arrow_3d_effectInitializes fire arrow 3D particle effect (effect type 0x7C). Plays random EF_FireArrow sound (1-3) when frame is 12-15. Creates 3D mesh effect with random size (2-4 * scale factor), random scale (22-27 / divisor), position offset by random angle from entity. Sets 4 random rotation angles. Loads mesh/material via FUN_00cc2e00/FUN_00cbf930. Calls virtual method to select animation variant.
0x00C59960530CSkillEffect__init_alpha_center_target_effectInitializes alpha center targeting effect (alpha_center.tga). Creates effect type 0x26 on frame 0 only. Sets up single particle with fade rate 0.2, scale growing at 2.0 speed. Stores entity position as source, looks up target entity by ID (either local player or by find_map_by_id). If target not found, deactivates particle. Small variant with 0x3E4CCCCD scale.
0x00C59B80530CSkillEffect__init_alpha_center_target_largeInitializes large alpha center targeting effect (alpha_center.tga). Creates effect type 0x26 on frame 0 only. Same as small variant but with scale 0x3F333333 (0.7) and growth rate 3.0. Resolves target entity position the same way - by player ID or entity lookup.
0x00C59DA0558CSkillEffect__init_cloud_target_effectInitializes cloud targeting effect (cloud11.tga). Creates effect type 0x26 on frame 0. Sets up particle with initial angle 45 degrees, fade rate 0.4. param_2=2 applies additional scale factor. Resolves target entity position by ID. Cloud/smoke visual connecting entity to target.
0x00C59FD01403CSkillEffect__init_triple_ring_auraInitializes triple ring aura effect. Creates effect type 0x17 with 3 concentric ring layers. Special frame handling: resets to 0 if frame is 0x5F5E0FE (100M-2), sets duration to 99999999 (permanent). Ring 1: rotation 315deg, scale 15.0, size 3.9. Ring 2: rotation 315deg, scale 13.0, angle offset 90deg, size 4.1. Ring 3: rotation 315deg, scale 11.0, angle offset 180deg, size 4.3. param_3=1 increases base scale to 7.0.
0x00C5A550525CSkillEffect__init_dual_layer_auraInitializes dual layer aura effect. Creates effect type 0x1C with flags 0xD. Same permanent frame handling (0x5F5E0FE reset). param_3 controls scale: 0=4.0, 1=15.0, 2=17.0, 3=18.0 with different size factor. Two active layers with angle offsets 0 and 180 degrees, both at elevation 200. Vertical movement at -1.0 speed.
0x00C5A7602947CSkillEffect__init_elemental_aura_effectInitializes elemental aura effect with multiple variants. Creates effect type 0x1D with billboard flags. Same permanent frame handling. Selects texture based on param_2: 0=freezing_circle, 1-2=whitelight (2 has extra scale 7.0), 3=ghost. Multiple visual modes (1-8): 1/4=medium sparkle, 3=ghost scatter (random +-8 offset), 5/7/8=whitelight with special flags, 6=wide scatter (+-17 offset). Sets random rotation angles and height values per particle. 4 particles per effect.
0x00C5B2F0642CSkillEffect__init_random_sphere_particlesInitializes random sphere particle effect. Creates effect type 0x51 with 2 textures on frame 0. 4 particles with random 360-degree angles in 3 axes, angle range 40deg, size 1.0, height 10.0. Random 50/50 chance of two color variants: (105,105,255) or (55,55,225). Scale speed 1-2 random.
0x00C5B580815CSkillEffect__init_radial_fan_effectInitializes radial fan particle effect. Creates effect type 0x29 on frame 0. 4 particles spaced at 90-degree intervals (0x5A each), rotating 360deg, scale 120.0. Staggered start delay (30-frame intervals). param_3 controls base scale: 0/1=standard, 2=7.0 scale, 3=6.0 scale. param_3=1 uses wider angle range (70deg vs 50deg). Trail buffer history for each particle.
0x00C5B8B0132CSkillEffect__play_sage_magic_rod_soundPlays Sage Magic Rod skill sound effect (sage_magic_rod.wav) on frame 0. Calculates 3D distance from entity to camera for volume attenuation. No visual effect created - sound only.
0x00C5B940843CSkillEffect__init_perimeter_attack_effectInitializes perimeter/expanding ring attack effect. Plays permeter_attack.wav at frame 20, EF_MagnumBreak.wav at frame 30. Creates effect type 0x49 with expanding rings on frames 25-55 (every 3rd frame, max 10 rings). Each ring set has particles evenly distributed, with size/radius expanding over time. Stores ring count at offset 0x170.
0x00C5BC90280CSkillEffect__spawn_periodic_particle_emitter_aSpawns periodic particle emitter variant A. Sets color to (155,155,255) with full alpha, and scale to (155,255,155). Every 20 frames (or on frame 9998), allocates 0x510 bytes for a new particle emitter, calls virtual init method with bounding box parameters, then adds to emitter list. Simple light/aura emitter.
0x00C5BDB0280CSkillEffect__spawn_periodic_particle_emitter_bSpawns periodic particle emitter variant B. Sets color to (225,225,255) with full alpha, and scale to (225,255,225). Every 10 frames (or on frame 9998), allocates 0x510 bytes for a new particle emitter. Same structure as variant A but brighter color and faster spawn rate.
0x00C5BED01403CSkillEffect__init_triple_ring_aura_variantInitializes triple ring aura variant. Creates effect type 0x17 with billboard flags on frame 0. Three concentric ring layers with rotation 315deg. Ring 1: scale 15.0, angle 50 + 55, size ~12.9. Ring 2: scale 13.0, angle offset 90deg, size ~13.1. Ring 3: scale 11.0, angle offset 180deg, size ~13.3. Similar to init_triple_ring_aura but with variant timing (period=1).
0x00C5C450595CSkillEffect__init_ground_circle_effectInitializes ground circle effect. Creates effect type 0x1A on frame 0. param_3 controls scale: 4/14=111.0, 5=112.0, default=110.0. Size varies: 2/3=40.0, 4 uses stored value from offset 0x13C if >0 else 40.0, default=30.0. Rotation mode varies by param_3: 0/2=no rotation with elevation 200, fade -0.5; 5/14=no rotation with elevation 250; others=rotation 358deg with elevation 50, fade -0.4.
0x00C5C6B0923CSkillEffect__init_orbiting_spheres_effectInitializes orbiting spheres effect. Creates effect type 0x1B on frame 0. Sets up 4 particles with random 360-degree rotation angles in multiple axes. Height offset computed from param_3 * 2 with sign flip. Each sphere has fade 0.15 and scale 1.0. param_4=2 sets flag for reverse orbit direction.
0x00C5CA50430CSkillEffect__init_dual_layer_circle_auraInitializes dual layer circle aura. Creates effect type 0x1C with billboard flags on frame 0. Base scale 4.0. Two layers with size 46.0 each. Layer 1 at angle 0, layer 2 at angle 180. Both at elevation 25 with vertical movement at -1.0. Simple symmetric aura ring effect.
0x00C5CC00669CSkillEffect__init_3d_mesh_periodic_effectInitializes 3D mesh periodic effect (type 0x28). Same permanent frame handling (0x5F5E0FE). Spawns on even frames only, stops after frame 199. Random scale (2-4 * factor), random size (35-40 / divisor). Position scattered +-150 around entity X/Z, height offset below. Loads mesh materials, selects random animation variant (0-2), copies transform to particle array.
0x00C5CEA0520CSkillEffect__init_3d_mesh_sprite_effectInitializes 3D mesh sprite effect (type 0x33, flag 0x200). On frame 0. param_2=2: loads small mesh (100.0 bound), 12 subdivisions, no smoothing, buffer 0x800; default: loads large mesh (200.0 bound), 4 subdivisions, height offset applied. Copies entity position as source. Uses mesh loading via FUN_00cc2e00/FUN_00cbf930.
0x00C5D0B0730CSkillEffect__init_thunder_center_splashInitializes thunder center splash effect (thunder_center.bmp). Creates effect type 0x3B on frame 0. 4 particles scattered +-4 around entity position with random downward velocity (-10 to 0). Random size (0-15 * factor + 0.3). Color index 10. Random rotation speeds for trail animation.
0x00C5D390430CSkillEffect__init_poison_fog_effectInitializes poison fog/cloud effect. Creates effect type 0x48 with 0x200 flag (permanent frame handling). param_2=0: uses poison_f.bmp texture; other: uses white02.bmp. Single particle with size 30.0, positioned slightly below entity. Stores variant in effect field 0x45A.
0x00C5D540720CSkillEffect__init_falling_column_effectInitializes falling column particle effect (type 0x57). On frame 0. Single particle falling from above, with 3 secondary layers all active. param_3 controls size and variant: 0=size 12, height -115; 4=size 14, random height; default=size 8, height -80. param_3 1-3 set color variants 9 with different sub-indices. Color index 7 by default.
0x00C5D810856CSkillEffect__init_impact_splash_at_targetInitializes impact splash effect at target position (from offsets 0x180-0x188). Creates effect type 0x3B on frame 0 with 2 textures. param_3 selects texture pair: 0=pok1/pok3 (color 0xB), 1=thunder_ball 2/3 (color 1), 2=meteo_comet b/c (color 7). 4 particles scattered +-4 around target with random rotation speeds.
0x00C5DB70848CSkillEffect__init_multi_orbit_particle_effectInitializes multi-orbit particle effect (type 0x73). Activates on frame 30. 4 particles with 3 orbit layers each (offsets +0, +0x30, +0x60). Each orbit has random 360-degree initial angle and 180-degree speed variation, with radius 230.0. Scale 1.0 with random size from 0-5 range. Random orbit speed multiplier (1-3).
0x00C5DEC0882CSkillEffect__init_pok_timed_splash_effectInitializes timed pok splash effect (pok1.tga, pok3.tga). Activates within a frame window controlled by param_3: variant 2 starts at frame 40 and ends at 120, others start at 0 and end at 80. Only triggers every 4th frame. Creates type 0x3B with 2 textures and 4 scattered particles. param_3 selects color variant: 0=0xB, 1/2=1, 3=0xD.
0x00C5E240755CSkillEffect__init_directional_scatter_effectInitializes directional scatter particle effect. Creates effect type 0x5E on a specific frame (param_4: 0=frame 35, 1=frame 0). Particles scatter in a 90-degree cone from param_3 direction using sin/cos lookup tables. 4 particles with random upward velocity (0-10), scale grows gradually (0.03 rate). Uses height offset -4.0 and random 360-degree rotation on each axis.
0x00C5E540506CSkillEffect__init_ground_marker_effectInitializes ground marker effect. Creates effect type 0x5F on frame 35 only. Single particle with size 22.0, positioned at entity's XZ coordinates. Height offset below entity. Random 360-degree initial rotation, rotation period 135 degrees. Color variant 2. Marks ground position for skill targeting.
0x00C5E7401277CSkillEffect__init_3d_scatter_particle_effectInitializes a 3D scatter particle effect (type 0x60). Has 2 modes based on param_3: Mode 0 (submap 0x23): single particle with random radius, random scale, negative frame counter, random Y offset, sinusoidal XZ drift using sin/cos LUTs, 4 random rotation angles. Mode 1 (submap 0): 4 particles with similar randomized properties and larger scale range.
0x00C5EC40857CSkillEffect__init_camera_sparkle_effectInitializes a camera-relative sparkle effect (type 0x34). Positions at camera instead of entity. Loads 3 textures: pok1.tga, pok3.tga, pok2.tga. Creates 4 particle slots with: negative frame offset (-300 to -350), random initial angle, copies camera position to 4 position buffers per slot. Random animation phase (0-4), random scale multiplied by angle, random facing angles.
0x00C5EFA0100CSkillEffect__play_sound_at_frame_300Plays a sound effect at frame 300. If frame exceeds 2300, resets to 299. Simple frame-triggered sound playback with frame clamping.
0x00C5F0104656CSkillEffect__init_magic_ring_phased_effectInitializes a multi-phase magic ring effect. Phase 0 (submap 0): creates type 0x3C ring with magic_violet (or ring_red for param_2=3). 3 layers, full rotation, long lifetime. Phase 1 (submap 1): creates type 0x3F ring with blue or red texture, 3 layers with progressive height offsets. Phase 2 (submap 2): creates type 0x3E cloud effect with cloud11.tga, 4 layers with scaling sub-segments.
0x00C602403232CSkillEffect__init_magic_ring_phased_altInitializes an alternate multi-phase magic ring effect. Phase 0: creates type 0x3C ring with magic_violet/ring_red, 3 layers with scale 80.0. param_2=1 gets infinite lifetime (0xFFFF), others 1400 frames. Phase 2: creates type 0x3E cloud effect with cloud11.tga, 4 layers at different heights. Very similar to init_magic_ring_phased_effect but with different layer parameters.
0x00C60EE01003CSkillEffect__init_cloud_ring_4slotInitializes a cloud ring effect (type 0x3E) with 4 slots. Loads cloud11.tga. param_2 selects mode: 0=expanding with random scale, 1=stacked with progressive offsets, 2=contracting rings, 3=tight contracting. Each slot gets 90-degree angle separation, random tilt (80-100), and 7 sub-segments initialized to 1.0. Used for cloud/smoke ground effects.
0x00C612D0710CSkillEffect__init_expanding_ring_4slot_altInitializes an expanding ring effect (type 0x29) with 4 slots. Loads texture from param_2. Scale 5.0. When param_3=0: creates 4 ring slots with frame offset 200, full rotation, radius 120.0, progressive scale (6.0 + slot*1.0), decreasing tilt (83 down to 80). Each slot has 7 sub-segments cleared. Lifetime mode 1 (single cycle).
0x00C615A0652CSkillEffect__init_falling_particle_effectInitializes a falling particle effect (type 0x2B) with 4 slots. Loads texture from param_2. Each particle: positioned at target location with Y offset, negative frame counter for stagger (-18 to -48), scale 12.0, fall speed 1.0, random facing and rotation angles. param_4 selects particle sub-type (1=6, 7=7, 8=8, 9=9, default=2). Uses param_3 as angle parameter.
0x00C61830585CSkillEffect__init_falling_projectile_to_targetInitializes falling projectile effect aimed at target position (0x180-0x188). Creates effect type 0x2B on frame 0. 4 particles with random downward velocity (-18 to -48), size 12.0, orbit speed 1.5. Random 360-degree angles, speed 3.5. Height offset applied to entity position. Color flag 1.
0x00C61A80450CSkillEffect__init_camera_angle_beam_effectInitializes beam effect aligned to camera angle. Creates effect type 0x5D on frame 0 with 1 texture. Reads camera rotation angle from field 0xD0+0x30, inverts it (360-angle). Sets particle size 50.0, rotation period 180deg. Single active particle aimed in camera view direction.
0x00C61C501549CSkillEffect__init_portal_ring_effectInitializes portal ring effect (ring_blue.tga). Plays EF_ReadyPortal.wav every 14 frames. Creates effect type 0x3F on frame 0 with scale 5.0. Sets up 3 concentric rotating rings (layers at offsets 0x3E8, 0x49C, 0x550) with different speeds and sizes. Color flags all set to 1 for full white trail history. Duration 100 frames.
0x00C622601373CSkillEffect__init_white_ring_periodic_effectInitializes white ring periodic effect (ring_white.tga). Creates effect type 0x3F every 100 frames. Same triple-ring structure as portal ring but with scale 16.0 and white color. Rings rotate at same speed with different height offsets and trail colors all set to 1.
0x00C627C0514CSkillEffect__update_movement_trail_effectUpdates movement trail effect based on entity displacement. Tracks entity position every N frames (12 for param_2=1, 7 otherwise). When position changes, computes direction angle via atan2 approximation using sin lookup table, adds 135-degree offset. param_2=1: spawns trail effect IDs 0x146/0x147. param_2=2 with speed threshold: spawns IDs 0x1BF/0x1C0. Resets counter when wrapping past 2*N.
0x00C629D0389CSkillEffect__init_magic_blue_ring_with_flagInitializes blue magic ring with color flag (magic_blue.tga). Creates effect type 0x4B on frame 0 with scale 4.0. 4 particles at 90-degree intervals with size 2.0, distance 1.0. Similar to init_magic_blue_ring but sets color flag to 1 for each particle and uses no scale speed.
0x00C62B601746CSkillEffect__init_multi_ring_ground_effectInitializes multi-ring ground effect. Creates effect type 0x1E on frame 0 with minimum duration 56. param_4 controls base scale (1-6: 8-12, 15: 7, 20-23: 24-27, 31: 31, 42-50: 42-50). Sets up 5 concentric rings with different angle offsets (param_2+135, +90, +45, +0) and sizes. Trail buffers per ring. If duration < 61, applies stagger delay (-5 frames per ring).
0x00C63240438CSkillEffect__init_colored_fog_effectInitializes colored fog/aura effect (white02.bmp). Creates effect type 0xAC with 0x200 flag (permanent). Stores RGB color (param_3, param_4, param_5) in effect field 0x1C0 and variant byte (param_2) in field 0x45A. Single particle, height offset below entity.
0x00C634001107CEffect__init_multi_ring_effectInitializes a multi-ring visual effect (type 0x79). Creates effect object, loads texture from param_2, sets up 4 particle layers with different sizes (13.0, 11.0, 9.0), angles (0x13b), and scaling. Copies position from offset 0x180-0x194. Initializes sub-particle arrays within each layer. Only creates if field 0x178 == 0.
0x00C63860423CEffect__init_scatter_particle_effectInitializes a scatter particle effect (type 0x78). Creates effect with no texture count (0x204=0). Sets up 4 particle layers at randomized Y-heights (rand()%5 offset from base). Each particle positioned at object XZ with varying Y. Uses param_2 as boolean flag stored in each particle's 0x450 field.
0x00C63A10842CEffect__init_blue_ring_effectInitializes a blue ring visual effect (type 0x79). Loads "effect_ring_blue.tga" texture. Creates 3 ring layers with decreasing sizes and increasing rotation angles (0, 90, 180 degrees). Each ring has angle 0x13b, scale based on layer index. Stores lifetime 99 in each layer. Only creates if field 0x178 == 0.
0x00C63D60727CEffect__init_directional_particle_effectInitializes a directional particle effect (type 0x7a). Loads texture from param_2. Sets up 4 particles with behavior determined by param_3 (0-5): types 0/1=large scale (25.0), types 2/3=small scale (6.0), types 4/5=large with type 3 flag. Even/odd param_3 controls horizontal flip. Particles positioned at object XYZ.
0x00C64040671CEffect__init_random_scatter_effectInitializes a random scatter effect (type 0x7d). Loads texture from param_2. Creates 4 particles with randomized scale (rand()%11 * multiplier + offset) and random speed (rand()%21). Particles positioned at object XYZ with Y offset. param_3 controls horizontal flip (0 or 1). Stores type flag 1 in each particle.
0x00C642E0686CEffect__init_spread_particle_effectInitializes a spread particle effect (type 0x7e). Creates 4 particles with scale 20.0. Position offset based on field 0x178 (0-4): 0=center, 1=+X offset, 2=-X offset, 3=+Z offset, 4=-Z offset. Random Y offset (rand()%5) and random rotation (rand()%360). Max 5 instances (0x178 < 5).
0x00C64590561CEffect__init_basic_particle_effectInitializes a basic particle effect (type 0x77). Loads texture from param_2. Creates 4 particles at object XYZ with randomized Y height (rand()%5), scale 20.0. Simple particle setup with sequential indices and 0.8 speed. No special flags or type modifiers.
0x00C647D0527CEffect__init_dual_layer_effectInitializes a dual-layer visual effect (type 0x4c). Loads texture from param_2. Sets up only 2 particle layers (not the usual 4). Both layers have size 10.0, scale 2.0, negative Y speed (-8.0), and alpha 200. No rotation. Field 0x604 and 0x550 disabled. Scale factor 4.0 at offset 0x318.
0x00C649E0690CEffect__init_3d_rotating_effectInitializes a 3D rotating visual effect (type 0x28). Has special 99999998 reset logic. Only creates on even frame counts and frame < 300. Random size (2-3x multiplier), random rotation on all 4 axes (0-360 each), random XZ position offset (0-300 range centered). Sets bounding box to 200.0. Plays random animation (0-2) with action 0x24.
0x00C64CA016CEffect__set_field_460Simple setter: stores param_2 into this->field_0x460.
0x00C64CB0793CEffect__init_shield_boomerang_effectInitializes shield boomerang visual effect (type 0x74). Plays "effect_cru_shield_boomerang.wav" sound on first frame. Creates effect at frames 0, 3, 6, 9, 12. Single particle with scale 5.0, random rotation (0-360), moves in sine/cosine direction. Enables 4 particle layers (0x3e8, 0x49c, 0x550, 0x604).
0x00C64FD0801CEffect__init_shield_boomerang_projectileInitializes shield boomerang projectile effect (type 0x2a). Plays "effect_cru_shield_boomerang.wav" sound. Calculates distance to target (0x180-0x188) using sqrt. Creates single projectile with scale 7.0, alpha 255, speed 2.0. Computes Y velocity based on distance ratio. Enables 4 particle layers. Only on frame 0.
0x00C65330519CEffect__init_purple_slash_effectInitializes purple slash visual effect (type 0x5c). Loads "effect_purpleslash.tga" texture. Creates 4 particles with scale 20.0, randomized Y height (rand()%5), negative start frame (-28 + rand()%6). param_2 stored as rotation angle. Speed 0.8 per particle.
0x00C65540728CEffect__init_sonic_wave_effectInitializes sonic wave visual effect (type 0x56). If param_2==1, loads 4 textures: sonic_wave1-4.tga. Otherwise loads single purpleslash.tga. Creates 4 particles with scale 20.0, randomized Y, negative start frame. param_2 stored as type flag in each particle's 0x451 field. Copies target position from 0x180-0x188.
0x00C65820687CEffect__init_rotating_3d_particleInitializes a rotating 3D particle effect (type 0x6d). Sets render flags with bitwise OR (1\|5). Single particle with scale 2.5, random rotation on all 4 axes (0-360). Stores target Y in 0x424 field. Computes initial position using trigonometric lookups. Only creates if field 0x178 == 0.
0x00C65AD01190CEffect__init_orbiting_particle_effectInitializes orbiting particle effect (type 0x6f). Creates 2 particles (loop to 0x168) each with random scale (rand()%11) and random rotation on 8 axes (0-360 each). Particles orbit around target position (0x180-0x188). Size 0.07 base. param_3: 2=scale 4.0, 3=random scale 1-3, else 0.
0x00C65F80615CEffect__init_spinning_slash_effectInitializes spinning slash effect (type 0x5b). Creates 4 particles with negative random start frame (0-20), random scale (rand()%11), size 5.0, negative Y speed (-10.0). Rotation based on param_3 + 45-degree increments. Random lifetime (180+rand()%91). Speed 3-5 (random).
0x00C661F0619CEffect__init_expanding_slash_effectInitializes expanding slash effect (type 0x4d). Similar to spinning slash but with larger scale (14.0) and negative Y speed (-14.0). param_4==1 sets global scale to 10.0, else 4.0. Creates 4 particles with random rotation, alpha 100, lifetime 180+rand()%91. Speed 3-5 random. Rotation offset by param_3 + 45-degree increments.
0x00C66460582CEffect__init_ground_circle_effectInitializes ground circle effect (type 0x67). Single particle with size 40.0 (or 14.0 if param_3==10), scale 2.0, random rotation, Y speed 50.0 (or 70.0), XZ speed 5.0. param_3 controls subtype: 10=smaller with flag 1, 2=flag 10, other=flag 0. Stores 10 in field 0x450.
0x00C666B01490CEffect__init_elemental_summon_effectInitializes elemental summon effect (type 0x55). param_2 selects subtype (0-4=different elements, 10=special, 11=special). Loads different model+texture pairs per subtype. At frame 0x41 and 0x42, creates blue ring sub-effects (type 0x4b) with "effect_ring_blue.tga". Plays animation action 0x10 via vtable. Some subtypes use render flag 0x200.
0x00C66C90715CEffect__init_blue_ivy_projectileInitializes blue ivy projectile effect (type 0x61). Loads "effect_blue_ivy.bmp" texture. Calculates distance to target using sqrt. Scale based on field 0x174 * multiplier + offset. Speed 2.0 with Y velocity computed from distance ratio. Start frame -15. Alpha 5. Enables 4 particle layers.
0x00C66F60839CEffect__init_blue_ivy_projectile_with_soundInitializes blue ivy projectile with sound effect (type 0x2a). Same as init_blue_ivy_projectile but plays a positional sound via CSoundMgr__play_sound_from_resource on creation. Uses "effect_blue_ivy.bmp" texture. Calculates distance to target, sets Y velocity from ratio. Start frame -15, alpha 5, speed 2.0. Enables 4 particle layers.
0x00C672B0483CEffect__init_falling_particle_effectInitializes falling particle effect (type 0x2c). Creates 4 particles with negative start frame (-10 to -34), scale -10.0 (falling), Y speed 3.0. Random rotation on two axes (0-360). Speed 0.7. Subtracts height offset from Y position. param_3 stored as type flag, 0x18 stored as sub-flag per particle.
0x00C674A0735CEffect__init_thunder_center_effectInitializes thunder center effect (type 0x2d). Loads "effect_thunder_center.bmp" texture. Creates 4 particles at target position (0x180-0x188) with random start frame (-40 to -30), random scale (rand()%16 * 0.4 + 0.1). Two random speed components for X/Z drift. Type flag 2 stored per particle.
0x00C67780483CEffect__init_falling_particle_effect_variantVariant of falling particle effect (type 0x2c). Similar to init_falling_particle_effect but with different parameters: start frame -20 to -29, scale -10.0, Y speed 2.0, speed 1.0. Stores 0x10 as sub-flag (vs 0x18 in the other variant). param_3 stored as type flag.
0x00C679701210CEffect__init_teleportation_ring_effectInitializes teleportation ring effect (type 0x39). Plays "effect_EF_Teleportation.wav" sound. Creates 6 ring layers with graduated sizes based on param_3 multiplied by 60-degree increments. Each ring has different angle, rotation speed, and alpha values. Scale factor 4.0. Zeroes sub-particle arrays. Stores ring size as char in field 0x451.
0x00C67E30976CEffect__init_alpha_center_projectileInitializes alpha center projectile effect (type 0x45). Loads "effect_alpha_center.tga". Calculates angle and distance to target. Creates 4 particles with random start frame (-45 to -25), random XZ offset (0-100 range), random speed. Uses sin/cos lookup tables for directional movement. Max 4 instances (field 0x178 < 4). Speed multiplier 2.0.
0x00C682001014CEffect__init_alpha_center_multi_projectileInitializes alpha center multi-projectile effect (type 0x45). Loads "effect_alpha_center.tga". Similar to init_alpha_center_projectile but allows up to 9 instances and has wider random start frame range (-30 to -140). Randomized size and Y speed. Speed multiplier 3.0.
0x00C686001257CEffect__init_cloud_projectile_with_hitsInitializes cloud projectile effect (type 0x45) with hit sounds. Loads "effect_cloud11.tga". Creates particles on first 2 frames. At frames 10, 20, 30 plays hit sounds ("EF_hit2.wav" and "EF_hit4.wav"). Uses angle computation and sin/cos positioning like other projectiles. Size 0.25 base, random Y speed.
0x00C68AF043CEffect__trigger_global_effect_0xa5Triggers a global effect (ID 0xa5) via the global vtable on first frame. Passes param_2 as the subtype parameter. Only fires when field 0x178 == 0.
0x00C68B201017CEffect__init_arrow_projectile_effectInitializes arrow/projectile effect (type 0x35). param_3 controls subtype: 0=medium speed, 1=with level, 2=slow large, 3=slow with lifetime 330, 10/11=delayed start at frame 5/10. Calculates distance to target and sets speed accordingly. Scale varies: 2=2.0, 3=4.0, else=3.0. Alpha 255. Enables 4 particle layers. Computes travel duration from distance/speed ratio.
0x00C68F201057CEffect__init_ambient_3d_object_effectInitializes ambient 3D object effect (type 0x7b). Uses player position (from get_field4_if_mode1). param_2 selects texture: 0/1=specific textures, 2=random from 3 options. Creates 4 particles with random XZ offset (-80 to +80), height from terrain interpolation. Random scale (rand()%11 * 0.1 + 2.0), random rotation on 4+1 axes. Type flag 7.
0x00C69350713CEffect__init_concentric_ring_effectInitializes concentric ring effect (type 0x1f). Creates 4 ring layers with 90-degree rotation spacing, size 25.0, angle 360 degrees. Sets bounding box to 99.0. Each layer has incrementing scale offset. param_3 stored as subtype in field 0x3ec. Zeroes all sub-particle arrays. Alpha 80.
0x00C69620740CEffect__init_concentric_ring_effect_variantVariant of concentric ring effect (type 0x1f). Similar to init_concentric_ring_effect but param_3==2 uses smaller size (15.0) and different alpha (70). param_3==3 sets extra scale 17.0 at 0x318. Each ring has 90-degree spacing, angle 360, zeroed sub-particles. param_3 stored as subtype.
0x00C69910493CEffect__init_valentine_model_effectInitializes valentine model effect (type 5). Plays "effect_vallentine.wav" sound. param_2 selects model: 2/3/4=different models with varying render flags. Default loads generic model with action 0x10. Type 4 sets render flag 0x200. Sets animation speed 2 and copy transform. Uses 0x1DC render flag 0x200.
0x00C69B001752CEffect__init_heal_cloud_effectInitializes heal cloud effect (type 0x3e). Loads "effect_cloud11.tga". Creates multi-layer ring effect with 4 layers: size 8.0 with angle 90, size 8.0 with angle 70, size 8.0 with angle 50, size 8.0 with angle 30. Each layer has different sub-particle sizes (3.0, 2.5, 2.0, 1.5). Plays "heal_effect.wav" sound. Scale 4.0.
0x00C6A1E04603CEffect__init_warp_portal_effectInitializes warp portal effect. Very large function with multiple phases: frame 0=creates alpha_down particle effect (type 0xc) with lifetime 99999999, frame 1=creates 4-ring type 0x41 effect with param_3-dependent scale, frame 2=second ring set. Has 99999998 reset logic. Also spawns secondary particle effects (type 7) every 10 frames with random positioning and rotation.
0x00C6B3E0917CEffect__init_waterfall_effectInitializes waterfall visual effect (type 0x4f). Loads 3 waterfall textures (waterfall11-13 or waterfall31-33 based on param_5). Creates particles with decreasing sizes (80, 67, 54...) that terminate when size < 29. Each particle has alpha 80 and param_3 stored as type. param_4 controls scale offset (0=+36, 1=+18). Fills speed arrays with graduated values.
0x00C6B7801979CEffect__init_water_splash_effectInitializes water splash effect (type 0x50). Randomly selects between "effect_waterp1.tga" or "effect_freeze_a_small.bmp" texture. Creates 4 particles with randomized 3D velocity, random rotation on 4 axes. param_2=axis swap flag (1=swap X/Z), param_3=spread control (0=wide +-22, 1=narrow +-11). Scale 0.05, scale factor 4.0. Type flag 2.
0x00C6BF401873CEffect__init_whitelight_particle_effectInitializes whitelight particle effect (type 0x82). Loads "effect_whitelight.tga". Creates 4 particles with randomized 3D velocity, random rotation on 4 axes. param_2: 0=random spread, 1=centered with only first particle active, 2=extra speed flag. Has 99999998 reset logic. Scale 0.15, size 2.4. Render flags 1\|5.
0x00C6C6A01223CEffect__init_directional_trail_effectInitializes directional trail effect (type 0xaa). Created every 10 frames for first 30 frames. Creates 4 particles with random scale, angle computed toward target. Each particle gets random rotation offsets clamped to 0-360. param_3==3 uses wider random scale range. Velocity based on XZ offset to target. Type flag stored from param_3.
0x00C6CB70624CEffect__init_ground_aura_effectInitializes ground aura effect (type 0x93). Single particle with param_3-dependent scale: 1/2=21.0 with type 6/7, else=13.0 with type 5. Zeroes sub-particle arrays. Alpha 0 initially. Only on frame 0.
0x00C6CDE01238CEffect__init_bubble_ring_effectInitializes bubble ring effect (type 0x9e). Loads 27 animated textures "effect_W_bubble_01-27.tga". Creates 5 concentric rings with graduated sizes (30, 29, 28, 27, 27) and angles (180, 270, 0, 45, 90). param_2 offsets each ring's alpha. param_4==1 sets global scale 4.0. Min lifetime 100. Alpha 80 per ring.
0x00C6D2C01484CEffect__init_bubble_ring_effect_variantVariant of bubble ring effect (type 0x90). Loads either 27 "W_bubble" textures (param_4<2) or 29 "W_A_top" textures (param_4=2/3). Creates 5 concentric rings like init_bubble_ring_effect but with slightly larger scale (4.1). param_4==1/3 sets global scale. Min lifetime 100. Short lifetimes get staggered start frames (-5 increments).
0x00C6D8901325CEffect__init_spell_circle_effectInitializes spell circle effect (type 0x95). Plays "effect_EF_BeginSpell.wav". param_4==10 loads 4 "YBfire" textures, else loads 27 "W_bubble" textures. Creates 5 concentric rings with size 23.0, angles (180, 270, 0, 90), varying alpha (75, 63, 52, 40). Min lifetime 120. param_4 stored as subtype. Scale 4.3.
0x00C6DDC01213CEffect__init_severe_rainstorm_effectInitializes severe rainstorm effect (type 0xad). Plays "effect_EF_BeginSpell.wav". Loads 9 animated "new_severerainstorm" textures. Creates 5 concentric rings with size 20.0, angles (0, 90, 180, 270). param_5 used as scale for all rings. Min lifetime 120. param_4 stored as subtype. Alpha values 60, 55, 65, 70.
0x00C6E28068CEffect__init_dual_bubble_ring_effectWrapper that creates two bubble ring effects with different alpha offsets (45 and 25). Calls init_bubble_ring_effect_variant twice with param_4=0. Only on first frame.
0x00C6E2D0146CEffect__init_ybfire_spell_effectInitializes YBfire spell effect. Plays "effect_EF_BeginSpell.wav" sound via CSoundMgr, then calls CSkillEffect__init_ground_aoe_particle with "effect_YBfire_01.bmp" texture and type 6. Only on first frame (field 0x178 == 0).
0x00C6E370887CEffect__init_animated_ground_effectInitializes animated ground effect (type 0x8f). param_3 selects texture set: 1=13 torch_red textures, 2=51 W_c textures, else=9 dust textures. Single particle with alpha 200, random rotation. param_3==2 uses custom scale/angle from fields 0x13c/0x140. Otherwise scale 18.0. Y speed -2.0.
0x00C6E6F0497CEffect__init_dual_texture_ground_effectInitializes dual-texture ground effect (type 0x94). Loads 2 textures from param_2 and param_3. Single particle with custom scale from field 0x13c (min 2.0, else 20.0). Rotation from field 0x140 (clamped 0-360, default 45). Random rotation angle, Y speed -2.0.
0x00C6E8F0498CEffect__init_hovering_particle_effectInitializes hovering particle effect (type 0x9c). Single particle with scale 6.0, alpha 120, lifetime angle 45. Positioned at object XYZ with Y offset. Random rotation (0-360). param_3 stored as subtype in field 0x451.
0x00C6EAF0817CEffect__init_line_beam_effectInitializes line beam effect (type 0x38). Loads "effect_line3.tga" (param_2<10) or "effect_line3y.tga" (param_2>=10). Creates 4 particles with scale 100.0. param_2%10 controls Y direction: 0=downward, 1=upward. Random size and speed. Angle computed toward target. Type flag varies (30-32 for param_2<10).
0x00C6EE30862CEffect__init_line_beam_effect_extendedExtended line beam effect (type 0x38, render flag 0x201). Loads texture from param_3. Creates 4 particles with scale 100.0, random size, and angle toward target. Type flags vary by param_2 range: 10-19=types 10-12, 20-29=types 33-35, 30-39=types 36-38. Randomized height and speed.
0x00C6F190787CEffect__init_yellow_line_beam_effectInitializes yellow line beam effect (type 0x38, render flag 0x201). Loads "effect_line3y.tga". Creates 4 particles with scale 100.0. Similar to init_line_beam_effect but with render flag 0x201 and type flags 0-2 (random). Angle computed toward target.
0x00C6F4B0608CEffect__init_directional_line_beamInitializes directional line beam effect (type 0x38, render flag 0x201). Loads texture from param_3. Creates 4 particles with scale 100.0. Direction controlled by param_2 (LSB: 0=positive, 1=negative Y). Type flags 125-127 (random). Angle computed toward target. Only creates if param_3 is non-null.
0x00C6F710444CEffect__init_wide_beam_effectInitializes wide beam effect (type 0x9a). Single particle with scale 100.0, Y speed 50.0, size 5.0, height 80.0. Angle computed toward target. param_2 stored as type flag. Loads texture from param_3.
0x00C6F8D0830CEffect__init_multi_orb_effectInitializes multiple orbiting 3D objects (type 0x8a). Creates 1-5 orbs based on field 0x180 (clamped to 1-5). Each orb has random rotation on 6 axes, random angular offset, Y speed -15.0, scale 1.5. Loads 2 textures (second texture conditional on param_2==10). param_2 stored as type flag. Orbs spaced 72 degrees apart.
0x00C6FC10885CEffect__init_multi_thunder_orb_effectInitializes multiple thunder orbs (type 0x91). Creates 1-5 orbs based on field 0x180 (clamped 1-5). Loads "effect_thunder_center.bmp" and "effect_freeze_a.bmp" textures. Each orb has random rotation, Y speed -15.0, scale 1.0. Sub-particles per orb: staggered start frames (-20 increments), random rotation, alpha 200, size 3.0.
0x00C6FF901346CEffect__init_skill_ring_effectInitializes skill ring effect (type 0x8b). Creates 5 concentric rings with param_4-dependent sizes: 2=25/24/23/22, 22=15/14/13/12, else=20/19/18/17. Scale 4.1, alpha 80 per ring. param_2 offsets each ring's alpha by 45-degree increments. Min lifetime 56. Short lifetimes get staggered start frames (-5 increments). Zeroes sub-particle arrays.
0x00C704E01035CEffect__init_staggered_ring_effectInitializes staggered ring effect (type 0x84). Creates rings on frames 0 and 10 with render flags 1\|5. Each set has 4 particles with staggered start frames (-20 increments), random rotation, size 10.0, alpha 100, radius 10.0. param_3 stored as float in each particle. Scale 1.0.
0x00C708F0134CEffect__play_cloaking_soundPlays assassin cloaking sound effect ("effect_assasin_cloaking.wav") on first frame, then calls fade function with parameters (50, 0, 0, 0). Clears field 0xa4 (visibility flag).
0x00C70980449CEffect__init_expanding_circle_type_a3Initializes expanding circle effect (type 0xa3). Creates 4 particles with scale 50.0, alpha 255. Rotation based on frame index * 4 + particle index, spaced at 30-degree intervals. Y speed -5.0. Max 3 instances (field 0x178 < 3).
0x00C70B50466CEffect__init_expanding_circle_type_a4Initializes expanding circle effect (type 0xa4). Like type 0xa3 but with scale 100.0, size 15.0, alpha 255. Rotation spaced at 30 degrees with frame-based offset. Y speed -5.0. Max 3 instances.
0x00C70D30468CEffect__init_expanding_circle_type_a5Initializes expanding circle effect (type 0xa5). Like type 0xa4 but starts with scale 0 and grows. Size 15.0, alpha 0. Rotation spaced at 30 degrees. Y speed -5.0. Zeroes field 0x424. Max 3 instances.
0x00C70F10420CEffect__init_expanding_circle_type_a2Initializes expanding circle effect (type 0xa2). Scale 100.0, alpha 255. Rotation spaced at 30 degrees with frame-based offset. Y speed -5.0. Max 3 instances. Similar to type 0xa4 but no size field set.
0x00C710C0922CEffect__init_sparkle_particle_effectInitializes sparkle particle effect (type 0x10). Projects world position to screen coordinates. Creates particle with random rotation, distance 3-9, lifetime 50. Random color tint (255 or 140 per RGB channel). Loads "effect_ac_center2.tga" texture. Uses X rotation of -90 degrees. Bounding box 200.0, size 0.015. Fade-in at last 20 frames. Even frames only.
0x00C714601014CEffect__init_meteor_impact_effectInitializes meteor/tetravortex impact effect (type 0x8c). Plays "wizard_meteo.wav" at frame 0, plus secondary "blastmine" or "tetravortex" sounds at frames 10/20/50/80. Creates effect every 25 frames (up to frame 80). param_2==4 loads 8 "tv_1-8" textures with element-specific type flags (0x3ca-0x3cd). Custom scale from field 0x13c (default 30.0). Alpha 200. Random rotation.
0x00C719E0636CEffect__init_ground_marker_effectInitializes ground marker effect (type 0xa0). Single particle with param_3-dependent scale: 30/31=36.0 with type 19/21, else=5.0 with type 2. Positioned at object XYZ. Lifetime angle 135. Alpha 0. Random rotation. param_3 stored as type in field 0x454.
0x00C71C60576CEffect__init_orbiting_model_effectInitializes orbiting model effect (type 0xa7). Loads different models based on param_2 (9/10=one set, 20=another). Creates 4 particles orbiting at distance 2.0 using sin/cos positioning with 45-degree spacing per frame. Y offset -5.0, speed 0.3. param_2 selects type flag (0/1/4). Max 2 instances. Render flag 0x200.
0x00C71EA0755CEffect__init_directional_model_attackInitializes directional model attack effect (type 5). Creates on even frames (0,2,4,6). Computes rotation toward target using angle calculation, applies rotation matrix. Selects animation action (0/2/4/6) based on direction angle quadrant. Render flag 0x100 (0x200 on frame 0). Lifetime 20. Speed computed from target distance. Scale 1.0.
0x00C721A01978CSkillEffect__init_fireball_phased_mesh_aInitializes fireball phased mesh effect variant A. Plays EF_FireBall.wav on frame 5. Creates 3D mesh effect (type 5) in 3 phases based on frame: 0-3=warm red (55,55,255), 6-9=medium red (30,30,255), 12-15=hot red (5,5,255). Each phase calculates Y-axis rotation from entity angle, applies matrix transform. Duration scales by frame offset. Uses 0x120 render flags.
0x00C729601978CSkillEffect__init_fireball_phased_mesh_bInitializes fireball phased mesh effect variant B. Same structure as variant A but with different colors: phase 1=(155,155,255), phase 2=(130,130,255), phase 3=(105,105,255). Blue-tinted fireball variant. Plays EF_FireBall.wav on frame 5.
0x00C73120853CSkillEffect__init_directional_mesh_effectInitializes directional mesh effect (type 5) with direction-based animation selection. Activates on even frames 0-6. Computes angle from entity to target, adjusts by camera rotation. Selects animation based on angle quadrant: 0-89=anim 0, 90-179=anim 6, 180-269=anim 4, 270-359=anim 2. Frame 0 gets 0x200 flag (scale override). Green-tinted (105,255,105). Duration based on frame offset.
0x00C734B0246CEffect__check_should_render_effectChecks whether this effect should be rendered. Checks game setting option 8 and field 0x11c98. For effect ID 0xe8 (special map effect), checks BGM map, model loading, and other conditions. For other effects, checks if the attached object has a model loaded and is visible. Returns 0 to skip rendering, 1 to render.
0x00C735B01424CSkillEffect__init_3layer_persistent_ringInitializes a 3-layer persistent ring effect (type 0x3C). Loads texture from param_2. Scale 16.0. Layer 0: radius 74.0, scale 1.3, tilt 90, 3080-frame lifetime. Layer 1: radius 77.0, scale 1.0, tilt 90. Layer 2: radius 80.0, scale 0.7, tilt 90. All layers have full 360-degree rotation and random initial angles. Long-lived ground effect.
0x00C73B40164CEffect__init_white_ring_spell_effectInitializes white ring spell effect. Plays "effect_EF_BeginSpell.wav" with Y offset -100. Creates two ring effects via FUN_00c62b60 using "effect_ring_white.tga" with alphas 45 and 25, subtype 15. Only on first frame.
0x00C73BF01250CSkillEffect__init_heal_sparkle_multiInitializes multi-particle heal sparkle effect (type 0x3B). Mode 0: plays heal_effect.wav at -40.0 height. Mode 1: plays different sound at -80.0 height. Creates 4 particles every 4th submap frame. Loads pok1/pok3 textures (or custom for mode 2). Particles scattered randomly around entity with random scale, rise speed, and rotation. Mode 2 uses larger scatter radius. Sets brightness/growth mode per param_3.
0x00C740E0682CSkillEffect__init_bubble_trail_effectInitializes a bubble trail effect (type 0x92). Loads 13 W_bubble textures (even numbered 02-28). Creates 4 particle slots with staggered frame offsets (-8 increments). Each bubble: computes facing angle to target +195 degrees, radius 30.0, 315-degree rotation range. Bubbles decrease in scale and tilt along trail. param_3=1 adds Y offset. Loads ac_center2.tga.
0x00C74390952CSkillEffect__init_screen_projectile_effectInitializes a screen-space projectile effect (type 0x10). Projects entity world position to screen coordinates. Creates one particle per odd submap frame. Random angle, random distance (3-9), -90 degree X rotation. Slow fade (0.015), random scale (30-89/40). Height 200.0 with 20-frame fade-in. param_2 selects color: 2=random blue tint, else=random green tint. Loads ac_center2.tga.
0x00C747501033CSkillEffect__init_entity_facing_electric_effectInitializes an entity-facing electric chain effect (type 0x87). Loads elec1.tga. Creates 4 chains with progressive timing offsets. Each chain faces the entity's rotation direction minus 30 degrees. Random scale, initial position at entity with Y offset. Clears 3 sub-segment arrays per chain. Uses param_3 as chain lifecycle parameter.
0x00C74B6095CEffect__dispatch_effect_type_0x6dDispatches an effect via vtable call with type 0x6d (109) and subtype 0xa4 (164). Calls vtable[2] with extensive parameters, then calls FUN_00cadd60 with (0xa4, 0, 0, 0). Does not return.
0x00C74BD0540CSkillEffect__init_dual_layer_billboard_effectInitializes a dual-layer billboard particle effect (type 0xA1). Billboard render mode (flags 1\|5). Loads texture from param_2. Scale varies by param_3: 1=15.0, 2=17.0, 3=18.0, default=4.0. Creates 2 active layers with same scale, tilt angle 0 and 180, same initial angle 200, and slow shrink rate (-1.0). param_3=3 uses larger height value.
0x00C74DF0599CSkillEffect__init_spherical_scatter_effectInitializes a spherical scatter particle effect (type 0x9F). Loads texture from param_2. Creates 4 particles scattered on a sphere using sin/cos LUTs for XZ positioning. Each particle: random negative frame offset (stagger), scale 4.0, random azimuth and elevation angles, fall speed -5.0, growth rate 0.5. Uses param_3 as sub-type flag.
0x00C750501411CSkillEffect__init_ring_scatter_multi_modeInitializes a multi-mode ring scatter effect (type 0x89). Scale varies by param_3 (1-3=fixed, 10=random 4-8, 11=5.0, 12=random 4/40/41). Creates 4 slots with 90-degree separation. Mode 11: tight radius with staggered timing. Mode 12: large radius with random timing. Default: radius 120.0 with random distance. Each slot gets random circular XZ offset, random scale, and 7 sub-segments cleared. Stores delta to target in slot 3.
0x00C755E01236CSkillEffect__init_ring_scatter_with_directionInitializes a ring scatter effect with direction delta (type 0x89). Very similar to init_ring_scatter_multi_mode but stores direction vector (target - source) in each slot's extra position buffer (0x490/0x494/0x498). Scale varies by param_3, modes 10/11 have special behavior. 4 slots with 90-degree separation, progressive offsets. Used for directional ring effects.
0x00C75AC0605CSkillEffect__init_periodic_scatter_particlesInitializes periodic scatter particles (type 0x9D). Fires every 10th submap frame (0x178 % 10 == 0), up to submap 1000. Creates 4 particles with random radius, random scale, random rotation angle, random height offset (-80 to -59), random XZ speed (0-32), random sub-type (0-2). Used for ongoing environmental scatter effects.
0x00C75D201400CSkillEffect__init_periodic_white_ring_3layerInitializes periodic 3-layer white ring effect (type 0x3F). Fires every 100th submap frame. Loads ring_white.tga. Scale varies by param_2 (1=8.0, 2=6.0, default=4.0). 3 layers with progressive height offsets (-10, -20), full rotation, 100-frame lifetime. Sub-segments initialized to 1. Stores mode 4 in layer 3 extra field.
0x00C762A01406CSkillEffect__init_periodic_white_ring_scaledInitializes periodic white ring effect with scale from param_2 (type 0x3F). Fires every 100th submap frame. Very similar to init_periodic_white_ring_3layer but uses (float)(int)param_2 as initial scale. 3 layers with same structure. param_2=0x1D sets mode 5 in layer 3 extra, else mode 1.
0x00C76820958CSkillEffect__init_dual_orbit_particle_effectInitializes a dual-orbit particle effect (type 0xA6). Creates two particle systems: inner orbit (scale 6.0, tilt 205, fade rate 0.01) and outer orbit (scale 10.5, tilt 255, fade rate 0.015, growth 1.0). Each has 4 slots with angle offsets based on submap phase (submap*4 + slot)*45. Guard condition submap < 2. Fall speed -5.0 for both orbits.
0x00C76BE01663CSkillEffect__init_lightning_bolt_particleInitializes a lightning bolt particle effect (type 0x9B). Fires every 10th submap frame, max submap 30. Computes facing angle to target, stores direction delta. Creates single particle with random radius, random scale, 4 control points with random angle offsets (base angle +/- 45 degrees), amplitude 180.0. All angles clamped to 0-360 range. Uses param_3 as sub-type.
0x00C77260922CSkillEffect__init_snow_particle_effectInitializes snow particle effect (type 0x3B). Creates 4 particles every 8th submap frame, up to submap 100. Loads E9_snow03.tga and E9_snow02.tga. Particles scatter randomly around entity (radius 0-40, random angle). Random scale, random depth offset (0-30 below entity). param_3 sets brightness mode: 0=11, 1/2=1, 3=13.
0x00C77600679CSkillEffect__init_directional_bubble_waveInitializes directional bubble wave effect (type 0x92). Fires at submap frames 0, 20, 40. Loads texture from param_2. Creates 4 slots with staggered frame offsets. Each computes facing angle to target +195 degrees. param_3 selects radius: 0=larger (6.0), else smaller (5.0). Decreasing tilt and scale along slots.
0x00C778B0705CSkillEffect__init_rotating_3d_particleInitializes a rotating 3D particle effect (type 0x97). Billboard mode (flags 1\|5). Single particle with scale 2.5, Y target from param source. 4 random rotation angles (0-359), speed 5.0, sinusoidal drift using trig LUTs. Stores param_3 as sub-type. Position offset computed from sin/cos tables with negation.
0x00C77B80374CSkillEffect__init_skill_sprite_with_entity_dataInitializes a skill sprite effect (type 0xA8) that reads entity data. For skill ID 0x4D8: loads specific SPR/ACT, sets animation mode 8, billboard 0x209 flags. Copies entity fields 0x128 and 0x12C to effect extra data. Adjusts opacity (255 or 70) based on entity flag at 0x130. Resets submap counter on last frame.
0x00C77D00580CSkillEffect__init_orbital_particle_spriteInitializes orbital particle sprite effect (type 0x98). Guard submap < 10. Creates 4 orbital slots with scale 0.3, size 2.0. Each slot has 6 random rotation angles (0-359) and 6 random drift angles. Stores param_2 as sub-type. Loads SPR/ACT resource, sets animation mode 8 with billboard rendering (0x200 flag). Copies transform to particle array.
0x00C77F502786CSkillEffect__init_ground_sprite_scatterInitializes ground-level sprite scatter effect (type 0x99). param_2 controls many variants (0-15) with different sprites, scales, and spawn patterns. Creates particles at ground height (uses C3dAttr__GetInterpolatedHeight). Loads different sprite/act resources per variant (types 2-8 each load unique textures, type 9 uses star sprites, types 13-14 use special resources). Particles scatter around entity position with sin/cos table positioning.
0x00C78A401771CSkillEffect__init_buff_with_scattered_particlesInitializes buff effect with scattered particles. On first frame, plays EF_IncAgility (param_2==1) or EF_DecAgility (param_2==0) and creates main particle with texture from param_3 (SSO string). Calculates texture dimensions for scale. On even frames, creates secondary scattered particles (type 0x10) with ac_center2.tga. param_2==1 gives green tint (0,255,255), param_2==0 gives red tint (255,0,0).
0x00C79130615CSkillEffect__init_stacked_height_particleInitializes stacked-height particle effect (type 0x8d). Creates 4 particles with texture from param_2, each at different heights (offset -14, -10, -5, 0 from entity Y). All particles have staggered start delays (-10 apart), rotation speed 215, scale 20, display mode 2. param_3 stored for variant control. Particles anchor at entity XZ position.
0x00C793A01152CSkillEffect__init_cloud_projectile_effectInitializes cloud projectile effect (type 0x45) using cloud11.tga. Creates 4 particles during first 2 frames with direction toward target. Each particle has random starting delay, position offset, speed, and scale. Particles travel forward with randomized spread. Plays EF_hit2.wav at frame 10 and EF_hit4.wav at frame 20 for impact sounds. Saves start/current positions for interpolation.
0x00C798201122CSkillEffect__init_cloud_projectile_largeInitializes large cloud projectile effect (type 0x45). Very similar to init_cloud_projectile_effect but with larger spread, higher speed (100 vs variable), and different scale parameters. Creates 4 particles during first 2 frames targeting enemy position. Plays EF_hit2.wav at frame 10 and EF_hit4.wav at frame 20.
0x00C79CD0573CSkillEffect__init_rotating_4ring_particleInitializes 4-ring rotating particle effect (type 0x1f). Creates 4 particles from texture param_2, each at 90-degree intervals (0, 90, 180, 270). All have rotation speed 0x168, height 25, speed 80. Each ring has 21 sub-particles (0x15) zeroed out. Scale offset randomly between 2-3. Uses custom float conversion via FUN_00e628c0.
0x00C79F10598CSkillEffect__init_anchored_sprite_particleInitializes anchored sprite particle effect (type 0x88). Creates single particle from texture param_2 positioned at entity location. Scale 1.0, rotation speed 45, random initial speed offset. Particle anchors to entity XYZ position. Display mode 0, movement mode 1, display variant 1. Used for simple attached sprite effects.
0x00C7A1702586CSkillEffect__init_freeze_particle_systemInitializes a freeze/water particle effect system. Creates particle effect type 0x96 (150), loads either waterp1.tga or freeze_a_small.bmp randomly. Sets up 4 particles (0x2d0/0xb4=4) with randomized positions, velocities, angles, and sin/cos rotation transforms. Copies position from linked object at +0x138.
0x00C7AB90718CSkillEffect__init_water_effectInitializes a water skill effect (type 0x8E/142). Loads 4 sets of water textures: W_C_water (30 frames), W_B_water (30 frames), W_bubble (27 frames), W_A_water (30 frames) = 117 total texture slots. Sets initial water height and direction angle. Creates particle effect from linked object position at +0x138.
0x00C7B200225CEffectConfig__ctorConstructor for CEffectConfig structure. Initializes all fields to zero/defaults. Sets initial value to 0x100, scale factors to 1.0 (0x3f800000) for X/Y/Z at offsets 0x14-0x1c and 0x38-0x40. Zero-initializes position, rotation, and other parameters.
0x00C7B2F0184CEffectConfig__copy_ctorCopy constructor for CEffectConfig. Copies two 24-byte blocks from source, each containing a 16-byte data section followed by an 8-byte SSO string. Moves the SSO strings (transfers ownership) by clearing source string buffers after copy. Uses SEH frame for exception safety.
0x00C7B530444CEffectConfigList__push_backPushes a new CEffectConfig entry onto the vector. If at capacity, reallocates via FUN_00c7aed0. Otherwise copies two SSO strings from the input and increments the end pointer by 0x30 bytes. Uses SEH for exception safety during string construction.
0x00C7B6F0147CEffect__compute_perpendicular_directionComputes a perpendicular direction vector from the effect's orientation data at field 0x58. Uses vec3_normalize and vec3_cross_product to compute the perpendicular. Stores result in param_2 as (x, y, z) float triple. Used for effect positioning/orientation.
0x00C7B790436CEffectConfigList__trigger_map_effectTriggers a map-based visual effect based on param_2 type. Checks if existing effect is too recent (< 301 ticks). Maps param_2 to skill effect IDs: 0->0xe5, 1->0xe6, 2->0xe9, 3->0x203, 4->0x204, 5->0x250, 7->0x2b9, 8->0x2ba, 9->0x3b1, 10->0x415, 11->0x45b, 15->0x479. Creates the effect via CEntity__create_skill_effect on the player entity.
0x00C7B960112CEffect__dispatch_delayed_effect_0x14dDispatches effect 0x14d (333) with 301-frame delay check. If attached object exists, checks if current frame - start frame >= 301 before dispatching. Sets param_1 object reference to player. Does not return after dispatch.
0x00C7B9F078CEffect__dispatch_effect_0x12dDispatches effect 0x12d (301) immediately. Sets object reference to player entity. Does not return.
0x00C7BAA0112CEffect__dispatch_delayed_effect_0xa3Dispatches effect 0xa3 (163) with 301-frame delay check. Same pattern as dispatch_delayed_effect_0x14d but with different effect ID. Sets player reference. Does not return after dispatch.
0x00C7BB20112CEffect__dispatch_delayed_effect_0xa2Dispatches effect 0xa2 (162) with 301-frame delay check. Same pattern as other delayed dispatch functions. Sets player reference. Does not return after dispatch.
0x00C7BBB0381CEffectConfig__update_scale_animationUpdates the scale animation state of an effect config. Handles three modes: mode 1 (shrinking toward zero), mode 2 (blinking at offset 0x58 with counter up to 1000), default (growing toward target scale). Computes final scale as 1.0 - (1.0 - base_scale) * (1.0 - anim_scale) for X/Y/Z. Also checks if the associated effect object is still alive.
0x00C7BD40613CEffectConfigList__check_map_effectsChecks map name against effect config list entries and triggers corresponding map effects. Iterates through the config vector (0x30-byte entries). For matching map names, compares the effect type string: "snow" triggers effect 0xa2, "sakura" triggers 0xa3, "pokjuk" (fireworks) triggers 0x12d. Only triggers if option 8 (weather effects) is enabled in GameSettings. Throttles effect creation to every 300 ticks.
0x00C7C07025CEffect__extend_attached_object_lifetimeExtends the attached object's lifetime by 300 frames. If field 0x44 (attached object ptr) is non-null, calls vtable[0x4c] (set lifetime) with current field 0x178 + 300.
0x00CA937093CSkillEffectManager__scalar_deleting_dtor_00ca9370Scalar deleting destructor for CSkillEffectManager. Calls CSkillEffectManager__dtor, frees 0x11CB8 bytes if flag bit 0 set.
0x00CB42D934skill_effect_setup_and_createSets up stack parameters and delegates to CEntity__create_skill_effect. Mid-function entry point for skill effect creation.
0x00CB434E26skill_effect_store_xmm_and_createStores XMM0 position data into output buffer then calls CEntity__create_skill_effect. Mid-function skill effect wrapper.
0x00CCD8801742CEffect3DPlayer__ctorConstructor for CEffect3DPlayer. Calls CEffectPlayer ctor as base, sets vtable, initializes 6+ std::string members, multiple STL tree/list/map containers (allocated as linked list sentinel nodes), vector of bucket pointers for hash maps, and sprite action manager. Large object (~0x19a dwords). Sets float 1.0f at offset 0x18a (scale). Initializes hash bucket arrays with default 0x10 capacity.
0x00CCDF50148CEffect3DPlayer__init_string_fieldsInitializes three std::string member fields at offsets +0x24, +0x3c, and +0x54 in CEffect3DPlayer sub-structure. Sets each to empty string with SSO buffer capacity 0xf.
0x00CCDFF084CEffectItemDisplay__ctorConstructor for CEffectItemDisplay. Calls UIHyperlinkTextWidget base ctor, then sets vtable to CEffectItemDisplay's vtable at 011a0b18. The vtable's first entry is CEffectItemDisplay__scalar_deleting_dtor.
0x00CCEB80880CEffect3DPlayer__dtorDestructor for CEffect3DPlayer. Destroys all member containers in reverse construction order: linked lists, vectors, STL trees (string, 0x1c, 0x28, 0x20, 0x18 variants), 11+ std::string members, vector of strings, sprite action manager. Finally calls CEffectPlayer dtor as base class.
0x00CCEEF072CEffect3DTextWidget__set_base_vtableSets vtable pointers during destruction. First sets CEffect3DTextWidget vtable (011a0ce8), then falls back to base class vtable (0110c494). Called during destructor chain.
0x00CCF2C093CEffectPlayer__scalar_deleting_dtor_00ccf2c0Scalar deleting destructor for CEffectPlayer (size 0x160). Calls FUN_00ca8c40 (actual dtor), then frees memory if param_2 & 1.
0x00CCF32038CEffect3DPlayer__scalar_deleting_dtorScalar deleting destructor for CEffect3DPlayer (size 0x670). Calls CEffect3DPlayer__dtor, then frees memory if param_2 & 1.
0x00CCF35097CEffect3DTextWidget__scalar_deleting_dtorScalar deleting destructor for CEffect3DTextWidget (size 0x30). Sets vtable to CEffect3DTextWidget then base class, frees if param_2 & 1.
0x00CCF3C093CEffectBillboard__scalar_deleting_dtorScalar deleting destructor for CEffectBillboard (size 0x1b8). Calls FUN_00e4a9b0 (billboard dtor), then frees memory if param_2 & 1.
0x00CCF42093CEffectItemDisplay__scalar_deleting_dtorScalar deleting destructor for a UIItemDisplayWidget-based effect (size 0xc4). Calls UIItemDisplayWidget scalar dtor, then frees if param_2 & 1.
0x00CCF480170CEffect3DPlayer__list_push_backPushes an integer value onto a linked list at offset +0x1a4 of CEffect3DPlayer. Allocates 0xc-byte node, stores value at node+8, links before sentinel's next. Increments count at +0x1a8. Throws if count reaches 0x15555555 (list too long).
0x00CCF5A0223CEffect3DPlayer__send_pending_skill_packetsIterates through 6 skill slots (offsets +0x5ed..+0x5f2) and sends pending skill use packets. Maps slot index to skill sub-type: 0->0xd, 1->0xe, 2->0x12, 3->0x10, 4->0xf, 5->0x11. Packet ID 0xbb. Only sends if not in cutscene mode (offset +0x250 == 0). Decrements pending count per slot after send.
0x00CCF680106CEffect3DPlayer__handle_navigator_packetHandles navigator/NPC-related custom packet opcodes 900-0x392 for CEffect3DPlayer. 900/0x391: updates window with adjusted sub-type (0x29->0xb9, skips 0xae). 0x385: skill action. 0x386: applies children text. 0x387: stores value at +0x44. 0x388: parses two strings + 4 ints. 0x389: vtable method 0x18 x2. 0x38a: parses two strings. 0x38b: processes by sub-type 0x29/0xae. 0x38c: notifies window 0xcb. 0x38d: creates window. 0x38e: navigation request. 0x38f: NPC list from buffer. 0x390: destination from map coords. 0x392: close window.
0x00CCFCF0124CEffect3DPlayer__remove_and_dispatch_tree_entrySearches the tree at offset +0x65 for an entry with key matching param_2 (uint comparison). If found and key <= param_2 (and not sentinel), dispatches event 0x8c via vtable method 0x18 with the string value from param_3 and the tree node value. Then erases the node from tree and frees it (size 0x18).
0x00CCFD70409CEffect3DPlayer__update_entity_hp_trackingUpdates HP tracking state for an entity. If game option 0x128 is enabled: checks if entity HP percentage (DAT_01733684) is below 101 and not already in hashmap. If entity is in tracking hashmap and matches current state, toggles hashmap entry and shows UI notification. If HP crosses above 99% threshold, removes entity from the unordered_map (FNV-1a hash of entity ID) by unlinking the node.
0x00CCFFA0346CEffect3DPlayer__find_walkable_cell_nearbyTries to move destination (param_4/5) toward target (param_2/3) by 1 cell. Checks if the resulting cell is walkable using the ground map tile data (offset +0xcc->+0x30, tile types 1 and 5 are unwalkable). If not walkable, tries 8 adjacent cells from a direction lookup table. Returns once a walkable cell is found.
0x00CD0150428CEffect3DPlayer__find_walkable_cell_projectedProjects a position from source (param_4/5) toward destination (param_2/3) by param_8*5 units along the normalized direction vector. Converts to cell coordinates via FUN_00cd5230, then checks walkability. If not walkable, tries 8 adjacent cells from direction table. Same tile check as find_walkable_cell_nearby.
0x00CD030092CEffect3DPlayer__erase_tree_entry_by_keySearches the tree at offset +0x1c4 for node with key matching param_2. If found, erases the node from the tree and frees it (size 0x28). Tree key comparison is unsigned int at node offset +0x10.
0x00CD036030CEffect3DPlayer__check_target_entity_idChecks if the entity at offset +0x2d8 differs from param_2. Returns 1 if target entity ID is non-zero and != param_2, otherwise 0. Used to verify if the current target has changed.
0x00CD03801203CEffect3DPlayer__render_all_markers_on_minimapRenders all map markers on the minimap. Iterates trees at +0x1b4, +0x1bc, +0x1f0 to render different marker types. For +0x1b4 (always rendered): calls FUN_00cd2be0 with type 2. For +0x1bc: only renders if not already in +0x1b4 tree. For +0x1f0: renders with type 4 including text and position data. Also renders search store marker from global DAT_01738220/01738224 with "basic_interface\\search_store_bm" texture.
0x00CD0840343CEffect3DPlayer__update_blinking_markersUpdates blinking markers stored in tree at +0x1c4. First pass: removes expired markers (timeout after 15000ms if flag at node+7 is 0). Second pass: renders surviving markers with 500ms blink interval (renders only in first half of each second cycle). Uses timeGetTime for timing. Renders via FUN_00cd2be0 with type 1.
0x00CD09A0390CEffect3DPlayer__render_cursor_or_spriteRenders cursor or sprite action at the registered window position (DAT_01319ea4/a8). If action state at +0x308 is non-zero and no loading screen: For state 0x1d, updates registered window position. For state with resource path at +0x32c (+0x33c nonzero), loads .act and .spr files via CResourceMgr, renders sprite frame. Otherwise resets network state.
0x00CD0B30340CEffect3DPlayer__update_tooltip_displayUpdates and displays tooltip/info window at +0x41c. For tooltip types 0-4: creates or reuses window (type 0x4e), positions based on tooltip type (0: top-center, 1: top-center at screen top, 2: top-center at screen bottom-200, 3/4: centered). Updates text from string at +0x420, compares with cached value at DAT_0171f118. For types >=10 or -1, calls FUN_00cd1690 for alternative display.
0x00CD0DD01663CEffect3DPlayer__render_minimap_overlayRenders the full minimap overlay when DAT_01457840 is set. Calculates viewport bounds from camera and screen dimensions. Renders minimap background texture, player arrow (map\\map_arrow.bmp). Iterates tree at DAT_01738260 to render/cull map pins (decrements lifetime, removes expired). Renders boss monster marker if +0x5cc flag is set (map\\bossmonster.bmp). Renders town/warp markers from +0x68 string data. Calls render_all_markers_on_minimap and update_blinking_markers for marker layers.
0x00CD16901430CEffect3DPlayer__update_advanced_tooltipHandles advanced tooltip display modes (types 10-14 and -1/11). For type -1 with no text: closes all windows in the tooltip string tree at +0x5dc. For type -1 with text: removes matching entry from tree. For types 10-14: creates numbered windows (0xd8+), manages tooltip tree entries, positions windows by type (10: centered, 12: top-left, 13: top-center, 14: top-right, -1/11: restore windows). Compares text with DAT_0171f118 cache to avoid redundant updates.
0x00CD1C50651CEffect3DPlayer__render_map_coordinates_hudRenders the current map coordinates as sprite-based digits on the HUD. Gets X/Y from map object (offsets +0x494/+0x498). Loads number sprites from resource paths. Decomposes coordinates into individual digits (up to 4 digits, capped at 9999). Renders X coordinates with a ':' separator, then Y coordinates, positioned at bottom-right of screen.
0x00CD1EE01356CEffect3DPlayer__render_timer_displayRenders an elapsed timer display on screen. Computes elapsed time from DAT_01732de0 in days:hours:minutes:seconds format. Loads encrypted number sprite resource paths (XOR decrypted on first use). Renders digits centered at top of screen with ':' separators between time components. Also renders a loading animation if < 3 seconds elapsed.
0x00CD24301303CEffect3DPlayer__render_countdown_timerRenders a countdown or count-up timer with multiple modes. Mode 0: count up with 5s auto-stop. Mode 1: elapsed since param_2 timestamp. Mode 2: remaining until param_2 timestamp. Mode 3: frame-based countdown (DAT_01732ddc/30). Uses same encrypted sprite resources as render_timer_display. Breaks time into d:h:m:s digits and renders centered at top of screen.
0x00CD2A10458CEffect3DPlayer__render_combo_counterRenders a combo hit counter near the player character. Only renders if +0x408 is set and +0x414 (combo count) is nonzero. Caches digit decomposition in globals DAT_0135f708..714. Loads number sprites from 011a0d08/011a0d18. Renders digits at an offset from screen position (DAT_01319ea4/a8 + member offsets at +0x30/+0x34) with scale 2.0 and semi-transparent color.
0x00CD2BE02074CEffect3DPlayer__render_minimap_markerRenders a single marker on the minimap at cell coordinates (param_3, param_4). Converts cell coords to minimap screen space using map dimensions and viewport bounds. Supports 7 render types: 0=textured marker, 1=ground highlight pair, 2=outlined dot, 3=large outlined rect, 4=textured with shadow offset, 5=textured with arrow tracking, 6=window notification + optional texture. Clamps markers to minimap bounds with edge indicators for off-screen targets.
0x00CD340074CEffect3DPlayer__find_tree_value_by_keySearches the tree at offset +0x1ac for a node with key matching param_2 (uint). Returns the value at node offset +0x14 if found, 0 otherwise. Standard BST lookup.
0x00CD35C084CEffect3DPlayer__get_tile_type_atReturns the tile type at cell coordinates (param_2, param_3). Accesses the ground map via offset +0xcc->+0x30. Validates coordinates are within map bounds (0 to width/height). Returns tile property at offset +0x10 within the 0x14-byte tile structure. Returns 1 (unwalkable) if out of bounds or tile data is null.
0x00CD3620179CEffect3DPlayer__cell_to_world_coordsConverts cell coordinates (param_2, param_3) with sub-cell offset (param_4, param_5) to world coordinates (param_6, param_7). Uses map tile size from offset +0xcc->+0x30->+0x118 and map dimensions. Formula: world = (cell - mapDim * 0.5) * tileSize + subcell * tileSize * DAT_01116ea4.
0x00CD36E0158CEffect3DPlayer__cell_to_world_positionConverts cell coordinates to world position using a fixed sub-cell offset from DAT_010e22d8. Simpler than cell_to_world_coords which takes explicit sub-cell parameters. Accesses map tile size via +0xcc->+0x30->+0x118 and map dimensions at +0x110/+0x114.
0x00CD54D027CEffect3DPlayer__get_map_height_cellsReturns the map height in cells. Reads from the map object chain via offset +0xcc->+0x30->+0x114. Previously misnamed as get_map_x_dimension.
0x00CD54F027CEffect3DPlayer__get_map_width_cellsReturns the map width in cells. Reads from the map object chain via offset +0xcc->+0x30->+0x110. Previously misnamed as get_map_y_dimension.
0x00CD756041CEffect3DPlayer__list_contains_valueIterates the linked list at offset +0x1a4, checking if any entry has element[2] matching param_2. Returns 1 if found, 0 otherwise. Used as a membership test for entity/effect IDs in the list.
0x00CD759030CEffect3DPlayer__check_special_id_pairChecks if param_1 == 0x45 and param_2 == 10000 (a hardcoded special case). Returns 1 if both match, 0 otherwise. Not a tile data accessor despite original name.
0x00CD776846CEffect3DPlayer__create_skill_effect_atCreates a skill visual effect at a position by delegating to CEntity__create_skill_effect. Called from FUN_00cd76a0 for effect spawning.
0x00CFF90016vtable_init_interface_aInitializes vtable pointer for interface A. Sets *param_1 to PTR_vtable_init_interface_a_011a20b0.
0x00CFF91016vtable_init_interface_bInitializes vtable pointer for interface B. Sets *param_1 to PTR_vtable_init_interface_b_011a20cc.
0x00CFF92016vtable_init_interface_cInitializes vtable pointer for interface C. Sets *param_1 to PTR_vtable_init_interface_c_011a20e8.
0x00CFF93016vtable_init_interface_dInitializes vtable pointer for interface D. Sets *param_1 to PTR_vtable_init_interface_d_011a1fb4.
0x00CFF94016vtable_init_interface_eInitializes vtable pointer for interface E. Sets *param_1 to PTR_vtable_init_interface_e_011a1fd0.
0x00CFF95016vtable_init_interface_fInitializes vtable pointer for interface F. Sets *param_1 to PTR_vtable_init_interface_f_011a1fec.
0x00CFF96016vtable_init_interface_gInitializes vtable pointer for interface G. Sets *param_1 to PTR_vtable_init_interface_g_011a2008.
0x00CFF97016vtable_init_interface_hInitializes a vtable pointer for a small interface/delegate object.
0x00CFF98016vtable_init_interface_iInitializes a vtable pointer for a small interface/delegate object.
0x00CFF99016vtable_init_interface_jInitializes a vtable pointer for a small interface/delegate object.
0x00CFF9A016vtable_init_interface_kInitializes a vtable pointer for a small interface/delegate object.
0x00CFF9B016vtable_init_interface_lInitializes a vtable pointer for a small interface/delegate object.
0x00D00BB016vtable_init_interface_mInitializes a vtable pointer for a small interface/delegate object.
0x00D00BC016vtable_init_interface_nInitializes a vtable pointer for a small interface/delegate object.
0x00D00BD016vtable_init_interface_oInitializes a vtable pointer for a small interface/delegate object.
0x00D00BE016vtable_init_interface_pInitializes a vtable pointer for a small interface/delegate object.
0x00D00BF016vtable_init_interface_qInitializes a vtable pointer for a small interface/delegate object.
0x00D00C0016vtable_init_interface_rInitializes a vtable pointer for a small interface/delegate object.
0x00D00C1016vtable_init_interface_sInitializes a vtable pointer for a small interface/delegate object.
0x00D00C2016vtable_init_interface_tInitializes a vtable pointer for a small interface/delegate object.
0x00D00C3016vtable_init_interface_uInitializes a vtable pointer for a small interface/delegate object.
0x00D00C4016vtable_init_interface_vInitializes a vtable pointer for a small interface/delegate object.
0x00D00C5016vtable_init_interface_wInitializes a vtable pointer for a small interface/delegate object.
0x00D00C6016vtable_init_interface_xInitializes a vtable pointer for a small interface/delegate object.
0x00D5B94010563CSkillEffect__create_effect_by_skill_idHandles skill effect creation for various skill IDs. Dispatches via large switch on param_4 (skill ID), creating visual effects via CEffectManager__create_effect with paired effect IDs. Checks GameSettings option 0xe5 (reduced effects) to select normal vs low-detail effect variants. Some skills trigger sound effects or sprite-based effects. Covers skills 0x2E0-0x1F79 including 4th job skills (0x1460+), elemental skills (0x8D5), and various ground/entity effects.
0x00D73AF01CSkillEffect__handle_ground_unit_effectCSkillEffect: handle ground unit effect
0x00D73BE31CSkillEffect__create_particle_effect_and_skillCSkillEffect: create particle effect and skill
0x00D73CA01CSkillEffect__init_particle_and_create_effectCSkillEffect: init particle and create effect
0x00D73CB11CSkillEffect__init_particle_and_create_effect_00d73cb1CSkillEffect: init particle and create effect 00d73cb1
0x00D73CC21CSkillEffect__create_effect_with_option_checkCSkillEffect: create effect with option check
0x00D742B01CSkillEffect__handle_skill_on_target_effectCSkillEffect: handle skill on target effect
0x00D759601CSkillEffect__handle_skill_damage_effectCSkillEffect: handle skill damage effect
0x00D7C43123skill_effect_stub_wrapper_00d7c431Stub wrapper that calls skill_effect_xmm_store_and_create. One of several identical skill effect handler stubs at different addresses for different skill IDs.
0x00D7C45023skill_effect_stub_wrapper_00d7c450Small stub that wraps a skill effect function call, forwarding parameters.
0x00D7C46F23skill_effect_stub_wrapper_00d7c46fSmall stub that wraps a skill effect function call, forwarding parameters.
0x00D7C48E23skill_effect_stub_wrapper_00d7c48eSmall stub that wraps a skill effect function call, forwarding parameters.
0x00D7C4AD23skill_effect_stub_wrapper_00d7c4adSmall stub that wraps a skill effect function call, forwarding parameters.
0x00D7C4CC23skill_effect_stub_wrapper_00d7c4ccSmall stub that wraps a skill effect function call, forwarding parameters.
0x00D7F25031skill_effect_create_if_entity_validConditionally creates a skill effect if the entity pointer (EDI) is non-null. Guards against null entity access.
0x00D818B17skill_effect_store_position_and_createStores duplicated position coordinate into output buffer then delegates to CEntity__create_skill_effect. Mid-function entry point.
0x00D818B833skill_effect_xmm_store_and_createStores XMM0 value into param_1 (8 bytes), zeros third dword, then calls CEntity__create_skill_effect. Used as inline fragment within skill effect processing.
0x00D81E3533skill_effect_call_vtable_method_0xeSkill effect inline fragment. Calls vtable method at offset 0x40 on ESI object with params (0, 0xE, 0). Restores FS exception chain and returns.
0x00D81FDA7thunk_to_CEffectManager__create_effect_00d81fdaWrapper that calls FUN_00b24a50 with one argument
0x00D81FE148skill_effect_xmm_store_and_create_effectSkill effect inline fragment. Stores XMM0 into param_1 (8 bytes), zeros third dword, then calls CEffectManager__create_effect with entity ID from EDI+0x110. Restores FS exception chain.
0x00D8349527skill_effect_call_vtable_method_0xe_00d83495Skill effect inline fragment. Calls vtable method at offset 0x40 on ESI object with params (0, 0xE, 0). Restores FS exception chain. Identical pattern to 00d81e35.
0x00D838EC33skill_effect_xmm_store_and_create_00d838ecStores XMM0 into param_1 (8 bytes), zeros third dword, then calls CEntity__create_skill_effect. Identical pattern to 00d818b8.
0x00D8670E431CSkillEffect__create_cd_reparatio_effectsCreates CD Reparatio skill visual effects (IDs 0x728-0x72B) on caster and target. Plays CD_REPARATIO1.wav and CD_REPARATIO2.wav sound effects via CEffectAura.
0x00DA1190120CEffectSprite__ctorCEffectSprite constructor. Initializes sprite base, sets vtable PTR_FUN_011a478c, marks as visible with single frame, stores timeGetTime.
0x00DA1FB071CEffectSprite__dtorCEffectSprite destructor. Resets vtable to PTR_FUN_011a478c, calls CSprite base destructor.
0x00DA245099CEffectSprite__scalar_deleting_dtorCEffectSprite scalar deleting destructor.
0x00DA256099CEffectElectric__scalar_deleting_dtor_mode0Scalar deleting destructor for CEffectElectric mode 0 (effect modes < 4). Sets vtable to PTR_011a4ac8, calls CEntityPreview__dtor_cleanup, frees 0x458 bytes if bit 0 of param_2 is set.
0x00DA25D099CEffectElectric__scalar_deleting_dtor_mode11Scalar deleting destructor for CEffectElectric mode 11 (effect modes 0xB-0xE). Sets vtable to PTR_011a49c8, calls CSkillUnit__dtor, frees 0x518 bytes if bit 0 of param_2 is set.
0x00DA264099CEffectElectric__scalar_deleting_dtor_mode20Scalar deleting destructor for CEffectElectric mode 20 (effect modes 0x14-0x17). Sets vtable to PTR_011a48c8, calls CSkillUnit__dtor, frees 0x518 bytes if bit 0 of param_2 is set.
0x00DA6E4016vtable_init_00da6e40Sets vftable pointer on object (PTR_FUN_011a4eb0).
0x00DA6E5016vtable_init_00da6e50Sets vftable pointer on object (PTR_FUN_011a4ecc).
0x00DA6E6016vtable_init_00da6e60Sets vftable pointer on object (PTR_FUN_011a4ee8).
0x00DA73C0828CSkillEffect__ctorCSkillEffect constructor. Very large object (>0x2500 dwords). Initializes vtable (PTR_FUN_011a513c), two STL strings at offsets 0x410/0x460, arrays for 30-element effect slots, timed sprite vector (4900 entries). Calls FUN_00ca83a0 for base init and stub_00571660 for sprite creation.
0x00DA7AE0181CSkillEffect__dtorCSkillEffect destructor. Sets vtable to PTR_FUN_011a513c, calls FUN_00daa2e0 cleanup, unregisters UI window at offset 0x478, releases sprite at offset 0x2554 via virtual dtor, destroys CEffectGround, two STL strings, and base class via FUN_00ca8d70.
0x00DA7D20205CSkillEffect__scalar_deleting_dtor_00da7d20CSkillEffect scalar deleting destructor. Calls CSkillEffect__dtor then optionally frees 0x25a8 bytes of memory if param_2 bit 0 is set.
0x00DAA2E0216CSkillEffect__release_all_spritesReleases all sprites/resources held by CSkillEffect. Zeroes 20 entries at offset 0x1050, then iterates through two arrays of 30 entries each freeing 0x28 and 0x20 byte blocks via stub_005692f0, plus 10 more groups of 30 entries. Sets flag at 0x2550 to 0.
0x00DAB6C052CSkillEffect__unregister_window_and_spriteUnregisters the CSkillEffect's UI window at offset 0x478 and destroys the timed sprite at offset 0x2554 by calling its virtual destructor.
0x00DAB730280CSkillEffect__reset_and_init_spritesResets and reinitializes the CSkillEffect's state. Clears UI window, damage, position, and state fields, recreates the timed sprite via stub_00571660 (0x23x0x23, 1 frame), and resizes the particle vector to 4900 entries.
0x00DAB980594CSkillEffect__update_per_framePer-frame update for CSkillEffect. Calls idle effects, damage queue, overhead UI position updates. Updates HP bar display, handles hit flash timer (100ms), color adjustment, animation sounds. Also handles anti-cheat sweep for special state (0x60 flag) and smoothly interpolates the facing direction (stored at 0xf30) towards target (modulo 360).
0x00DABE20301CSkillEffect__update_granny_animationUpdates Granny 3D animation state. Gets system time via GrannyGetSystemSeconds, calculates elapsed time, advances the animation timer at offset 0xf24. For continuing animations, checks if the current control is complete (GrannyGetControlDurationLeft) and transitions to next. Calls CGrannyModel__SampleAndBuildPose to update the pose.
0x00DABF50105CSkillEffect__update_overhead_uiUpdates overhead UI position for CSkillEffect. Repositions the window at offset 0x478 based on entity Y position, screen height, and scale factor.
0x00DAC03067CSkillEffect__check_granny_anim_completeChecks if the Granny animation is complete. If state (offset 0x70) is 2 (playing), checks remaining duration; if complete (< threshold), sets done flag at 0x9d. If state != 2, always marks as done.
0x00DAC080107CSkillEffect__process_state_machineCSkillEffect state machine processor. Handles states: 2=sitting(update+check anim), 3=dead(clear flags), 6=idle, 7=walking(update), 8=skill casting(update+check periodic effect every 0x22 frames). Default: movement+actions. On animation complete (0x9d), transitions via virtual 0x3c.
0x00DAC400371CSkillEffect__update_visual_effectsUpdates visual effects for CSkillEffect. If a base resource is loaded (offset 0x484!=0), computes perpendicular direction and either renders sprite effects (state 0) or 3D model effects (state!=0) through 10 effect slots. Uses a 3-phase cycle (offset 0x10a4 mod 3). Calls FUN_00dac750 for 2D effects and FUN_00dacf90 for 3D effects.
0x00DAC580462CSkillEffect__render_mainMain render entry point for CSkillEffect. Checks movement trail effects, option 0x109 (reduced effects mode), frozen/invisible states. Routes to different render paths: FUN_00cc4270 for invisible, CEntity__render_shadow for shadow, CEntity__render_sprite_full for normal 2D, FUN_00dad4d0 for restricted sprite rendering, or FUN_00dad8c0 for map-based rendering. Special shadow handling for Doram classes (0xfd0, 0x108e, 0x1093, 0x1094, 0x10dc).
0x00DAC7502101CSkillEffect__render_3d_mesh_slotRenders a 3D mesh slot for CSkillEffect using Granny animation system. Sets up rotation matrices (X rotation 90deg, Y from facing), scale (0.3), translates to world position, projects vertices to screen space, applies per-vertex color from entity RGBA + mesh normals. Enqueues mesh triangles to render pipeline. Handles bone hierarchy for multi-part meshes with parent bone transforms. Stores mesh render data (texture, vertex count, transforms) for each of 30 slots.
0x00DACF901336CSkillEffect__render_3d_rigid_mesh_slotRenders a rigid (non-skinned) 3D mesh slot for CSkillEffect. Similar to render_3d_mesh_slot but uses rigid bone indices (GetRigidMeshBoneIndex) instead of skinned vertex deformation. Reuses cached mesh render data from previous frame (offsets 0x42a/0x556/0x682) if bone index is non-zero.
0x00DAD8C0378CSkillEffect__render_with_temp_mapsRenders CSkillEffect by creating temporary STL map trees (0x1c, 0x18, 0x4c byte nodes), calling CFmt__vformat_impl for the actual rendering pass, then destroying the temporary trees. Used as a wrapper for rendering when no persistent render state exists.
0x00DADA401001CSkillEffect__render_ground_shadowRenders the ground shadow/footprint for CSkillEffect. Computes facing direction sine/cosine, maps particle positions from the timed sprite vector (offset 0x2558) onto a 35x35 grid, marking shadow cells with alpha values. Renders a 5x5 textured quad grid around the entity using CWalkGrid__render_textured_quad with the timed sprite texture.
0x00DADE30184CSkillEffect__dispatch_actionAction dispatch for CSkillEffect. Routes action IDs 3-124 through a jump table for specialized handlers. Falls back to CEntity__process_action_table_entry for out-of-range or default actions.
0x00DAE47138skill_effect_create_0x158_00dae471Skill effect creation wrapper - calls CEntity__create_skill_effect with effect ID 0x158. Mid-function entry point.
0x00DAEF1738skill_effect_create_0x158_00daef17Skill effect creation wrapper - calls CEntity__create_skill_effect with effect ID 0x158. Mid-function entry point.
0x00DAF0E738skill_effect_create_0x158_00daf0e7Skill effect creation wrapper - calls CEntity__create_skill_effect with effect ID 0x158. Mid-function entry point.
0x00DAFE5061CSkillEffect__set_granny_animation_stateSets the Granny 3D animation state for CSkillEffect. Maps animation type codes (8,0x10,0x18,0x20,0x28,0x30,0x40,0x50,0x58) to internal states (0-6,0xb,0xc) at offset 0x70, then calls FUN_00db01f0 to apply the animation with the given parameter.
0x00DB0400127CSkillEffect__set_headgear_topSets the top headgear ID for CSkillEffect at offset 0x428. If param_2 < 0, dispatches action 0xa0 with computed value; otherwise dispatches action 0x76. Stores the headgear ID.
0x00DB0480127CSkillEffect__set_headgear_midSets the mid headgear ID for CSkillEffect at offset 0x430. Same logic as set_headgear_top but for the mid slot.
0x00DB0500218CSkillEffect__update_body_string_pathUpdates the body sprite string path for CSkillEffect. Gets effective job ID, builds sprite path via FUN_00ddd190 using job, sex (0x260), head style (0x434), and body type, then stores at offset 0x410.
0x00DB06C066CSkillEffect__set_anim_speedSets animation speed for CSkillEffect. If skill ID at offset 0x440 is not 0xb (Sanctuary) or has nonzero field 0x444, clamps param_2 to global max. Divides by divisor and stores at offset 0x64.
0x00DB076031CSkillEffect__set_palette_and_body_paletteSets palette via virtual method 0xa0 and stores body palette ID at offset 0x42c.
0x00DB07E016CSkillEffect__set_head_styleSets the head style ID at offset 0x44c for CSkillEffect.
0x00DB236059CSkillEffect__load_all_sprite_resourcesLoads all 9 sprite resources for CSkillEffect by iterating through the resource name vector and calling FUN_00db2230 for each slot.
0x00DB372025CSkillEffect__set_skill_id_and_levelSets the skill ID (offset 0x440) and skill level (offset 0x444) for CSkillEffect.
0x00E166E08001CSkillEffect__build_status_icon_dataBuilds status icon data table for skill effects. 8K bytes. Called by CSkillEffect__init_status_icon_grid. Allocates heap memory, calls lua functions, and remaps job classes for costume rendering.
0x00E4A2B0154CEffectSprite__ctor_00e4a2b0Constructor for CEffectSprite. Calls CSprite__ctor, sets vtable, initializes lifetime to 360 (0x168) ticks, effect ID to -1, and zeroes various effect-specific fields.
0x00E4A450124CEffectSprite__ctor_00e4a450Constructor for CEffectSprite. Calls CSprite__ctor, sets vtable to effect sprite vtable, initializes fields: +0x164=0, +0x168=1, +0x16C=0, +0x174=-1.
0x00E4A8A071CEffectSprite__dtor_00e4a8a0Destructor for CEffectSprite. Sets vtable to PTR_FUN_011ad180, then calls CSprite__dtor.
0x00E4AB8099CEffectSprite__scalar_deleting_dtor_00e4ab80Scalar deleting destructor for CEffectSprite. Sets vtable to PTR_FUN_011ad180, calls CSprite__dtor, frees 0x178 bytes if bit 0 set.
0x00E4AE10351CEffect__get_effect_type_by_idMaps effect IDs to effect type codes via a large switch statement. Returns type values: 3 (e.g. IDs 0x17D, 0xB, 0x19...), 5 (e.g. 0x11, 0x15, 0x302...), 7 (e.g. 0x4F, 0x2DD, 0x992...), 9 (e.g. 0x2DB, 0x53, 0x301...), 0xB (0x55), 0x12 (0x8A5, 0x2C4), 0x13 (0x149E), -2 (0x2E0, 0x98F, 0x991). Falls back to CEffect__get_handler_value_c for unknown IDs.
0x00E4B690543CEffectManager__spawn_ground_effects_gridSpawns ground-level visual effects in a grid pattern around the entity. If the effect ID exists in EffectMap, creates it via CEffectManager. Then creates a grid of effects based on a radius (field 0x42C), using random offsets and terrain height interpolation. Each grid cell spawns an effect at ground level with randomized height offset. Handles special cases for effect IDs 0x3BF and 0x3CF with additional height offset.
0x00E4BAD0492CEffectText__render_alphabet_textureRenders text using a bitmap alphabet sprite (effect_alpabet_bmp). Creates a 0x180x0x180 surface, then processes each character: maps a-z to 0-25, A-Z to 26-51, 0-9 to 52-61, '?' to 53, '!' to 54. Handles word wrapping at 0x160 pixels. Each character is rendered from a sprite sheet (8 columns, variable rows, 32x32 tiles) using a virtual blit call. Records final camera position.
0x00E4BE60855CEffectProjectile__update_movementUpdates projectile effect movement per frame. Calculates elapsed time via timeGetTime, initializes velocity toward target on first frame (getting target position from entity or stored coords), applies speed scaling if distance is short. Updates position by interpolating base position + velocity * time. Advances animation frames after 8 ticks. Returns 0 when projectile reaches destination (time exceeds travel distance/speed), 1 while in flight.
0x00E4C210164CEffectProximity__check_and_triggerChecks distance to camera/player and triggers a skill effect when close enough. Calculates 2D distance to current view target; if within threshold (DAT_01199258) and frame counter exceeds delay, creates the skill effect and resets counter. Always returns 1 (effect continues).
0x00E4C310198CEffectAnimation__update_frame_timerUpdates animation frame based on elapsed time. Calculates time since creation, waits until start delay (field 0x138) elapses, then computes current frame from (elapsed - delay) / frame_duration. If animation completes all frames, marks as done (field 0x9D = 1) and holds last frame. Returns 0 (expired) when complete and not looping, 1 while still animating.
0x00E4C3E04666CEffect__update_by_typeMain effect update dispatcher. Handles ~30+ effect types (0x00-0x72) via a massive switch. For basic effects (0,1,2,0x11): animates frames and checks completion. For physics effects (0xD-0x10,0x15,0x16): applies gravity/arc trajectory with directional offsets based on facing angle, camera rotation, and elapsed time. For orbital effects (0x12): rotates around target entity. For looping effects (4-10,0x1A,0x25-0x26): simple frame cycling. For ground effects (0x1B,0x1F): follows target with walking animation. Returns 0 when effect expires, 1 while active.
0x00E4F2D076CEffect__update_by_type_with_transparencyUpdates effect by type (via CEffect__update_by_type), then applies transparency based on game option 0x10A. If transparency enabled, sets alpha to 0x32; otherwise 0xFF. Applies RGBA color from entity fields at +0x98-0x9A via CEntity__set_color_rgba_direct. Returns the update_by_type result (0=expired, 1=active).
0x00E4F3702413CEffect__update_position_by_typeUpdates effect position based on effect type (field 0x6A). Types 1,2,8,9,10,0x25,0x26: snap to owner with height offset. Type 3: follow owner with walking animation and distance tracking. Type 5: snap exactly to owner. Type 7: snap to owner with direction-based mirroring. Types 0xD-0x11,0x15,0x16,0x18,0x19: snap x/z to owner, store base position. Type 0x12: orbit/rotate around target. Types 0x1B,0x1F: walk toward target with multiple animation states. Type 0x72: snap x/z only.
0x00E4FD70646CEffectText__render_ground_gridRenders the text effect as a grid of 18x18 textured quads on the ground. Computes sin/cos of the stored angle (field 0x55C) for rotation, then iterates through grid cells computing UV coordinates for each quad. Delegates to CWalkGrid__render_textured_quad for actual rendering at the effect's map position (fields 0x444, 0x448).
0x00E50000828CEffectGround__render_rotating_gridRenders a rotating ground effect as a grid of textured quads. Grid size is determined by field 0x168. Selects texture by skill ID (field 0x174): poison smoke, comet cast, competentia, or default magic_target. Each quad gets rotated UV coordinates based on angle (field 0x16C) which increments each frame. Competentia effect has alpha modulation.
0x00E503F0272CEffect__update_screen_position_scaledUpdates effect screen position with scaling. If field 0xA1 is set, projects world position to 2D screen coordinates, computes scale factor, and calculates bounding box. Calls virtual function at vtable+0x14 with the computed bounds. Otherwise falls back to CEntity__update_screen_position.
0x00E505001040CEffectProjectile__init_by_skill_idInitializes a projectile effect by skill ID. For type 0xE (action 0): selects sprite/act resources from a large lookup table mapping skill IDs (0x582-0x56A0+) to specific effect files (arrows, bolts, magic projectiles). For type 0x40: loads default projectile resources and sets target coordinates from param_7. Stores start position, target position, and start time.
0x00E50A60210CEffectStatic__init_at_positionInitializes a static effect at a given position. For type 0xE (action 0): sets position from param_5, records start time, creates the effect via CEffectManager or falls back to CEntity__create_skill_effect. For other types, delegates to CEntity__dispatch_action_by_type.
0x00E50BB0343CEffectGround__init_from_dataInitializes a ground effect from parameter data. For type 0xE (action 0): reads effect subtype from param_5+0x5C, computes random scale and offset. For subtype 0x2D uses bounded random positioning. Stores position, grid dimensions, and rotation parameters from the source data structure. For other types, delegates to CEntity__dispatch_action_by_type.
0x00E50F30610CEffectTarget__init_by_skill_idInitializes a target-locked effect by skill ID. For type 0xE (action 0): maps skill IDs (0x42C, 0x6A8, 0x75C, 0x7A5-0x7C4, 0xE94, 0xECF, etc.) to sprite/act resources. Gets position from target entity, records start time, sets animation speed. For skill 0x42C, overrides animation speed to 2.0. Optional param_7 stores additional effect data.
0x00E512B0199CEffect__dispatch_action_by_subtypeDispatches effect actions for subtypes 0xE-0x40 (action 0 only). Uses a jump table for param_2 values in range [0xE, 0x40]. For out-of-range subtypes, falls back to CEntity__dispatch_action_by_type.