mirror of
https://port.numenaute.org/aleajactaest/khanat-code-old.git
synced 2025-01-14 18:45:34 +00:00
deed
71d62b544b
Conflicts: .gitignore README.md code/CMakeLists.txt code/CMakeModules/ConfigureChecks.cmake code/CMakeModules/Find3dsMaxSDK.cmake code/CMakeModules/FindCustomMFC.cmake code/CMakeModules/FindMSVC.cmake code/CMakeModules/FindMercurial.cmake code/CMakeModules/FindWindowsSDK.cmake code/CMakeModules/PCHSupport.cmake code/CMakeModules/nel.cmake code/nel/CMakeLists.txt code/nel/include/nel/3d/animatable.h code/nel/include/nel/3d/animated_lightmap.h code/nel/include/nel/3d/animation_set_user.h code/nel/include/nel/3d/async_file_manager_3d.h code/nel/include/nel/3d/async_texture_manager.h code/nel/include/nel/3d/camera_col.h code/nel/include/nel/3d/cloud_scape_user.h code/nel/include/nel/3d/cluster.h code/nel/include/nel/3d/coarse_mesh_manager.h code/nel/include/nel/3d/fasthls_modifier.h code/nel/include/nel/3d/gpu_program_params.h code/nel/include/nel/3d/ig_surface_light_build.h code/nel/include/nel/3d/landscape.h code/nel/include/nel/3d/material.h code/nel/include/nel/3d/matrix_3x4.h code/nel/include/nel/3d/meshvp_wind_tree.h code/nel/include/nel/3d/particle_system.h code/nel/include/nel/3d/particle_system_manager.h code/nel/include/nel/3d/particle_system_process.h code/nel/include/nel/3d/portal.h code/nel/include/nel/3d/ps_attrib_maker_bin_op_inline.h code/nel/include/nel/3d/ps_attrib_maker_helper.h code/nel/include/nel/3d/ps_attrib_maker_template.h code/nel/include/nel/3d/ps_emitter.h code/nel/include/nel/3d/ps_located.h code/nel/include/nel/3d/ps_mesh.h code/nel/include/nel/3d/ps_zone.h code/nel/include/nel/3d/quad_grid.h code/nel/include/nel/3d/ray_mesh.h code/nel/include/nel/3d/render_trav.h code/nel/include/nel/3d/seg_remanence_shape.h code/nel/include/nel/3d/shadow_map.h code/nel/include/nel/3d/shadow_map_manager.h code/nel/include/nel/3d/shadow_skin.h code/nel/include/nel/3d/stereo_hmd.h code/nel/include/nel/3d/target_anim_ctrl.h code/nel/include/nel/3d/texture_emboss.h code/nel/include/nel/3d/tile_bank.h code/nel/include/nel/3d/u_transform.h code/nel/include/nel/3d/vegetable_light_ex.h code/nel/include/nel/3d/vertex_buffer_heap.h code/nel/include/nel/3d/water_env_map.h code/nel/include/nel/3d/water_height_map.h code/nel/include/nel/georges/form.h code/nel/include/nel/georges/form_dfn.h code/nel/include/nel/georges/form_elm.h code/nel/include/nel/georges/form_loader.h code/nel/include/nel/georges/header.h code/nel/include/nel/georges/load_form.h code/nel/include/nel/georges/type.h code/nel/include/nel/georges/u_form_elm.h code/nel/include/nel/georges/u_form_loader.h code/nel/include/nel/gui/group_html.h code/nel/include/nel/gui/group_menu.h code/nel/include/nel/gui/group_paragraph.h code/nel/include/nel/gui/group_table.h code/nel/include/nel/gui/interface_parser.h code/nel/include/nel/gui/interface_property.h code/nel/include/nel/gui/lua_helper.h code/nel/include/nel/gui/view_link.h code/nel/include/nel/gui/view_pointer_base.h code/nel/include/nel/gui/widget_manager.h code/nel/include/nel/ligo/ligo_config.h code/nel/include/nel/ligo/primitive.h code/nel/include/nel/misc/app_context.h code/nel/include/nel/misc/big_file.h code/nel/include/nel/misc/bitmap.h code/nel/include/nel/misc/block_memory.h code/nel/include/nel/misc/cdb_leaf.h code/nel/include/nel/misc/co_task.h code/nel/include/nel/misc/common.h code/nel/include/nel/misc/contiguous_block_allocator.h code/nel/include/nel/misc/debug.h code/nel/include/nel/misc/fixed_size_allocator.h code/nel/include/nel/misc/heap_memory.h code/nel/include/nel/misc/i_xml.h code/nel/include/nel/misc/mouse_smoother.h code/nel/include/nel/misc/o_xml.h code/nel/include/nel/misc/object_arena_allocator.h code/nel/include/nel/misc/path.h code/nel/include/nel/misc/pool_memory.h code/nel/include/nel/misc/resource_ptr.h code/nel/include/nel/misc/resource_ptr_inline.h code/nel/include/nel/misc/sha1.h code/nel/include/nel/misc/smart_ptr.h code/nel/include/nel/misc/smart_ptr_inline.h code/nel/include/nel/misc/stream.h code/nel/include/nel/misc/string_common.h code/nel/include/nel/misc/timeout_assertion_thread.h code/nel/include/nel/misc/types_nl.h code/nel/include/nel/misc/win_tray.h code/nel/include/nel/net/buf_client.h code/nel/include/nel/net/buf_server.h code/nel/include/nel/net/buf_sock.h code/nel/include/nel/net/message_recorder.h code/nel/include/nel/net/module_gateway.h code/nel/include/nel/net/pacs_client.h code/nel/include/nel/net/service.h code/nel/include/nel/net/sock.h code/nel/include/nel/net/unitime.h code/nel/include/nel/pacs/move_container.h code/nel/src/3d/anim_ctrl.cpp code/nel/src/3d/anim_detail_trav.cpp code/nel/src/3d/animatable.cpp code/nel/src/3d/animated_lightmap.cpp code/nel/src/3d/animated_material.cpp code/nel/src/3d/animated_morph.cpp code/nel/src/3d/animated_value.cpp code/nel/src/3d/animation.cpp code/nel/src/3d/animation_optimizer.cpp code/nel/src/3d/animation_playlist.cpp code/nel/src/3d/animation_set.cpp code/nel/src/3d/animation_set_user.cpp code/nel/src/3d/animation_time.cpp code/nel/src/3d/async_file_manager_3d.cpp code/nel/src/3d/async_texture_block.cpp code/nel/src/3d/async_texture_manager.cpp code/nel/src/3d/bezier_patch.cpp code/nel/src/3d/bloom_effect.cpp code/nel/src/3d/bone.cpp code/nel/src/3d/camera.cpp code/nel/src/3d/camera_col.cpp code/nel/src/3d/channel_mixer.cpp code/nel/src/3d/clip_trav.cpp code/nel/src/3d/cloud.cpp code/nel/src/3d/cloud_scape.cpp code/nel/src/3d/cloud_scape_user.cpp code/nel/src/3d/cluster.cpp code/nel/src/3d/coarse_mesh_build.cpp code/nel/src/3d/coarse_mesh_manager.cpp code/nel/src/3d/computed_string.cpp code/nel/src/3d/cube_grid.cpp code/nel/src/3d/cube_map_builder.cpp code/nel/src/3d/debug_vb.cpp code/nel/src/3d/deform_2d.cpp code/nel/src/3d/driver.cpp code/nel/src/3d/driver/direct3d/driver_direct3d.cpp code/nel/src/3d/driver/direct3d/driver_direct3d_material.cpp code/nel/src/3d/driver/direct3d/driver_direct3d_shader.cpp code/nel/src/3d/driver/direct3d/driver_direct3d_texture.cpp code/nel/src/3d/driver/direct3d/driver_direct3d_vertex_program.cpp code/nel/src/3d/driver/direct3d/stddirect3d.h code/nel/src/3d/driver/opengl/driver_opengl.cpp code/nel/src/3d/driver/opengl/driver_opengl_extension.cpp code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp code/nel/src/3d/driver/opengl/driver_opengl_light.cpp code/nel/src/3d/driver/opengl/driver_opengl_material.cpp code/nel/src/3d/driver/opengl/driver_opengl_matrix.cpp code/nel/src/3d/driver/opengl/driver_opengl_pixel_program.cpp code/nel/src/3d/driver/opengl/driver_opengl_states.cpp code/nel/src/3d/driver/opengl/driver_opengl_texture.cpp code/nel/src/3d/driver/opengl/driver_opengl_uniform.cpp code/nel/src/3d/driver/opengl/driver_opengl_vertex.cpp code/nel/src/3d/driver/opengl/driver_opengl_vertex_buffer_hard.cpp code/nel/src/3d/driver/opengl/driver_opengl_vertex_buffer_hard.h code/nel/src/3d/driver/opengl/driver_opengl_vertex_program.cpp code/nel/src/3d/driver/opengl/driver_opengl_window.cpp code/nel/src/3d/driver/opengl/resources.rc code/nel/src/3d/driver/opengl/stdopengl.h code/nel/src/3d/driver/opengl/unix_event_emitter.cpp code/nel/src/3d/driver_user.cpp code/nel/src/3d/driver_user2.cpp code/nel/src/3d/dru.cpp code/nel/src/3d/event_mouse_listener.cpp code/nel/src/3d/fast_ptr_list.cpp code/nel/src/3d/fasthls_modifier.cpp code/nel/src/3d/flare_model.cpp code/nel/src/3d/flare_shape.cpp code/nel/src/3d/font_generator.cpp code/nel/src/3d/font_manager.cpp code/nel/src/3d/frustum.cpp code/nel/src/3d/fxaa.cpp code/nel/src/3d/geometry_program.cpp code/nel/src/3d/gpu_program_params.cpp code/nel/src/3d/heat_haze.cpp code/nel/src/3d/height_map.cpp code/nel/src/3d/hls_color_texture.cpp code/nel/src/3d/hls_texture_bank.cpp code/nel/src/3d/hls_texture_manager.cpp code/nel/src/3d/hrc_trav.cpp code/nel/src/3d/ig_surface_light.cpp code/nel/src/3d/ig_surface_light_build.cpp code/nel/src/3d/index_buffer.cpp code/nel/src/3d/init_3d.cpp code/nel/src/3d/instance_group_user.cpp code/nel/src/3d/instance_lighter.cpp code/nel/src/3d/key.cpp code/nel/src/3d/landscape.cpp code/nel/src/3d/landscape_collision_grid.cpp code/nel/src/3d/landscape_def.cpp code/nel/src/3d/landscape_face_vector_manager.cpp code/nel/src/3d/landscape_model.cpp code/nel/src/3d/landscape_profile.cpp code/nel/src/3d/landscape_user.cpp code/nel/src/3d/landscape_vegetable_block.cpp code/nel/src/3d/landscapeig_manager.cpp code/nel/src/3d/landscapevb_allocator.cpp code/nel/src/3d/landscapevb_info.cpp code/nel/src/3d/light.cpp code/nel/src/3d/light_contribution.cpp code/nel/src/3d/light_influence_interpolator.cpp code/nel/src/3d/light_trav.cpp code/nel/src/3d/light_user.cpp code/nel/src/3d/lighting_manager.cpp code/nel/src/3d/load_balancing_trav.cpp code/nel/src/3d/lod_character_builder.cpp code/nel/src/3d/lod_character_instance.cpp code/nel/src/3d/lod_character_manager.cpp code/nel/src/3d/lod_character_shape.cpp code/nel/src/3d/lod_character_shape_bank.cpp code/nel/src/3d/lod_character_texture.cpp code/nel/src/3d/logic_info.cpp code/nel/src/3d/material.cpp code/nel/src/3d/matrix_3x4.cpp code/nel/src/3d/mesh.cpp code/nel/src/3d/mesh_base.cpp code/nel/src/3d/mesh_base_instance.cpp code/nel/src/3d/mesh_blender.cpp code/nel/src/3d/mesh_block_manager.cpp code/nel/src/3d/mesh_geom.cpp code/nel/src/3d/mesh_instance.cpp code/nel/src/3d/mesh_morpher.cpp code/nel/src/3d/mesh_mrm.cpp code/nel/src/3d/mesh_mrm_instance.cpp code/nel/src/3d/mesh_mrm_skin_template.cpp code/nel/src/3d/mesh_mrm_skinned.cpp code/nel/src/3d/mesh_mrm_skinned_instance.cpp code/nel/src/3d/mesh_mrm_skinned_template.cpp code/nel/src/3d/mesh_multi_lod.cpp code/nel/src/3d/mesh_multi_lod_instance.cpp code/nel/src/3d/mesh_vertex_program.cpp code/nel/src/3d/meshvp_per_pixel_light.cpp code/nel/src/3d/meshvp_wind_tree.cpp code/nel/src/3d/mini_col.cpp code/nel/src/3d/motion_blur.cpp code/nel/src/3d/mrm_builder.cpp code/nel/src/3d/mrm_internal.cpp code/nel/src/3d/mrm_level_detail.cpp code/nel/src/3d/mrm_mesh.cpp code/nel/src/3d/mrm_parameters.cpp code/nel/src/3d/nelu.cpp code/nel/src/3d/noise_3d.cpp code/nel/src/3d/packed_world.cpp code/nel/src/3d/packed_zone.cpp code/nel/src/3d/particle_system.cpp code/nel/src/3d/particle_system_manager.cpp code/nel/src/3d/particle_system_model.cpp code/nel/src/3d/particle_system_process.cpp code/nel/src/3d/particle_system_shape.cpp code/nel/src/3d/particle_system_sound_user.cpp code/nel/src/3d/patch.cpp code/nel/src/3d/patch_lightmap.cpp code/nel/src/3d/patch_noise.cpp code/nel/src/3d/patch_rdr_pass.cpp code/nel/src/3d/patch_render.cpp code/nel/src/3d/patch_vegetable.cpp code/nel/src/3d/patchdlm_context.cpp code/nel/src/3d/patchuv_locator.cpp code/nel/src/3d/pixel_program.cpp code/nel/src/3d/play_list_manager.cpp code/nel/src/3d/play_list_manager_user.cpp code/nel/src/3d/play_list_user.cpp code/nel/src/3d/point_light.cpp code/nel/src/3d/point_light_model.cpp code/nel/src/3d/point_light_named.cpp code/nel/src/3d/point_light_named_array.cpp code/nel/src/3d/portal.cpp code/nel/src/3d/primitive_profile.cpp code/nel/src/3d/program.cpp code/nel/src/3d/ps_allocator.cpp code/nel/src/3d/ps_attrib_maker_bin_op.cpp code/nel/src/3d/ps_attrib_maker_helper.cpp code/nel/src/3d/ps_attrib_maker_template.cpp code/nel/src/3d/ps_color.cpp code/nel/src/3d/ps_dot.cpp code/nel/src/3d/ps_emitter.cpp code/nel/src/3d/ps_face.cpp code/nel/src/3d/ps_face_look_at.cpp code/nel/src/3d/ps_fan_light.cpp code/nel/src/3d/ps_float.cpp code/nel/src/3d/ps_force.cpp code/nel/src/3d/ps_int.cpp code/nel/src/3d/ps_light.cpp code/nel/src/3d/ps_located.cpp code/nel/src/3d/ps_mesh.cpp code/nel/src/3d/ps_particle.cpp code/nel/src/3d/ps_particle2.cpp code/nel/src/3d/ps_particle_basic.cpp code/nel/src/3d/ps_plane_basis_maker.cpp code/nel/src/3d/ps_quad.cpp code/nel/src/3d/ps_register_attribs.cpp code/nel/src/3d/ps_register_emitters.cpp code/nel/src/3d/ps_register_forces.cpp code/nel/src/3d/ps_register_particles.cpp code/nel/src/3d/ps_register_zones.cpp code/nel/src/3d/ps_ribbon.cpp code/nel/src/3d/ps_ribbon_base.cpp code/nel/src/3d/ps_ribbon_look_at.cpp code/nel/src/3d/ps_shockwave.cpp code/nel/src/3d/ps_sound.cpp code/nel/src/3d/ps_tail_dot.cpp code/nel/src/3d/ps_util.cpp code/nel/src/3d/ps_zone.cpp code/nel/src/3d/ptr_set.cpp code/nel/src/3d/quad_effect.cpp code/nel/src/3d/quad_grid.cpp code/nel/src/3d/quad_grid_clip_cluster.cpp code/nel/src/3d/quad_grid_clip_manager.cpp code/nel/src/3d/radix_sort.cpp code/nel/src/3d/raw_skin.cpp code/nel/src/3d/raw_skinned.cpp code/nel/src/3d/ray_mesh.cpp code/nel/src/3d/register_3d.cpp code/nel/src/3d/render_target_manager.cpp code/nel/src/3d/render_trav.cpp code/nel/src/3d/root_model.cpp code/nel/src/3d/scene.cpp code/nel/src/3d/scene_group.cpp code/nel/src/3d/scene_user.cpp code/nel/src/3d/scissor.cpp code/nel/src/3d/seg_remanence.cpp code/nel/src/3d/seg_remanence_shape.cpp code/nel/src/3d/shadow_map.cpp code/nel/src/3d/shadow_map_manager.cpp code/nel/src/3d/shadow_poly_receiver.cpp code/nel/src/3d/shadow_skin.cpp code/nel/src/3d/shape.cpp code/nel/src/3d/shape_bank.cpp code/nel/src/3d/shape_bank_user.cpp code/nel/src/3d/shape_info.cpp code/nel/src/3d/shifted_triangle_cache.cpp code/nel/src/3d/skeleton_model.cpp code/nel/src/3d/skeleton_shape.cpp code/nel/src/3d/skeleton_spawn_script.cpp code/nel/src/3d/skeleton_weight.cpp code/nel/src/3d/static_quad_grid.cpp code/nel/src/3d/std3d.h code/nel/src/3d/stereo_debugger.cpp code/nel/src/3d/stereo_display.cpp code/nel/src/3d/stereo_hmd.cpp code/nel/src/3d/stereo_libvr.cpp code/nel/src/3d/stereo_ovr.cpp code/nel/src/3d/stereo_ovr_04.cpp code/nel/src/3d/stereo_ovr_fp.cpp code/nel/src/3d/stripifier.cpp code/nel/src/3d/surface_light_grid.cpp code/nel/src/3d/tangent_space_build.cpp code/nel/src/3d/target_anim_ctrl.cpp code/nel/src/3d/tess_block.cpp code/nel/src/3d/tess_face_priority_list.cpp code/nel/src/3d/tess_list.cpp code/nel/src/3d/tessellation.cpp code/nel/src/3d/text_context.cpp code/nel/src/3d/text_context_user.cpp code/nel/src/3d/texture.cpp code/nel/src/3d/texture_blank.cpp code/nel/src/3d/texture_blend.cpp code/nel/src/3d/texture_bloom.cpp code/nel/src/3d/texture_bump.cpp code/nel/src/3d/texture_cube.cpp code/nel/src/3d/texture_dlm.cpp code/nel/src/3d/texture_emboss.cpp code/nel/src/3d/texture_far.cpp code/nel/src/3d/texture_file.cpp code/nel/src/3d/texture_font.cpp code/nel/src/3d/texture_grouped.cpp code/nel/src/3d/texture_mem.cpp code/nel/src/3d/texture_multi_file.cpp code/nel/src/3d/texture_near.cpp code/nel/src/3d/texture_user.cpp code/nel/src/3d/tile_bank.cpp code/nel/src/3d/tile_color.cpp code/nel/src/3d/tile_element.cpp code/nel/src/3d/tile_far_bank.cpp code/nel/src/3d/tile_light_influence.cpp code/nel/src/3d/tile_lumel.cpp code/nel/src/3d/tile_noise_map.cpp code/nel/src/3d/tile_vegetable_desc.cpp code/nel/src/3d/track.cpp code/nel/src/3d/track_keyframer.cpp code/nel/src/3d/track_sampled_common.cpp code/nel/src/3d/track_sampled_quat.cpp code/nel/src/3d/track_sampled_quat_small_header.cpp code/nel/src/3d/track_sampled_vector.cpp code/nel/src/3d/transform.cpp code/nel/src/3d/transform_shape.cpp code/nel/src/3d/transformable.cpp code/nel/src/3d/trav_scene.cpp code/nel/src/3d/u_bone.cpp code/nel/src/3d/u_camera.cpp code/nel/src/3d/u_instance.cpp code/nel/src/3d/u_instance_material.cpp code/nel/src/3d/u_material.cpp code/nel/src/3d/u_particle_system_instance.cpp code/nel/src/3d/u_point_light.cpp code/nel/src/3d/u_shape.cpp code/nel/src/3d/u_skeleton.cpp code/nel/src/3d/u_transform.cpp code/nel/src/3d/u_transformable.cpp code/nel/src/3d/u_visual_collision_mesh.cpp code/nel/src/3d/u_water.cpp code/nel/src/3d/vegetable.cpp code/nel/src/3d/vegetable_blend_layer_model.cpp code/nel/src/3d/vegetable_clip_block.cpp code/nel/src/3d/vegetable_def.cpp code/nel/src/3d/vegetable_instance_group.cpp code/nel/src/3d/vegetable_light_ex.cpp code/nel/src/3d/vegetable_manager.cpp code/nel/src/3d/vegetable_quadrant.cpp code/nel/src/3d/vegetable_shape.cpp code/nel/src/3d/vegetable_sort_block.cpp code/nel/src/3d/vegetable_uv8.cpp code/nel/src/3d/vegetablevb_allocator.cpp code/nel/src/3d/vertex_buffer.cpp code/nel/src/3d/vertex_buffer_heap.cpp code/nel/src/3d/vertex_program.cpp code/nel/src/3d/vertex_program_parse.cpp code/nel/src/3d/vertex_stream_manager.cpp code/nel/src/3d/viewport.cpp code/nel/src/3d/visual_collision_entity.cpp code/nel/src/3d/visual_collision_entity_user.cpp code/nel/src/3d/visual_collision_manager.cpp code/nel/src/3d/visual_collision_manager_user.cpp code/nel/src/3d/visual_collision_mesh.cpp code/nel/src/3d/water_env_map.cpp code/nel/src/3d/water_env_map_user.cpp code/nel/src/3d/water_height_map.cpp code/nel/src/3d/water_model.cpp code/nel/src/3d/water_pool_manager.cpp code/nel/src/3d/water_shape.cpp code/nel/src/3d/zone.cpp code/nel/src/3d/zone_corner_smoother.cpp code/nel/src/3d/zone_lighter.cpp code/nel/src/3d/zone_manager.cpp code/nel/src/3d/zone_search.cpp code/nel/src/3d/zone_smoother.cpp code/nel/src/3d/zone_symmetrisation.cpp code/nel/src/3d/zone_tgt_smoother.cpp code/nel/src/georges/form.cpp code/nel/src/georges/form_dfn.cpp code/nel/src/georges/form_elm.cpp code/nel/src/georges/form_loader.cpp code/nel/src/georges/header.cpp code/nel/src/georges/load_form.cpp code/nel/src/georges/type.cpp code/nel/src/gui/action_handler.cpp code/nel/src/gui/ctrl_base.cpp code/nel/src/gui/ctrl_base_button.cpp code/nel/src/gui/ctrl_button.cpp code/nel/src/gui/ctrl_col_pick.cpp code/nel/src/gui/ctrl_draggable.cpp code/nel/src/gui/ctrl_polygon.cpp code/nel/src/gui/ctrl_quad.cpp code/nel/src/gui/ctrl_scroll.cpp code/nel/src/gui/ctrl_scroll_base.cpp code/nel/src/gui/ctrl_sheet_selection.cpp code/nel/src/gui/ctrl_text_button.cpp code/nel/src/gui/ctrl_tooltip.cpp code/nel/src/gui/db_manager.cpp code/nel/src/gui/dbgroup_combo_box.cpp code/nel/src/gui/dbgroup_select_number.cpp code/nel/src/gui/dbview_bar.cpp code/nel/src/gui/dbview_bar3.cpp code/nel/src/gui/dbview_digit.cpp code/nel/src/gui/dbview_number.cpp code/nel/src/gui/dbview_quantity.cpp code/nel/src/gui/event_descriptor.cpp code/nel/src/gui/event_listener.cpp code/nel/src/gui/group_container.cpp code/nel/src/gui/group_container_base.cpp code/nel/src/gui/group_editbox.cpp code/nel/src/gui/group_editbox_base.cpp code/nel/src/gui/group_editbox_decor.cpp code/nel/src/gui/group_frame.cpp code/nel/src/gui/group_header.cpp code/nel/src/gui/group_html.cpp code/nel/src/gui/group_html_parser.cpp code/nel/src/gui/group_list.cpp code/nel/src/gui/group_menu.cpp code/nel/src/gui/group_modal.cpp code/nel/src/gui/group_paragraph.cpp code/nel/src/gui/group_scrolltext.cpp code/nel/src/gui/group_submenu_base.cpp code/nel/src/gui/group_tab.cpp code/nel/src/gui/group_table.cpp code/nel/src/gui/group_tree.cpp code/nel/src/gui/group_wheel.cpp code/nel/src/gui/input_handler.cpp code/nel/src/gui/interface_anim.cpp code/nel/src/gui/interface_element.cpp code/nel/src/gui/interface_expr.cpp code/nel/src/gui/interface_expr_node.cpp code/nel/src/gui/interface_expr_user_fct.cpp code/nel/src/gui/interface_factory.cpp code/nel/src/gui/interface_group.cpp code/nel/src/gui/interface_link.cpp code/nel/src/gui/interface_options.cpp code/nel/src/gui/interface_parser.cpp code/nel/src/gui/interface_property.cpp code/nel/src/gui/libwww.cpp code/nel/src/gui/libwww_types.cpp code/nel/src/gui/link_hack.cpp code/nel/src/gui/lua_helper.cpp code/nel/src/gui/lua_ihm.cpp code/nel/src/gui/lua_manager.cpp code/nel/src/gui/lua_object.cpp code/nel/src/gui/parser.cpp code/nel/src/gui/proc.cpp code/nel/src/gui/reflect.cpp code/nel/src/gui/reflect_register.cpp code/nel/src/gui/root_group.cpp code/nel/src/gui/stdpch.h code/nel/src/gui/string_case.cpp code/nel/src/gui/url_parser.cpp code/nel/src/gui/view_base.cpp code/nel/src/gui/view_bitmap.cpp code/nel/src/gui/view_bitmap_combo.cpp code/nel/src/gui/view_link.cpp code/nel/src/gui/view_pointer.cpp code/nel/src/gui/view_pointer_base.cpp code/nel/src/gui/view_polygon.cpp code/nel/src/gui/view_quad.cpp code/nel/src/gui/view_renderer.cpp code/nel/src/gui/view_text.cpp code/nel/src/gui/view_text_formated.cpp code/nel/src/gui/view_text_id.cpp code/nel/src/gui/view_text_id_formated.cpp code/nel/src/gui/widget_manager.cpp code/nel/src/ligo/ligo_config.cpp code/nel/src/ligo/ligo_error.cpp code/nel/src/ligo/ligo_error.h code/nel/src/ligo/ligo_material.cpp code/nel/src/ligo/ligo_material.h code/nel/src/ligo/primitive.cpp code/nel/src/ligo/primitive_class.cpp code/nel/src/ligo/stdligo.h code/nel/src/ligo/transition.cpp code/nel/src/ligo/transition.h code/nel/src/ligo/zone_bank.cpp code/nel/src/ligo/zone_edge.cpp code/nel/src/ligo/zone_edge.h code/nel/src/ligo/zone_template.cpp code/nel/src/ligo/zone_template.h code/nel/src/logic/logic_condition.cpp code/nel/src/logic/stdlogic.h code/nel/src/misc/CMakeLists.txt code/nel/src/misc/app_context.cpp code/nel/src/misc/big_file.cpp code/nel/src/misc/bitmap.cpp code/nel/src/misc/bitmap_gif.cpp code/nel/src/misc/bitmap_png.cpp code/nel/src/misc/cdb.cpp code/nel/src/misc/cdb_bank_handler.cpp code/nel/src/misc/cdb_branch.cpp code/nel/src/misc/cdb_branch_observing_handler.cpp code/nel/src/misc/cdb_check_sum.cpp code/nel/src/misc/cdb_leaf.cpp code/nel/src/misc/cdb_manager.cpp code/nel/src/misc/check_fpu.cpp code/nel/src/misc/co_task.cpp code/nel/src/misc/command.cpp code/nel/src/misc/common.cpp code/nel/src/misc/config_file/cf_gramatical.cpp code/nel/src/misc/config_file/cf_lexical.cpp code/nel/src/misc/contiguous_block_allocator.cpp code/nel/src/misc/debug.cpp code/nel/src/misc/displayer.cpp code/nel/src/misc/dynloadlib.cpp code/nel/src/misc/eid_translator.cpp code/nel/src/misc/eval_num_expr.cpp code/nel/src/misc/event_emitter.cpp code/nel/src/misc/file.cpp code/nel/src/misc/fixed_size_allocator.cpp code/nel/src/misc/geom_ext.cpp code/nel/src/misc/heap_memory.cpp code/nel/src/misc/hierarchical_timer.cpp code/nel/src/misc/i_xml.cpp code/nel/src/misc/inter_window_msg_queue.cpp code/nel/src/misc/log.cpp code/nel/src/misc/mem_displayer.cpp code/nel/src/misc/o_xml.cpp code/nel/src/misc/object_arena_allocator.cpp code/nel/src/misc/object_vector.cpp code/nel/src/misc/p_thread.cpp code/nel/src/misc/path.cpp code/nel/src/misc/polygon.cpp code/nel/src/misc/quad.cpp code/nel/src/misc/rgba.cpp code/nel/src/misc/smart_ptr.cpp code/nel/src/misc/stdmisc.h code/nel/src/misc/stl_block_allocator.cpp code/nel/src/misc/stl_block_list.cpp code/nel/src/misc/stop_watch.cpp code/nel/src/misc/string_common.cpp code/nel/src/misc/string_id_array.cpp code/nel/src/misc/string_mapper.cpp code/nel/src/misc/system_info.cpp code/nel/src/misc/task_manager.cpp code/nel/src/misc/uv.cpp code/nel/src/misc/value_smoother.cpp code/nel/src/misc/vector_2d.cpp code/nel/src/misc/vector_h.cpp code/nel/src/misc/win_displayer.cpp code/nel/src/misc/win_tray.cpp code/nel/src/misc/words_dictionary.cpp code/nel/src/misc/xml_auto_ptr.cpp code/nel/src/net/admin.cpp code/nel/src/net/buf_sock.cpp code/nel/src/net/email.cpp code/nel/src/net/login_client.cpp code/nel/src/net/login_server.cpp code/nel/src/net/message_recorder.cpp code/nel/src/net/module.cpp code/nel/src/net/module_common.cpp code/nel/src/net/module_gateway.cpp code/nel/src/net/module_gateway_transport.cpp code/nel/src/net/module_local_gateway.cpp code/nel/src/net/module_manager.cpp code/nel/src/net/naming_client.cpp code/nel/src/net/service.cpp code/nel/src/net/sock.cpp code/nel/src/net/udp_sim_sock.cpp code/nel/src/net/unified_network.cpp code/nel/src/net/varpath.cpp code/nel/src/pacs/build_indoor.cpp code/nel/src/pacs/edge_quad.cpp code/nel/src/pacs/global_retriever.cpp code/nel/src/pacs/move_container.cpp code/nel/src/pacs/move_primitive.cpp code/nel/src/pacs/primitive_block_pacs.cpp code/nel/src/pacs/primitive_world_image.cpp code/nel/src/pipeline/database_config.cpp code/nel/src/pipeline/project_config.cpp code/nel/src/sound/audio_mixer_user.cpp code/nel/src/sound/context_sound.cpp code/nel/src/sound/driver/dsound/sound_driver_dsound.cpp code/nel/src/sound/driver/openal/stdopenal.h code/nel/src/sound/driver/sound_driver.cpp code/nel/src/sound/driver/xaudio2/stdxaudio2.h code/nel/src/sound/group_controller.cpp code/nel/src/sound/sample_bank_manager.cpp code/nel/src/sound/sound.cpp code/nel/src/sound/sound_bank.cpp code/nel/tools/3d/CMakeLists.txt code/nel/tools/3d/build_far_bank/build_far_bank.cpp code/nel/tools/3d/cluster_viewer/view_cs.cpp code/nel/tools/3d/ig_lighter/ig_lighter.cpp code/nel/tools/3d/lightmap_optimizer/main.cpp code/nel/tools/3d/ligo/plugin_max/CMakeLists.txt code/nel/tools/3d/ligo/plugin_max/ligoscript.txt code/nel/tools/3d/ligo/plugin_max/max_to_ligo.cpp code/nel/tools/3d/ligo/plugin_max/max_to_ligo.h code/nel/tools/3d/ligo/plugin_max/script.cpp code/nel/tools/3d/object_viewer/about_dialog.cpp code/nel/tools/3d/object_viewer/animation_dlg.cpp code/nel/tools/3d/object_viewer/animation_dlg.h code/nel/tools/3d/object_viewer/animation_set_dlg.cpp code/nel/tools/3d/object_viewer/attrib_dlg.cpp code/nel/tools/3d/object_viewer/bin_op_dlg.h code/nel/tools/3d/object_viewer/bound_checker.h code/nel/tools/3d/object_viewer/choose_name.cpp code/nel/tools/3d/object_viewer/choose_name.h code/nel/tools/3d/object_viewer/choose_pool_id.cpp code/nel/tools/3d/object_viewer/create_file_dlg.cpp code/nel/tools/3d/object_viewer/direction_attr.cpp code/nel/tools/3d/object_viewer/dup_ps.cpp code/nel/tools/3d/object_viewer/edit_ex.cpp code/nel/tools/3d/object_viewer/edit_ex.h code/nel/tools/3d/object_viewer/edit_morph_mesh_dlg.cpp code/nel/tools/3d/object_viewer/edit_ps_sound.cpp code/nel/tools/3d/object_viewer/editable_range.cpp code/nel/tools/3d/object_viewer/editable_range.h code/nel/tools/3d/object_viewer/emitter_dlg.cpp code/nel/tools/3d/object_viewer/global_wind_dlg.cpp code/nel/tools/3d/object_viewer/lb_extern_id_dlg.cpp code/nel/tools/3d/object_viewer/located_bindable_dialog.cpp code/nel/tools/3d/object_viewer/located_properties.cpp code/nel/tools/3d/object_viewer/located_target_dlg.cpp code/nel/tools/3d/object_viewer/main_frame.cpp code/nel/tools/3d/object_viewer/mesh_dlg.cpp code/nel/tools/3d/object_viewer/multi_tex_dlg.cpp code/nel/tools/3d/object_viewer/object_viewer.cpp code/nel/tools/3d/object_viewer/object_viewer.h code/nel/tools/3d/object_viewer/object_viewer_interface.h code/nel/tools/3d/object_viewer/particle_dlg.cpp code/nel/tools/3d/object_viewer/particle_system_edit.cpp code/nel/tools/3d/object_viewer/particle_tree_ctrl.cpp code/nel/tools/3d/object_viewer/particle_tree_ctrl.h code/nel/tools/3d/object_viewer/particle_workspace.cpp code/nel/tools/3d/object_viewer/pick_sound.cpp code/nel/tools/3d/object_viewer/precomputed_rotations_dlg.cpp code/nel/tools/3d/object_viewer/ps_mover_dlg.cpp code/nel/tools/3d/object_viewer/range_selector.cpp code/nel/tools/3d/object_viewer/scheme_bank_dlg.cpp code/nel/tools/3d/object_viewer/select_string.cpp code/nel/tools/3d/object_viewer/select_string.h code/nel/tools/3d/object_viewer/skeleton_scale_dlg.cpp code/nel/tools/3d/object_viewer/slot_dlg.cpp code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp code/nel/tools/3d/object_viewer/snapshot_tool_dlg.h code/nel/tools/3d/object_viewer/sound_anim_dlg.cpp code/nel/tools/3d/object_viewer/sound_anim_view.cpp code/nel/tools/3d/object_viewer/sound_system.cpp code/nel/tools/3d/object_viewer/start_stop_particle_system.cpp code/nel/tools/3d/object_viewer/texture_anim_dlg.cpp code/nel/tools/3d/object_viewer/texture_chooser.cpp code/nel/tools/3d/object_viewer/value_gradient_dlg.cpp code/nel/tools/3d/object_viewer/vegetable_copy_dlg.cpp code/nel/tools/3d/object_viewer/vegetable_density_page.cpp code/nel/tools/3d/object_viewer/vegetable_dlg.cpp code/nel/tools/3d/object_viewer/vegetable_dlg.h code/nel/tools/3d/object_viewer/vegetable_edit_tools.cpp code/nel/tools/3d/object_viewer/vegetable_list_box.cpp code/nel/tools/3d/object_viewer/vegetable_list_color.cpp code/nel/tools/3d/object_viewer/vegetable_noise_value_dlg.cpp code/nel/tools/3d/object_viewer/vegetable_select_dlg.cpp code/nel/tools/3d/object_viewer/vegetable_wind_dlg.cpp code/nel/tools/3d/object_viewer/water_pool_editor.cpp code/nel/tools/3d/object_viewer_exe/object_viewer_exe.cpp code/nel/tools/3d/object_viewer_widget/src/object_viewer_widget.cpp code/nel/tools/3d/plugin_max/nel_3dsmax_shared/CMakeLists.txt code/nel/tools/3d/plugin_max/nel_export/CMakeLists.txt code/nel/tools/3d/plugin_max/nel_export/nel_export.cpp code/nel/tools/3d/plugin_max/nel_export/nel_export.h code/nel/tools/3d/plugin_max/nel_export/nel_export_collision.cpp code/nel/tools/3d/plugin_max/nel_export/nel_export_export.cpp code/nel/tools/3d/plugin_max/nel_export/nel_export_filetools.cpp code/nel/tools/3d/plugin_max/nel_export/nel_export_node_properties.cpp code/nel/tools/3d/plugin_max/nel_export/nel_export_scene.cpp code/nel/tools/3d/plugin_max/nel_export/nel_export_script.cpp code/nel/tools/3d/plugin_max/nel_export/nel_export_swt.cpp code/nel/tools/3d/plugin_max/nel_export/nel_export_view.cpp code/nel/tools/3d/plugin_max/nel_export/nel_export_zone.cpp code/nel/tools/3d/plugin_max/nel_export/progress.cpp code/nel/tools/3d/plugin_max/nel_export/std_afx.h code/nel/tools/3d/plugin_max/nel_mesh_lib/CMakeLists.txt code/nel/tools/3d/plugin_max/nel_mesh_lib/calc_lm.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/calc_lm_rt.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_anim.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_collision.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_material.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh_interface.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_misc.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_nel.h code/nel/tools/3d/plugin_max/nel_mesh_lib/export_particle_system.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_radial_normal.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_remanence.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_scene.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_script.cpp code/nel/tools/3d/plugin_max/nel_mesh_lib/export_skinning.cpp code/nel/tools/3d/plugin_max/nel_patch_converter/CMakeLists.txt code/nel/tools/3d/plugin_max/nel_patch_converter/PO2RPO.h code/nel/tools/3d/plugin_max/nel_patch_converter/nel_patch_converter.cpp code/nel/tools/3d/plugin_max/nel_patch_converter/rykolscript.txt code/nel/tools/3d/plugin_max/nel_patch_converter/script.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/CMakeLists.txt code/nel/tools/3d/plugin_max/nel_patch_edit/editpat.h code/nel/tools/3d/plugin_max/nel_patch_edit/np.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_edit_patch_mod.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_add_patches.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_attach.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_del.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_detach.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_material.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_remember.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_selection.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_subdivide.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_tess.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_gui_bind.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_main.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_mods.cpp code/nel/tools/3d/plugin_max/nel_patch_edit/np_rollup.cpp code/nel/tools/3d/plugin_max/nel_patch_lib/CMakeLists.txt code/nel/tools/3d/plugin_max/nel_patch_lib/nel_patch_mesh.cpp code/nel/tools/3d/plugin_max/nel_patch_lib/nel_patch_mesh.h code/nel/tools/3d/plugin_max/nel_patch_lib/rpo.cpp code/nel/tools/3d/plugin_max/nel_patch_lib/rpo.h code/nel/tools/3d/plugin_max/nel_patch_lib/rpo2nel.cpp code/nel/tools/3d/plugin_max/nel_patch_paint/CMakeLists.txt code/nel/tools/3d/plugin_max/nel_patch_paint/DllEntry.cpp code/nel/tools/3d/plugin_max/nel_patch_paint/nel_patch_paint.h code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp code/nel/tools/3d/plugin_max/nel_patch_paint/paint_main.cpp code/nel/tools/3d/plugin_max/nel_patch_paint/paint_ui.cpp code/nel/tools/3d/plugin_max/nel_patch_paint/paint_vcolor.cpp code/nel/tools/3d/plugin_max/nel_patch_paint/paint_vcolor.h code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/CMakeLists.txt code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/Paint.cpp code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/vertex_tree_paint.cpp code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/vertex_tree_paint.h code/nel/tools/3d/plugin_max/scripts/nel_assets_png_batched.ms code/nel/tools/3d/plugin_max/scripts/nel_assets_ps_batched.ms code/nel/tools/3d/plugin_max/scripts/nel_assets_resave.ms code/nel/tools/3d/plugin_max/scripts/nel_assets_resave_hard.ms code/nel/tools/3d/plugin_max/scripts/nel_batched_mergesave.ms code/nel/tools/3d/plugin_max/tile_utility/CMakeLists.txt code/nel/tools/3d/plugin_max/tile_utility/rgbadd.cpp code/nel/tools/3d/plugin_max/tile_utility/tile_utility.cpp code/nel/tools/3d/shape2obj/main.cpp code/nel/tools/3d/shapes_exporter/main.cpp code/nel/tools/3d/tga_2_dds/tga2dds.cpp code/nel/tools/3d/tile_edit/Browse.cpp code/nel/tools/3d/tile_edit/Browse.h code/nel/tools/3d/tile_edit/SelectionTerritoire.cpp code/nel/tools/3d/tile_edit/View.cpp code/nel/tools/3d/tile_edit/choose_veget_set.cpp code/nel/tools/3d/tile_edit_qt/browser_model.cpp code/nel/tools/3d/tile_edit_qt/tile_browser_dlg.cpp code/nel/tools/3d/tile_edit_qt/tile_edit_dlg.cpp code/nel/tools/3d/zone_check_bind/zone_check_bind.cpp code/nel/tools/3d/zone_dependencies/zone_dependencies.cpp code/nel/tools/3d/zone_lighter/zone_lighter.cpp code/nel/tools/3d/zviewer/zviewer.cpp code/nel/tools/build_gamedata/generators/max_exporter_scripts/shape.ms code/nel/tools/build_gamedata/generators/tagged_max_exporter_template/export_footer.ms code/nel/tools/build_gamedata/processes/anim/maxscript/anim_export.ms code/nel/tools/build_gamedata/processes/clodbank/maxscript/clod_export.ms code/nel/tools/build_gamedata/processes/ig/maxscript/ig_export.ms code/nel/tools/build_gamedata/processes/pacs_prim/maxscript/pacs_prim_export.ms code/nel/tools/build_gamedata/processes/rbank/maxscript/cmb_export.ms code/nel/tools/build_gamedata/processes/shape/maxscript/shape_export.ms code/nel/tools/build_gamedata/processes/veget/maxscript/veget_export.ms code/nel/tools/georges/georges2csv/georges2csv.cpp code/nel/tools/logic/logic_editor_dll/Condition.cpp code/nel/tools/logic/logic_editor_dll/ConditionPage.cpp code/nel/tools/logic/logic_editor_dll/ConditionsView.cpp code/nel/tools/logic/logic_editor_dll/Counter.cpp code/nel/tools/logic/logic_editor_dll/CounterPage.cpp code/nel/tools/logic/logic_editor_dll/EditorFormView.cpp code/nel/tools/logic/logic_editor_dll/MainFrm.cpp code/nel/tools/logic/logic_editor_dll/MainFrm.h code/nel/tools/logic/logic_editor_dll/State.cpp code/nel/tools/logic/logic_editor_dll/StatePage.cpp code/nel/tools/logic/logic_editor_dll/StatesView.cpp code/nel/tools/logic/logic_editor_dll/VariablePage.cpp code/nel/tools/logic/logic_editor_dll/logic_editor.cpp code/nel/tools/logic/logic_editor_dll/logic_editor.h code/nel/tools/logic/logic_editor_dll/logic_editorDoc.cpp code/nel/tools/logic/logic_editor_dll/logic_editorDoc.h code/nel/tools/logic/logic_editor_dll/logic_editor_interface.h code/nel/tools/misc/bnp_make/main.cpp code/nel/tools/misc/branch_patcher/branch_patcherDlg.cpp code/nel/tools/misc/crash_report/crash_report_widget.ui code/nel/tools/misc/data_mirror/data_mirror.cpp code/nel/tools/misc/data_mirror/data_mirrorDlg.cpp code/nel/tools/misc/log_analyser/FilterDialog.cpp code/nel/tools/misc/log_analyser/PlugInSelector.cpp code/nel/tools/misc/log_analyser/StdAfx.h code/nel/tools/misc/log_analyser/ViewDialog.cpp code/nel/tools/misc/log_analyser/log_analyserDlg.cpp code/nel/tools/misc/make_sheet_id/make_sheet_id.cpp code/nel/tools/misc/words_dic/words_dicDlg.cpp code/nel/tools/nel_unit_test/nel_unit_test.cpp code/nel/tools/nel_unit_test/ut_ligo.h code/nel/tools/nel_unit_test/ut_misc.h code/nel/tools/nel_unit_test/ut_net.h code/nel/tools/pacs/build_rbank/build_surf.cpp code/ryzom/client/CMakeLists.txt code/ryzom/client/client_default.cfg code/ryzom/client/data/gamedev/fd.cmd code/ryzom/client/data/gamedev/fd2.cmd code/ryzom/client/data/gamedev/fd3.cmd code/ryzom/client/data/gamedev/interfaces_v3/actions.xml code/ryzom/client/data/gamedev/interfaces_v3/bg_downloader.xml code/ryzom/client/data/gamedev/interfaces_v3/bot_chat_v4.xml code/ryzom/client/data/gamedev/interfaces_v3/commands.xml code/ryzom/client/data/gamedev/interfaces_v3/config.xml code/ryzom/client/data/gamedev/interfaces_v3/game_config.xml code/ryzom/client/data/gamedev/interfaces_v3/guild.xml code/ryzom/client/data/gamedev/interfaces_v3/help.xml code/ryzom/client/data/gamedev/interfaces_v3/hierarchy.xml code/ryzom/client/data/gamedev/interfaces_v3/info_player.lua code/ryzom/client/data/gamedev/interfaces_v3/info_player.xml code/ryzom/client/data/gamedev/interfaces_v3/interaction.lua code/ryzom/client/data/gamedev/interfaces_v3/interaction.xml code/ryzom/client/data/gamedev/interfaces_v3/login_config.xml code/ryzom/client/data/gamedev/interfaces_v3/login_main.xml code/ryzom/client/data/gamedev/interfaces_v3/login_widgets.xml code/ryzom/client/data/gamedev/interfaces_v3/macros.xml code/ryzom/client/data/gamedev/interfaces_v3/map.xml code/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.lua code/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.xml code/ryzom/client/data/gamedev/interfaces_v3/out_v2_config.xml code/ryzom/client/data/gamedev/interfaces_v3/out_v2_hierarchy.xml code/ryzom/client/data/gamedev/interfaces_v3/out_v2_select.xml code/ryzom/client/data/gamedev/interfaces_v3/outgame_career.xml code/ryzom/client/data/gamedev/interfaces_v3/outgame_config.xml code/ryzom/client/data/gamedev/interfaces_v3/outgame_summary.xml code/ryzom/client/data/gamedev/interfaces_v3/phrase.xml code/ryzom/client/data/gamedev/interfaces_v3/player.lua code/ryzom/client/data/gamedev/interfaces_v3/player.xml code/ryzom/client/data/gamedev/interfaces_v3/player_trade.xml code/ryzom/client/data/gamedev/interfaces_v3/reset.xml code/ryzom/client/data/gamedev/interfaces_v3/webig_widgets.xml code/ryzom/client/data/gamedev/interfaces_v3/widgets.xml code/ryzom/client/data/gamedev/pa.cmd code/ryzom/client/data/gamedev/steed.cmd code/ryzom/client/data/gamedev/team.cmd code/ryzom/client/data/gamedev/texture_extra.txt code/ryzom/client/macosx/upgd_nl.sh code/ryzom/client/src/CMakeLists.txt code/ryzom/client/src/actions.cpp code/ryzom/client/src/bg_downloader_access.cpp code/ryzom/client/src/browse_faq.cpp code/ryzom/client/src/bug_report/bug_reportDlg.cpp code/ryzom/client/src/character_cl.cpp code/ryzom/client/src/character_cl.h code/ryzom/client/src/client.cpp code/ryzom/client/src/client.rc code/ryzom/client/src/client_cfg.cpp code/ryzom/client/src/client_cfg.h code/ryzom/client/src/client_chat_manager.cpp code/ryzom/client/src/client_sheets/animation_set_list_sheet.cpp code/ryzom/client/src/client_sheets/animation_set_list_sheet.h code/ryzom/client/src/client_sheets/item_fx_sheet.cpp code/ryzom/client/src/client_sheets/item_sheet.cpp code/ryzom/client/src/client_sheets/mission_sheet.cpp code/ryzom/client/src/client_sheets/outpost_building_sheet.cpp code/ryzom/client/src/client_sheets/pact_sheet.cpp code/ryzom/client/src/client_sheets/pact_sheet.h code/ryzom/client/src/client_sheets/race_stats_sheet.cpp code/ryzom/client/src/client_sheets/sky_object_sheet.cpp code/ryzom/client/src/client_sheets/unblock_titles_sheet.cpp code/ryzom/client/src/commands.cpp code/ryzom/client/src/connection.cpp code/ryzom/client/src/contextual_cursor.cpp code/ryzom/client/src/continent_manager.cpp code/ryzom/client/src/continent_manager_build.h code/ryzom/client/src/cursor_functions.cpp code/ryzom/client/src/decal.cpp code/ryzom/client/src/door_manager.cpp code/ryzom/client/src/entities.cpp code/ryzom/client/src/entities.h code/ryzom/client/src/entity_cl.cpp code/ryzom/client/src/entity_cl.h code/ryzom/client/src/events_listener.cpp code/ryzom/client/src/far_tp.cpp code/ryzom/client/src/forage_source_cl.cpp code/ryzom/client/src/fx_cl.cpp code/ryzom/client/src/ground_fx_manager.cpp code/ryzom/client/src/init.cpp code/ryzom/client/src/init_main_loop.cpp code/ryzom/client/src/input.cpp code/ryzom/client/src/interface_v3/action_handler_debug.cpp code/ryzom/client/src/interface_v3/action_handler_game.cpp code/ryzom/client/src/interface_v3/action_handler_help.cpp code/ryzom/client/src/interface_v3/action_handler_item.cpp code/ryzom/client/src/interface_v3/action_handler_misc.cpp code/ryzom/client/src/interface_v3/action_handler_phrase.cpp code/ryzom/client/src/interface_v3/bar_manager.cpp code/ryzom/client/src/interface_v3/bar_manager.h code/ryzom/client/src/interface_v3/character_3d.cpp code/ryzom/client/src/interface_v3/chat_displayer.h code/ryzom/client/src/interface_v3/chat_text_manager.cpp code/ryzom/client/src/interface_v3/chat_text_manager.h code/ryzom/client/src/interface_v3/chat_window.cpp code/ryzom/client/src/interface_v3/dbctrl_sheet.cpp code/ryzom/client/src/interface_v3/dbctrl_sheet.h code/ryzom/client/src/interface_v3/group_html_cs.cpp code/ryzom/client/src/interface_v3/group_html_webig.cpp code/ryzom/client/src/interface_v3/group_in_scene_bubble.cpp code/ryzom/client/src/interface_v3/group_in_scene_user_info.cpp code/ryzom/client/src/interface_v3/group_in_scene_user_info.h code/ryzom/client/src/interface_v3/group_map.cpp code/ryzom/client/src/interface_v3/guild_manager.cpp code/ryzom/client/src/interface_v3/input_handler_manager.h code/ryzom/client/src/interface_v3/interface_3d_scene.cpp code/ryzom/client/src/interface_v3/interface_ddx.cpp code/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp code/ryzom/client/src/interface_v3/interface_manager.cpp code/ryzom/client/src/interface_v3/interface_observer.h code/ryzom/client/src/interface_v3/item_consumable_effect.cpp code/ryzom/client/src/interface_v3/item_special_effect.cpp code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h code/ryzom/client/src/interface_v3/macrocmd_key.cpp code/ryzom/client/src/interface_v3/macrocmd_manager.cpp code/ryzom/client/src/interface_v3/music_player.cpp code/ryzom/client/src/interface_v3/people_interraction.cpp code/ryzom/client/src/interface_v3/people_list.cpp code/ryzom/client/src/interface_v3/sbrick_manager.cpp code/ryzom/client/src/interface_v3/sbrick_manager.h code/ryzom/client/src/interface_v3/sphrase_manager.cpp code/ryzom/client/src/interface_v3/sphrase_manager.h code/ryzom/client/src/interface_v3/view_radar.cpp code/ryzom/client/src/login.cpp code/ryzom/client/src/login_patch.cpp code/ryzom/client/src/login_patch.h code/ryzom/client/src/login_progress_post_thread.cpp code/ryzom/client/src/login_xdelta.cpp code/ryzom/client/src/main_loop.cpp code/ryzom/client/src/micro_life_manager.cpp code/ryzom/client/src/misc.cpp code/ryzom/client/src/misc.h code/ryzom/client/src/net_manager.cpp code/ryzom/client/src/network_connection.cpp code/ryzom/client/src/network_connection.h code/ryzom/client/src/npc_icon.cpp code/ryzom/client/src/pacs_client.cpp code/ryzom/client/src/permanent_ban.cpp code/ryzom/client/src/player_cl.cpp code/ryzom/client/src/player_r2_cl.cpp code/ryzom/client/src/r2/auto_group.cpp code/ryzom/client/src/r2/dmc/action_historic.cpp code/ryzom/client/src/r2/dmc/client_edition_module.cpp code/ryzom/client/src/r2/dmc/client_edition_module.h code/ryzom/client/src/r2/dmc/dmc.cpp code/ryzom/client/src/r2/dmc/property_accessor.cpp code/ryzom/client/src/r2/editor.cpp code/ryzom/client/src/r2/editor.h code/ryzom/client/src/r2/instance_map_deco.cpp code/ryzom/client/src/r2/tool.cpp code/ryzom/client/src/r2/tool.h code/ryzom/client/src/r2/tool_choose_pos.cpp code/ryzom/client/src/r2/tool_create_entity.cpp code/ryzom/client/src/r2/tool_pick.cpp code/ryzom/client/src/r2/tool_select_move.cpp code/ryzom/client/src/release.cpp code/ryzom/client/src/rosace.cpp code/ryzom/client/src/ryzom.ico code/ryzom/client/src/session_browser.cpp code/ryzom/client/src/seven_zip/7zArcIn.cpp code/ryzom/client/src/seven_zip/7zMain.cpp code/ryzom/client/src/seven_zip/7zVersion.h code/ryzom/client/src/seven_zip/Aes.cpp code/ryzom/client/src/seven_zip/CpuArch.h code/ryzom/client/src/seven_zip/Lzma86Dec.cpp code/ryzom/client/src/seven_zip/Lzma86Enc.cpp code/ryzom/client/src/seven_zip/LzmaDec.cpp code/ryzom/client/src/seven_zip/LzmaEnc.cpp code/ryzom/client/src/seven_zip/Ppmd7.cpp code/ryzom/client/src/seven_zip/seven_zip.cpp code/ryzom/client/src/sheet_manager.cpp code/ryzom/client/src/sky.cpp code/ryzom/client/src/steam_client.cpp code/ryzom/client/src/string_manager_client.cpp code/ryzom/client/src/user_agent.cpp code/ryzom/client/src/user_entity.cpp code/ryzom/client/unix/CMakeLists.txt code/ryzom/client/unix/upgd_nl.sh code/ryzom/common/CMakeLists.txt code/ryzom/common/data_common/database.xml code/ryzom/common/data_common/landscape_col_prim_pacs_list.txt code/ryzom/common/data_common/msg.xml code/ryzom/common/data_common/r2/IslandScreenshots.cfg code/ryzom/common/data_common/r2/r2_islands.xml code/ryzom/common/data_common/r2/r2_ui_property_sheet.lua code/ryzom/common/data_common/visual_slot.tab code/ryzom/common/data_leveldesign/leveldesign/world_editor_files/world_editor_classes.xml code/ryzom/common/src/game_share/ai_wrapper.h code/ryzom/common/src/game_share/bg_downloader_msg.cpp code/ryzom/common/src/game_share/bg_downloader_msg.h code/ryzom/common/src/game_share/brick_families.cpp code/ryzom/common/src/game_share/brick_families.h code/ryzom/common/src/game_share/brick_flags.cpp code/ryzom/common/src/game_share/brick_flags.h code/ryzom/common/src/game_share/characteristics.cpp code/ryzom/common/src/game_share/characteristics.h code/ryzom/common/src/game_share/cst_loader.cpp code/ryzom/common/src/game_share/dms.cpp code/ryzom/common/src/game_share/effect_families.cpp code/ryzom/common/src/game_share/effect_families.h code/ryzom/common/src/game_share/inventories.h code/ryzom/common/src/game_share/item_infos.cpp code/ryzom/common/src/game_share/item_infos.h code/ryzom/common/src/game_share/light_cycle.cpp code/ryzom/common/src/game_share/login_registry.cpp code/ryzom/common/src/game_share/login_registry.h code/ryzom/common/src/game_share/magic_fx.cpp code/ryzom/common/src/game_share/magic_fx.h code/ryzom/common/src/game_share/mainland_summary.h code/ryzom/common/src/game_share/mirror_prop_value.h code/ryzom/common/src/game_share/mirrored_data_set.cpp code/ryzom/common/src/game_share/mode_and_behaviour.cpp code/ryzom/common/src/game_share/mode_and_behaviour.h code/ryzom/common/src/game_share/msg_ais_egs_gen.cpp code/ryzom/common/src/game_share/msg_client_server.h code/ryzom/common/src/game_share/object.cpp code/ryzom/common/src/game_share/persistent_data.h code/ryzom/common/src/game_share/persistent_data_inline.h code/ryzom/common/src/game_share/persistent_data_template.h code/ryzom/common/src/game_share/persistent_data_tree.cpp code/ryzom/common/src/game_share/power_types.cpp code/ryzom/common/src/game_share/power_types.h code/ryzom/common/src/game_share/ring_access.cpp code/ryzom/common/src/game_share/ring_session_manager_itf.h code/ryzom/common/src/game_share/ryzom_mirror_properties.cpp code/ryzom/common/src/game_share/ryzom_mirror_properties.h code/ryzom/common/src/game_share/ryzom_version.h code/ryzom/common/src/game_share/scenario.cpp code/ryzom/common/src/game_share/scenario_entry_points.cpp code/ryzom/common/src/game_share/scores.cpp code/ryzom/common/src/game_share/scores.h code/ryzom/common/src/game_share/season_file_ext.cpp code/ryzom/common/src/game_share/seeds.cpp code/ryzom/common/src/game_share/server_animation_module.cpp code/ryzom/common/src/game_share/server_edition_module.cpp code/ryzom/common/src/game_share/server_edition_module.h code/ryzom/common/src/game_share/simlag.cpp code/ryzom/common/src/game_share/string_mgr_module.cpp code/ryzom/common/src/game_share/time_weather_season/static_light_cycle.cpp code/ryzom/common/src/game_share/time_weather_season/time_and_season.cpp code/ryzom/common/src/game_share/time_weather_season/time_and_season.h code/ryzom/common/src/game_share/user_connection_mgr.cpp code/ryzom/common/src/game_share/utils.h code/ryzom/server/data_shard/egs/client_commands_privileges.txt code/ryzom/server/entities_game_service.cfg code/ryzom/server/entities_game_service_default.cfg code/ryzom/server/input_output_service.cfg code/ryzom/server/input_output_service_default.cfg code/ryzom/server/logger_service.cfg code/ryzom/server/session_browser_server.cfg code/ryzom/server/shard_unifier_service.cfg code/ryzom/server/src/admin_modules/admin_modules_itf.h code/ryzom/server/src/ags_test/command_event_manager.cpp code/ryzom/server/src/ags_test/move_grid.h code/ryzom/server/src/ai_service/ai.cpp code/ryzom/server/src/ai_service/ai.h code/ryzom/server/src/ai_service/ai_bot.cpp code/ryzom/server/src/ai_service/ai_bot.h code/ryzom/server/src/ai_service/ai_bot_fauna.cpp code/ryzom/server/src/ai_service/ai_bot_npc.cpp code/ryzom/server/src/ai_service/ai_bot_npc.h code/ryzom/server/src/ai_service/ai_entity_physical.h code/ryzom/server/src/ai_service/ai_entity_physical_inline.h code/ryzom/server/src/ai_service/ai_generic_fight.cpp code/ryzom/server/src/ai_service/ai_generic_fight_helpers.cpp code/ryzom/server/src/ai_service/ai_grp_fauna.cpp code/ryzom/server/src/ai_service/ai_grp_npc.cpp code/ryzom/server/src/ai_service/ai_grp_npc.h code/ryzom/server/src/ai_service/ai_mgr_fauna.cpp code/ryzom/server/src/ai_service/ai_place.cpp code/ryzom/server/src/ai_service/ai_player.cpp code/ryzom/server/src/ai_service/ai_profile_npc.cpp code/ryzom/server/src/ai_service/ai_script_comp.cpp code/ryzom/server/src/ai_service/commands.cpp code/ryzom/server/src/ai_service/continent.cpp code/ryzom/server/src/ai_service/family_profile_tribe.cpp code/ryzom/server/src/ai_service/generic_logic_action.cpp code/ryzom/server/src/ai_service/messages.cpp code/ryzom/server/src/ai_service/mirrors.cpp code/ryzom/server/src/ai_service/nf_grp.cpp code/ryzom/server/src/ai_service/nf_grp_npc.cpp code/ryzom/server/src/ai_service/script_compiler.cpp code/ryzom/server/src/ai_service/script_compiler_native_func.cpp code/ryzom/server/src/ai_service/sheets.cpp code/ryzom/server/src/ai_share/16x16_layer.h code/ryzom/server/src/ai_share/ai_event_report.cpp code/ryzom/server/src/ai_share/ai_event_report.h code/ryzom/server/src/ai_share/ai_types.h code/ryzom/server/src/ai_share/ai_wrapper_server.cpp code/ryzom/server/src/ai_share/world_map.cpp code/ryzom/server/src/ai_share/world_map.h code/ryzom/server/src/entities_game_service/admin.cpp code/ryzom/server/src/entities_game_service/building_manager/building_physical.cpp code/ryzom/server/src/entities_game_service/cdb_group.h code/ryzom/server/src/entities_game_service/common_shard_callbacks.cpp code/ryzom/server/src/entities_game_service/creature_manager/creature.cpp code/ryzom/server/src/entities_game_service/creature_manager/creature_manager.cpp code/ryzom/server/src/entities_game_service/creature_manager/creature_manager.h code/ryzom/server/src/entities_game_service/database_plr.cpp code/ryzom/server/src/entities_game_service/database_plr.h code/ryzom/server/src/entities_game_service/deposit.cpp code/ryzom/server/src/entities_game_service/egs_mirror.cpp code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_ai_action.cpp code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_ai_action.h code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_brick.cpp code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_brick.cpp.h code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_brick.h code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_game_item.cpp code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_game_item.h code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_game_sheet.cpp code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_game_sheet.h code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_harvestable.cpp code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_outpost.cpp code/ryzom/server/src/entities_game_service/egs_sheets/egs_static_rolemaster_phrase.cpp code/ryzom/server/src/entities_game_service/egs_variables.cpp code/ryzom/server/src/entities_game_service/egs_variables.h code/ryzom/server/src/entities_game_service/entities_game_service.cpp code/ryzom/server/src/entities_game_service/entity_manager/entity_base.cpp code/ryzom/server/src/entities_game_service/entity_manager/entity_base.h code/ryzom/server/src/entities_game_service/entity_manager/entity_callbacks.cpp code/ryzom/server/src/entities_game_service/entity_manager/entity_manager.cpp code/ryzom/server/src/entities_game_service/forage_progress.cpp code/ryzom/server/src/entities_game_service/forage_progress.h code/ryzom/server/src/entities_game_service/game_item_manager/game_item.cpp code/ryzom/server/src/entities_game_service/game_item_manager/game_item.h code/ryzom/server/src/entities_game_service/harvest_source.cpp code/ryzom/server/src/entities_game_service/harvest_source.h code/ryzom/server/src/entities_game_service/mission_manager/mission_item.cpp code/ryzom/server/src/entities_game_service/mission_manager/mission_log.h code/ryzom/server/src/entities_game_service/mission_manager/missions_commands.cpp code/ryzom/server/src/entities_game_service/outpost_manager/outpost.h code/ryzom/server/src/entities_game_service/outpost_manager/outpost_building.cpp code/ryzom/server/src/entities_game_service/phrase_manager/area_effect.h code/ryzom/server/src/entities_game_service/phrase_manager/aura_regen_effect.cpp code/ryzom/server/src/entities_game_service/phrase_manager/aura_regen_effect.h code/ryzom/server/src/entities_game_service/phrase_manager/bleed_effect.cpp code/ryzom/server/src/entities_game_service/phrase_manager/bleed_effect.h code/ryzom/server/src/entities_game_service/phrase_manager/combat_action_bleed.h code/ryzom/server/src/entities_game_service/phrase_manager/combat_action_special_damage.cpp code/ryzom/server/src/entities_game_service/phrase_manager/combat_bleed_effect.cpp code/ryzom/server/src/entities_game_service/phrase_manager/combat_bleed_effect.h code/ryzom/server/src/entities_game_service/phrase_manager/combat_phrase.cpp code/ryzom/server/src/entities_game_service/phrase_manager/combat_phrase.h code/ryzom/server/src/entities_game_service/phrase_manager/damage_aura_effect.cpp code/ryzom/server/src/entities_game_service/phrase_manager/damage_aura_effect.h code/ryzom/server/src/entities_game_service/phrase_manager/faber_action.cpp code/ryzom/server/src/entities_game_service/phrase_manager/faber_phrase.cpp code/ryzom/server/src/entities_game_service/phrase_manager/faber_phrase.h code/ryzom/server/src/entities_game_service/phrase_manager/fg_extraction_phrase.cpp code/ryzom/server/src/entities_game_service/phrase_manager/fg_prospection_phrase.cpp code/ryzom/server/src/entities_game_service/phrase_manager/forage_phrase.cpp code/ryzom/server/src/entities_game_service/phrase_manager/forage_phrase.h code/ryzom/server/src/entities_game_service/phrase_manager/harvest_phrase.cpp code/ryzom/server/src/entities_game_service/phrase_manager/harvest_phrase.h code/ryzom/server/src/entities_game_service/phrase_manager/magic_action_affect_stat.cpp code/ryzom/server/src/entities_game_service/phrase_manager/magic_action_ai_hot.cpp code/ryzom/server/src/entities_game_service/phrase_manager/magic_action_attack.cpp code/ryzom/server/src/entities_game_service/phrase_manager/magic_action_attack.h code/ryzom/server/src/entities_game_service/phrase_manager/magic_action_debuff.cpp code/ryzom/server/src/entities_game_service/phrase_manager/magic_action_dot.cpp code/ryzom/server/src/entities_game_service/phrase_manager/magic_action_heal.cpp code/ryzom/server/src/entities_game_service/phrase_manager/magic_action_hot.cpp code/ryzom/server/src/entities_game_service/phrase_manager/magic_action_negative_effect.cpp code/ryzom/server/src/entities_game_service/phrase_manager/magic_phrase.cpp code/ryzom/server/src/entities_game_service/phrase_manager/magic_phrase.h code/ryzom/server/src/entities_game_service/phrase_manager/nolink_dot_effect.cpp code/ryzom/server/src/entities_game_service/phrase_manager/nolink_hot_effect.cpp code/ryzom/server/src/entities_game_service/phrase_manager/phrase_utilities_functions.cpp code/ryzom/server/src/entities_game_service/phrase_manager/phrase_utilities_functions.h code/ryzom/server/src/entities_game_service/phrase_manager/s_link_effect_dot.cpp code/ryzom/server/src/entities_game_service/phrase_manager/s_link_effect_dot.h code/ryzom/server/src/entities_game_service/phrase_manager/s_link_effect_hot.cpp code/ryzom/server/src/entities_game_service/phrase_manager/s_link_effect_hot.h code/ryzom/server/src/entities_game_service/phrase_manager/special_power_balance.cpp code/ryzom/server/src/entities_game_service/phrase_manager/special_power_balance.h code/ryzom/server/src/entities_game_service/phrase_manager/special_power_basic_aura.cpp code/ryzom/server/src/entities_game_service/phrase_manager/special_power_dot.cpp code/ryzom/server/src/entities_game_service/phrase_manager/special_power_enchant_weapon.cpp code/ryzom/server/src/entities_game_service/phrase_manager/special_power_heal.cpp code/ryzom/server/src/entities_game_service/phrase_manager/special_power_heal.h code/ryzom/server/src/entities_game_service/phrase_manager/special_power_phrase.cpp code/ryzom/server/src/entities_game_service/phrase_manager/toxic_cloud.cpp code/ryzom/server/src/entities_game_service/player_manager/admin_properties.cpp code/ryzom/server/src/entities_game_service/player_manager/character.cpp code/ryzom/server/src/entities_game_service/player_manager/character.h code/ryzom/server/src/entities_game_service/player_manager/character_inventory_manipulation.cpp code/ryzom/server/src/entities_game_service/player_manager/character_tick_update_timer_event.h code/ryzom/server/src/entities_game_service/player_manager/character_version_adapter.cpp code/ryzom/server/src/entities_game_service/player_manager/persistent_player_data.cpp code/ryzom/server/src/entities_game_service/player_manager/player_manager.cpp code/ryzom/server/src/entities_game_service/progression/progression_common.h code/ryzom/server/src/entities_game_service/progression/progression_pve.cpp code/ryzom/server/src/entities_game_service/progression/progression_pve.h code/ryzom/server/src/entities_game_service/progression/progression_pvp.cpp code/ryzom/server/src/entities_game_service/progression/progression_pvp.h code/ryzom/server/src/entities_game_service/pvp_manager/pvp_base.h code/ryzom/server/src/entities_game_service/pvp_manager/pvp_faction_reward_manager/pvp_faction_reward_manager.cpp code/ryzom/server/src/entities_game_service/pvp_manager/pvp_faction_reward_manager/totem_base.cpp code/ryzom/server/src/entities_game_service/pvp_manager/pvp_faction_reward_manager/totem_base.h code/ryzom/server/src/entities_game_service/pvp_manager/pvp_faction_reward_manager/totem_effect.cpp code/ryzom/server/src/entities_game_service/pvp_manager/pvp_manager.cpp code/ryzom/server/src/entities_game_service/pvp_manager/pvp_manager_2.cpp code/ryzom/server/src/entities_game_service/team_manager/team.cpp code/ryzom/server/src/entity_view_service/move_grid.h code/ryzom/server/src/frontend_service/distance_prioritizer.cpp code/ryzom/server/src/frontend_service/vision_provider.cpp code/ryzom/server/src/general_utilities_service/stat_character.cpp code/ryzom/server/src/general_utilities_service/stat_character.h code/ryzom/server/src/general_utilities_service/stat_user_char_info_extractors.cpp code/ryzom/server/src/gpm_service/cell.h code/ryzom/server/src/gpm_service/move_grid.h code/ryzom/server/src/gpm_service/world_entity.cpp code/ryzom/server/src/gpm_service/world_entity.h code/ryzom/server/src/input_output_service/chat_manager.cpp code/ryzom/server/src/input_output_service/string_manager_parser.cpp code/ryzom/server/src/logger_service/log_query.cpp code/ryzom/server/src/logger_service/log_query.h code/ryzom/server/src/mail_forum_service/hof_generator.cpp code/ryzom/server/src/monitor_service/client.cpp code/ryzom/server/src/monitor_service/client.h code/ryzom/server/src/monitor_service/mirrors.cpp code/ryzom/server/src/monitor_service/mirrors.h code/ryzom/server/src/pd_lib/pd_messages.h code/ryzom/server/src/pd_support_service/stat_character.cpp code/ryzom/server/src/pd_support_service/stat_character.h code/ryzom/server/src/pd_support_service/stat_user_char_info_extractors.cpp code/ryzom/server/src/persistant_data_service/pds_database.cpp code/ryzom/server/src/persistant_data_service/pds_database.h code/ryzom/server/src/persistant_data_service/pds_table.h code/ryzom/server/src/persistant_data_service/pds_table_inline.h code/ryzom/server/src/sabrina/combat_phrase.cpp code/ryzom/server/src/sabrina/combat_phrase.h code/ryzom/server/src/sabrina/faber_phrase.cpp code/ryzom/server/src/sabrina/faber_phrase.h code/ryzom/server/src/sabrina/harvest_phrase.cpp code/ryzom/server/src/sabrina/harvest_phrase.h code/ryzom/server/src/sabrina/magic_action_affect_stat.cpp code/ryzom/server/src/sabrina/magic_action_attack.cpp code/ryzom/server/src/sabrina/magic_action_debuff.cpp code/ryzom/server/src/sabrina/magic_action_dot.cpp code/ryzom/server/src/sabrina/magic_action_heal.cpp code/ryzom/server/src/sabrina/magic_action_hot.cpp code/ryzom/server/src/sabrina/magic_action_negative_effect.cpp code/ryzom/server/src/sabrina/magic_phrase.cpp code/ryzom/server/src/sabrina/magic_phrase.h code/ryzom/server/src/sabrina/phrase_utilities_functions.cpp code/ryzom/server/src/sabrina/phrase_utilities_functions.h code/ryzom/server/src/sabrina/s_link_effect_dot.cpp code/ryzom/server/src/sabrina/s_link_effect_dot.h code/ryzom/server/src/sabrina/s_link_effect_hot.cpp code/ryzom/server/src/sabrina/s_link_effect_hot.h code/ryzom/server/src/sabrina/sabrina_actor.h code/ryzom/server/src/sabrina/sabrina_actor_creature.cpp code/ryzom/server/src/sabrina/sabrina_actor_player.cpp code/ryzom/server/src/sabrina/sabrina_enum.h code/ryzom/server/src/server_share/continent_container.cpp code/ryzom/server/src/server_share/login_service_itf.h code/ryzom/server/src/server_share/mail_forum_itf.h code/ryzom/server/src/server_share/msg_ai_service.cpp code/ryzom/server/src/server_share/msg_ai_service.h code/ryzom/server/src/server_share/mysql_wrapper.cpp code/ryzom/server/src/server_share/mysql_wrapper.h code/ryzom/server/src/server_share/testing_tool_structures.h code/ryzom/server/src/session_browser_server/session_browser_server.cpp code/ryzom/server/src/shard_unifier_service/character_sync.cpp code/ryzom/server/src/shard_unifier_service/database_mapping.cpp code/ryzom/server/src/shard_unifier_service/login_service.cpp code/ryzom/server/src/shard_unifier_service/mail_forum_notfier_fwd.cpp code/ryzom/server/src/shard_unifier_service/name_manager.cpp code/ryzom/server/src/shard_unifier_service/ring_session_manager.cpp code/ryzom/server/src/simulation_service/simulated_dmc.cpp code/ryzom/server/src/simulation_service/simulated_ring_session_manager.cpp code/ryzom/server/src/testing_tool_service/testing_tool_service.cpp code/ryzom/server/src/testing_tool_service/testing_tool_service.h code/ryzom/tools/client/client_config_qt/CMakeLists.txt code/ryzom/tools/client/client_config_qt/src/client_config_dialog.cpp code/ryzom/tools/client/client_patcher/CMakeLists.txt code/ryzom/tools/client/ryzom_installer/res/ryzom_installer.ini code/ryzom/tools/client/ryzom_installer/src/configfile.cpp code/ryzom/tools/client/ryzom_installer/src/configfile.h code/ryzom/tools/client/ryzom_installer/src/downloader.cpp code/ryzom/tools/client/ryzom_installer/src/filesextractor.cpp code/ryzom/tools/client/ryzom_installer/src/installdialog.cpp code/ryzom/tools/client/ryzom_installer/src/main.cpp code/ryzom/tools/client/ryzom_installer/src/migratedialog.cpp code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp code/ryzom/tools/client/ryzom_installer/src/operationdialog.h code/ryzom/tools/client/ryzom_installer/src/profilesdialog.cpp code/ryzom/tools/client/ryzom_installer/src/utils.cpp code/ryzom/tools/client/ryzom_installer/src/utils.h code/ryzom/tools/client/ryzom_installer/translations/ryzom_installer_de.ts code/ryzom/tools/client/ryzom_installer/translations/ryzom_installer_es.ts code/ryzom/tools/client/ryzom_installer/translations/ryzom_installer_fr.ts code/ryzom/tools/client/ryzom_installer/translations/ryzom_installer_ru.ts code/ryzom/tools/leveldesign/alias_synchronizer/alias_synchronizer.cpp code/ryzom/tools/leveldesign/csv_transform/csv_transform.cpp code/ryzom/tools/leveldesign/export/export.cpp code/ryzom/tools/leveldesign/georges_dll/action.cpp code/ryzom/tools/leveldesign/georges_dll/action.h code/ryzom/tools/leveldesign/georges_dll/base_dialog.cpp code/ryzom/tools/leveldesign/georges_dll/base_dialog.h code/ryzom/tools/leveldesign/georges_dll/color_wnd.cpp code/ryzom/tools/leveldesign/georges_dll/dfn_dialog.cpp code/ryzom/tools/leveldesign/georges_dll/edit_list_ctrl.cpp code/ryzom/tools/leveldesign/georges_dll/edit_list_ctrl.h code/ryzom/tools/leveldesign/georges_dll/file_browser_dialog.cpp code/ryzom/tools/leveldesign/georges_dll/file_tree_view.cpp code/ryzom/tools/leveldesign/georges_dll/form_dialog.cpp code/ryzom/tools/leveldesign/georges_dll/georges_edit.cpp code/ryzom/tools/leveldesign/georges_dll/georges_edit.h code/ryzom/tools/leveldesign/georges_dll/georges_edit_doc.cpp code/ryzom/tools/leveldesign/georges_dll/georges_edit_view.cpp code/ryzom/tools/leveldesign/georges_dll/georges_implementation.cpp code/ryzom/tools/leveldesign/georges_dll/icon_wnd.cpp code/ryzom/tools/leveldesign/georges_dll/imagelist_ex.cpp code/ryzom/tools/leveldesign/georges_dll/left_view.cpp code/ryzom/tools/leveldesign/georges_dll/memory_combo_box.cpp code/ryzom/tools/leveldesign/georges_dll/memory_combo_box.h code/ryzom/tools/leveldesign/georges_dll/plugin_interface.h code/ryzom/tools/leveldesign/georges_dll/stdafx.h code/ryzom/tools/leveldesign/georges_dll/type_dialog.cpp code/ryzom/tools/leveldesign/georges_plugin_sound/PageSimple.cpp code/ryzom/tools/leveldesign/georges_plugin_sound/georges_plugin_sound.cpp code/ryzom/tools/leveldesign/georges_plugin_sound/sound_plugin.cpp code/ryzom/tools/leveldesign/mission_compiler_fe/mission_compiler_fe.cpp code/ryzom/tools/leveldesign/mission_compiler_fe/mission_compiler_feDlg.cpp code/ryzom/tools/leveldesign/mission_compiler_lib/main.cpp code/ryzom/tools/leveldesign/mission_compiler_lib/mission_compiler.cpp code/ryzom/tools/leveldesign/mission_compiler_lib/mission_compiler.h code/ryzom/tools/leveldesign/mission_compiler_lib/step_content.cpp code/ryzom/tools/leveldesign/mission_compiler_lib/steps.cpp code/ryzom/tools/leveldesign/mp_generator/main.cpp code/ryzom/tools/leveldesign/named_items_2_csv/named_items_2_csv.cpp code/ryzom/tools/leveldesign/prim_export/main.cpp code/ryzom/tools/leveldesign/variable_parser/lua_helper.h code/ryzom/tools/leveldesign/world_editor/land_export_lib/export.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/action.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/action.h code/ryzom/tools/leveldesign/world_editor/world_editor/builder_zone.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/builder_zone.h code/ryzom/tools/leveldesign/world_editor/world_editor/builder_zone_region.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/dialog_properties.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/display.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/editor_primitive.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/editor_primitive.h code/ryzom/tools/leveldesign/world_editor/world_editor/export_dlg.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/external_editor.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/file_dialog_ex.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/find_primitive_dlg.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/generate_dlg.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/imagelist_ex.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/main_frm.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/main_frm.h code/ryzom/tools/leveldesign/world_editor/world_editor/my_list_box.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/name_dlg.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/pacs.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/plugin_interface.h code/ryzom/tools/leveldesign/world_editor/world_editor/primitive_configuration_dlg.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/project_settings.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/resource.h code/ryzom/tools/leveldesign/world_editor/world_editor/tools_logic.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/tools_logic.h code/ryzom/tools/leveldesign/world_editor/world_editor/tools_zone.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/type_manager_dlg.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/type_sel_dlg.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/world_editor.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/world_editor.h code/ryzom/tools/leveldesign/world_editor/world_editor/world_editor_doc.cpp code/ryzom/tools/leveldesign/world_editor/world_editor/world_editor_doc.h code/ryzom/tools/leveldesign/world_editor/world_editor_fauna_graph_plugin/plugin.cpp code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/graph_plugin.cpp code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/world_editor_graph_plugin_dlg.cpp code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/DialogFlags.cpp code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/entity_display_info.h code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/memory_combo_box.cpp code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/memory_combo_box.h code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/plugin.cpp code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/plugin.h code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/DialogFlags.cpp code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/sound_plugin.cpp code/ryzom/tools/pd_parser/parser.cpp code/ryzom/tools/pd_parser/templatizer.cpp code/ryzom/tools/scripts/linux/utilities code/ryzom/tools/sheets_packer/sheets_packer.cfg code/ryzom/tools/stats_scan/character_scan_job.cpp code/ryzom/tools/translation/translated/bodypart_words_de.txt code/ryzom/tools/translation/translated/bodypart_words_en.txt code/ryzom/tools/translation/translated/bodypart_words_es.txt code/ryzom/tools/translation/translated/bodypart_words_fr.txt code/ryzom/tools/translation/translated/bodypart_words_ru.txt code/ryzom/tools/translation/translated/bodypart_words_wk.txt code/ryzom/tools/translation/translated/career_words_de.txt code/ryzom/tools/translation/translated/career_words_en.txt code/ryzom/tools/translation/translated/career_words_es.txt code/ryzom/tools/translation/translated/career_words_fr.txt code/ryzom/tools/translation/translated/career_words_ru.txt code/ryzom/tools/translation/translated/career_words_wk.txt code/ryzom/tools/translation/translated/characteristic_words_de.txt code/ryzom/tools/translation/translated/characteristic_words_en.txt code/ryzom/tools/translation/translated/characteristic_words_es.txt code/ryzom/tools/translation/translated/characteristic_words_fr.txt code/ryzom/tools/translation/translated/characteristic_words_ru.txt code/ryzom/tools/translation/translated/characteristic_words_wk.txt code/ryzom/tools/translation/translated/classificationtype_words_de.txt code/ryzom/tools/translation/translated/classificationtype_words_en.txt code/ryzom/tools/translation/translated/classificationtype_words_es.txt code/ryzom/tools/translation/translated/classificationtype_words_fr.txt code/ryzom/tools/translation/translated/classificationtype_words_ru.txt code/ryzom/tools/translation/translated/classificationtype_words_wk.txt code/ryzom/tools/translation/translated/creature_words_de.txt code/ryzom/tools/translation/translated/creature_words_en.txt code/ryzom/tools/translation/translated/creature_words_es.txt code/ryzom/tools/translation/translated/creature_words_fr.txt code/ryzom/tools/translation/translated/creature_words_ru.txt code/ryzom/tools/translation/translated/creature_words_wk.txt code/ryzom/tools/translation/translated/damagetype_words_de.txt code/ryzom/tools/translation/translated/damagetype_words_en.txt code/ryzom/tools/translation/translated/damagetype_words_es.txt code/ryzom/tools/translation/translated/damagetype_words_fr.txt code/ryzom/tools/translation/translated/damagetype_words_ru.txt code/ryzom/tools/translation/translated/damagetype_words_wk.txt code/ryzom/tools/translation/translated/de.uxt code/ryzom/tools/translation/translated/ecosystem_words_de.txt code/ryzom/tools/translation/translated/ecosystem_words_en.txt code/ryzom/tools/translation/translated/ecosystem_words_es.txt code/ryzom/tools/translation/translated/ecosystem_words_fr.txt code/ryzom/tools/translation/translated/ecosystem_words_ru.txt code/ryzom/tools/translation/translated/ecosystem_words_wk.txt code/ryzom/tools/translation/translated/en.uxt code/ryzom/tools/translation/translated/es.uxt code/ryzom/tools/translation/translated/faction_words_de.txt code/ryzom/tools/translation/translated/faction_words_en.txt code/ryzom/tools/translation/translated/faction_words_es.txt code/ryzom/tools/translation/translated/faction_words_fr.txt code/ryzom/tools/translation/translated/faction_words_ru.txt code/ryzom/tools/translation/translated/faction_words_wk.txt code/ryzom/tools/translation/translated/fr.uxt code/ryzom/tools/translation/translated/item_words_de.txt code/ryzom/tools/translation/translated/item_words_en.txt code/ryzom/tools/translation/translated/item_words_es.txt code/ryzom/tools/translation/translated/item_words_fr.txt code/ryzom/tools/translation/translated/item_words_ru.txt code/ryzom/tools/translation/translated/item_words_wk.txt code/ryzom/tools/translation/translated/job_words_de.txt code/ryzom/tools/translation/translated/job_words_en.txt code/ryzom/tools/translation/translated/job_words_es.txt code/ryzom/tools/translation/translated/job_words_fr.txt code/ryzom/tools/translation/translated/job_words_ru.txt code/ryzom/tools/translation/translated/job_words_wk.txt code/ryzom/tools/translation/translated/outpost_words_de.txt code/ryzom/tools/translation/translated/outpost_words_en.txt code/ryzom/tools/translation/translated/outpost_words_es.txt code/ryzom/tools/translation/translated/outpost_words_fr.txt code/ryzom/tools/translation/translated/outpost_words_ru.txt code/ryzom/tools/translation/translated/outpost_words_wk.txt code/ryzom/tools/translation/translated/place_words_de.txt code/ryzom/tools/translation/translated/place_words_en.txt code/ryzom/tools/translation/translated/place_words_es.txt code/ryzom/tools/translation/translated/place_words_fr.txt code/ryzom/tools/translation/translated/place_words_ru.txt code/ryzom/tools/translation/translated/place_words_wk.txt code/ryzom/tools/translation/translated/powertype_words_de.txt code/ryzom/tools/translation/translated/powertype_words_en.txt code/ryzom/tools/translation/translated/powertype_words_es.txt code/ryzom/tools/translation/translated/powertype_words_fr.txt code/ryzom/tools/translation/translated/powertype_words_ru.txt code/ryzom/tools/translation/translated/powertype_words_wk.txt code/ryzom/tools/translation/translated/race_words_de.txt code/ryzom/tools/translation/translated/race_words_en.txt code/ryzom/tools/translation/translated/race_words_es.txt code/ryzom/tools/translation/translated/race_words_fr.txt code/ryzom/tools/translation/translated/race_words_ru.txt code/ryzom/tools/translation/translated/race_words_wk.txt code/ryzom/tools/translation/translated/sbrick_words_de.txt code/ryzom/tools/translation/translated/sbrick_words_en.txt code/ryzom/tools/translation/translated/sbrick_words_es.txt code/ryzom/tools/translation/translated/sbrick_words_fr.txt code/ryzom/tools/translation/translated/sbrick_words_ru.txt code/ryzom/tools/translation/translated/sbrick_words_wk.txt code/ryzom/tools/translation/translated/score_words_de.txt code/ryzom/tools/translation/translated/score_words_en.txt code/ryzom/tools/translation/translated/score_words_es.txt code/ryzom/tools/translation/translated/score_words_fr.txt code/ryzom/tools/translation/translated/score_words_ru.txt code/ryzom/tools/translation/translated/score_words_wk.txt code/ryzom/tools/translation/translated/skill_words_de.txt code/ryzom/tools/translation/translated/skill_words_en.txt code/ryzom/tools/translation/translated/skill_words_es.txt code/ryzom/tools/translation/translated/skill_words_fr.txt code/ryzom/tools/translation/translated/skill_words_ru.txt code/ryzom/tools/translation/translated/skill_words_wk.txt code/ryzom/tools/translation/translated/sphrase_words_de.txt code/ryzom/tools/translation/translated/sphrase_words_en.txt code/ryzom/tools/translation/translated/sphrase_words_es.txt code/ryzom/tools/translation/translated/sphrase_words_fr.txt code/ryzom/tools/translation/translated/sphrase_words_ru.txt code/ryzom/tools/translation/translated/sphrase_words_wk.txt code/ryzom/tools/translation/translated/title_words_de.txt code/ryzom/tools/translation/translated/title_words_en.txt code/ryzom/tools/translation/translated/title_words_es.txt code/ryzom/tools/translation/translated/title_words_fr.txt code/ryzom/tools/translation/translated/title_words_ru.txt code/ryzom/tools/translation/translated/title_words_wk.txt code/ryzom/tools/translation/translated/wk.uxt code/ryzom/tools/translation/work/wk.uxt code/ryzom/tools/translation_tools/main.cpp code/studio/src/plugins/mission_compiler/mission_compiler_main_window.cpp code/studio/src/plugins/object_viewer/particle_system/dup_ps.cpp code/studio/src/plugins/object_viewer/particle_system/particle_editor.cpp code/studio/src/plugins/object_viewer/particle_system/particle_node.cpp code/studio/src/plugins/object_viewer/particle_system/particle_workspace_dialog.h code/web/docs/admin/shard_restart/Hd36.xml code/web/docs/ams/doxygen/Doxyfile code/web/docs/ams/doxygen/img/db.png code/web/docs/ams/doxygen/img/info.jpg code/web/docs/ams/doxygen/img/info.psd code/web/docs/ams/doxygen/info.php code/web/docs/ams/doxygen/logo.png code/web/private_php/ams/autoload/.plugincache.php.swp code/web/private_php/ams/autoload/assigned.php code/web/private_php/ams/autoload/dblayer.php code/web/private_php/ams/autoload/forwarded.php code/web/private_php/ams/autoload/gui_elements.php code/web/private_php/ams/autoload/helpers.php code/web/private_php/ams/autoload/in_support_group.php code/web/private_php/ams/autoload/mail_handler.php code/web/private_php/ams/autoload/mycrypt.php code/web/private_php/ams/autoload/pagination.php code/web/private_php/ams/autoload/plugincache.php code/web/private_php/ams/autoload/querycache.php code/web/private_php/ams/autoload/rest_api.php code/web/private_php/ams/autoload/support_group.php code/web/private_php/ams/autoload/sync.php code/web/private_php/ams/autoload/ticket.php code/web/private_php/ams/autoload/ticket_category.php code/web/private_php/ams/autoload/ticket_content.php code/web/private_php/ams/autoload/ticket_info.php code/web/private_php/ams/autoload/ticket_log.php code/web/private_php/ams/autoload/ticket_queue.php code/web/private_php/ams/autoload/ticket_queue_handler.php code/web/private_php/ams/autoload/ticket_reply.php code/web/private_php/ams/autoload/ticket_user.php code/web/private_php/ams/autoload/users.php code/web/private_php/ams/configs/ams_lib.conf code/web/private_php/ams/configs/ingame_layout.ini code/web/private_php/ams/img/info/client.png code/web/private_php/ams/img/info/connect.png code/web/private_php/ams/img/info/cpuid.png code/web/private_php/ams/img/info/ht.png code/web/private_php/ams/img/info/local.png code/web/private_php/ams/img/info/mask.png code/web/private_php/ams/img/info/memory.png code/web/private_php/ams/img/info/nel.png code/web/private_php/ams/img/info/os.png code/web/private_php/ams/img/info/patch.png code/web/private_php/ams/img/info/position.png code/web/private_php/ams/img/info/processor.png code/web/private_php/ams/img/info/server.png code/web/private_php/ams/img/info/shard.png code/web/private_php/ams/img/info/user.png code/web/private_php/ams/img/info/view.png code/web/private_php/ams/ingame_templates/createticket.tpl code/web/private_php/ams/ingame_templates/dashboard.tpl code/web/private_php/ams/ingame_templates/index.tpl code/web/private_php/ams/ingame_templates/layout.tpl code/web/private_php/ams/ingame_templates/layout_admin.tpl code/web/private_php/ams/ingame_templates/layout_mod.tpl code/web/private_php/ams/ingame_templates/layout_user.tpl code/web/private_php/ams/ingame_templates/login.tpl code/web/private_php/ams/ingame_templates/register.tpl code/web/private_php/ams/ingame_templates/settings.tpl code/web/private_php/ams/ingame_templates/sgroup_list.tpl code/web/private_php/ams/ingame_templates/show_queue.tpl code/web/private_php/ams/ingame_templates/show_reply.tpl code/web/private_php/ams/ingame_templates/show_sgroup.tpl code/web/private_php/ams/ingame_templates/show_ticket.tpl code/web/private_php/ams/ingame_templates/show_ticket_info.tpl code/web/private_php/ams/ingame_templates/show_ticket_log.tpl code/web/private_php/ams/ingame_templates/show_user.tpl code/web/private_php/ams/ingame_templates/userlist.tpl code/web/private_php/ams/libinclude.php code/web/private_php/ams/mail/placeholder code/web/private_php/ams/plugins/API_key_management/.info code/web/private_php/ams/plugins/API_key_management/API_key_management.php code/web/private_php/ams/plugins/API_key_management/generate_key.php code/web/private_php/ams/plugins/API_key_management/templates/gen_key.tpl code/web/private_php/ams/plugins/API_key_management/templates/index.tpl code/web/private_php/ams/plugins/Achievements/.info code/web/private_php/ams/plugins/Achievements/Achievements.php code/web/private_php/ams/plugins/Achievements/templates/index.tpl code/web/private_php/ams/plugins/Domain_Management/.info code/web/private_php/ams/plugins/Domain_Management/Domain_Management.php code/web/private_php/ams/plugins/Domain_Management/templates/index.tpl code/web/private_php/ams/plugins/cacheresource.apc.php code/web/private_php/ams/plugins/cacheresource.memcache.php code/web/private_php/ams/plugins/cacheresource.mysql.php code/web/private_php/ams/plugins/doxygen_plugin_management.php code/web/private_php/ams/plugins/resource.extendsall.php code/web/private_php/ams/plugins/resource.mysql.php code/web/private_php/ams/plugins/resource.mysqls.php code/web/private_php/ams/smarty/README code/web/private_php/ams/smarty/SMARTY_2_BC_NOTES.txt code/web/private_php/ams/smarty/SMARTY_3.0_BC_NOTES.txt code/web/private_php/ams/smarty/SMARTY_3.1_NOTES.txt code/web/private_php/ams/smarty/change_log.txt code/web/private_php/ams/smarty/libs/Smarty.class.php code/web/private_php/ams/smarty/libs/SmartyBC.class.php code/web/private_php/ams/smarty/libs/debug.tpl code/web/private_php/ams/smarty/libs/plugins/block.textformat.php code/web/private_php/ams/smarty/libs/plugins/function.counter.php code/web/private_php/ams/smarty/libs/plugins/function.cycle.php code/web/private_php/ams/smarty/libs/plugins/function.fetch.php code/web/private_php/ams/smarty/libs/plugins/function.html_checkboxes.php code/web/private_php/ams/smarty/libs/plugins/function.html_image.php code/web/private_php/ams/smarty/libs/plugins/function.html_options.php code/web/private_php/ams/smarty/libs/plugins/function.html_radios.php code/web/private_php/ams/smarty/libs/plugins/function.html_select_date.php code/web/private_php/ams/smarty/libs/plugins/function.html_select_time.php code/web/private_php/ams/smarty/libs/plugins/function.html_table.php code/web/private_php/ams/smarty/libs/plugins/function.mailto.php code/web/private_php/ams/smarty/libs/plugins/function.math.php code/web/private_php/ams/smarty/libs/plugins/modifier.capitalize.php code/web/private_php/ams/smarty/libs/plugins/modifier.date_format.php code/web/private_php/ams/smarty/libs/plugins/modifier.debug_print_var.php code/web/private_php/ams/smarty/libs/plugins/modifier.escape.php code/web/private_php/ams/smarty/libs/plugins/modifier.regex_replace.php code/web/private_php/ams/smarty/libs/plugins/modifier.replace.php code/web/private_php/ams/smarty/libs/plugins/modifier.spacify.php code/web/private_php/ams/smarty/libs/plugins/modifier.truncate.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.cat.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.count_characters.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.count_paragraphs.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.count_sentences.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.count_words.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.default.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.escape.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.from_charset.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.indent.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.lower.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.noprint.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.string_format.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.strip.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.strip_tags.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.to_charset.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.unescape.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.upper.php code/web/private_php/ams/smarty/libs/plugins/modifiercompiler.wordwrap.php code/web/private_php/ams/smarty/libs/plugins/outputfilter.trimwhitespace.php code/web/private_php/ams/smarty/libs/plugins/shared.escape_special_chars.php code/web/private_php/ams/smarty/libs/plugins/shared.literal_compiler_param.php code/web/private_php/ams/smarty/libs/plugins/shared.make_timestamp.php code/web/private_php/ams/smarty/libs/plugins/shared.mb_str_replace.php code/web/private_php/ams/smarty/libs/plugins/shared.mb_unicode.php code/web/private_php/ams/smarty/libs/plugins/shared.mb_wordwrap.php code/web/private_php/ams/smarty/libs/plugins/variablefilter.htmlspecialchars.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_cacheresource.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_cacheresource_custom.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_config_source.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_append.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_assign.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_block.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_break.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_call.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_capture.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_config_load.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_continue.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_debug.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_eval.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_extends.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_for.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_foreach.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_function.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_if.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_include.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_include_php.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_insert.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_nocache.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_section.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compile_while.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_compilebase.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_config.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_configfilelexer.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_configfileparser.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_data.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_debug.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_filter_handler.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_function_call_handler.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_get_include_path.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_nocache_insert.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_parsetree.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_resource_eval.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_resource_extends.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_resource_file.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_resource_php.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_resource_registered.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_resource_stream.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_resource_string.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_template.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_templatebase.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_templatelexer.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_templateparser.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_utility.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_internal_write_file.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_resource.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_resource_custom.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_resource_recompiled.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_resource_uncompiled.php code/web/private_php/ams/smarty/libs/sysplugins/smarty_security.php code/web/private_php/ams/tmp/placeholder code/web/private_php/ams/translations/en.ini code/web/private_php/ams/translations/fr.ini code/web/private_php/setup/config/config.php code/web/private_php/setup/config/config_user.php code/web/private_php/setup/sql/nel_00001.sql code/web/private_php/setup/sql/nel_00002.sql code/web/private_php/setup/sql/nel_00003.sql code/web/private_php/setup/sql/nel_00004.sql code/web/private_php/setup/sql/nel_ams_00001.sql code/web/private_php/setup/sql/nel_ams_00002.sql code/web/private_php/setup/sql/nel_ams_lib_00001.sql code/web/private_php/setup/sql/nel_ams_lib_00002.sql code/web/private_php/setup/sql/nel_ams_lib_00003.sql code/web/private_php/setup/sql/nel_ams_lib_00004.sql code/web/private_php/setup/sql/nel_ams_lib_00005.sql code/web/private_php/setup/sql/nel_ams_lib_00006.sql code/web/private_php/setup/sql/nel_ams_lib_00007.sql code/web/private_php/setup/sql/nel_tool_00001.sql code/web/private_php/setup/sql/nel_tool_00002.sql code/web/private_php/setup/sql/ring_domain_00001.sql code/web/private_php/setup/sql/webig_00001.sql code/web/public_php/admin/common.php code/web/public_php/admin/config.php code/web/public_php/admin/crons/cron_harddisk.php code/web/public_php/admin/crons/index.html code/web/public_php/admin/functions_auth.php code/web/public_php/admin/functions_mysql.php code/web/public_php/admin/functions_mysqli.php code/web/public_php/admin/functions_tool_main.php code/web/public_php/admin/graphs_output/placeholder code/web/public_php/admin/index.php code/web/public_php/admin/jpgraph/jpgraph_gantt.php code/web/public_php/admin/jpgraph/jpgraph_pie.php code/web/public_php/admin/nel/nel_message.php code/web/public_php/admin/scripts/index.html code/web/public_php/admin/smarty/Config_File.class.php code/web/public_php/admin/smarty/Smarty.class.php code/web/public_php/admin/smarty/Smarty_Compiler.class.php code/web/public_php/admin/smarty/debug.tpl code/web/public_php/admin/smarty/internals/core.create_dir_structure.php code/web/public_php/admin/smarty/internals/core.display_debug_console.php code/web/public_php/admin/smarty/internals/core.is_secure.php code/web/public_php/admin/smarty/internals/core.is_trusted.php code/web/public_php/admin/smarty/internals/core.process_cached_inserts.php code/web/public_php/admin/smarty/internals/core.process_compiled_include.php code/web/public_php/admin/smarty/internals/core.read_cache_file.php code/web/public_php/admin/smarty/internals/core.rmdir.php code/web/public_php/admin/smarty/internals/core.write_cache_file.php code/web/public_php/admin/smarty/internals/core.write_compiled_include.php code/web/public_php/admin/smarty/internals/core.write_file.php code/web/public_php/admin/smarty/plugins/block.textformat.php code/web/public_php/admin/smarty/plugins/compiler.assign.php code/web/public_php/admin/smarty/plugins/function.assign_debug_info.php code/web/public_php/admin/smarty/plugins/function.config_load.php code/web/public_php/admin/smarty/plugins/function.counter.php code/web/public_php/admin/smarty/plugins/function.cycle.php code/web/public_php/admin/smarty/plugins/function.eval.php code/web/public_php/admin/smarty/plugins/function.fetch.php code/web/public_php/admin/smarty/plugins/function.html_image.php code/web/public_php/admin/smarty/plugins/function.html_options.php code/web/public_php/admin/smarty/plugins/function.html_radios.php code/web/public_php/admin/smarty/plugins/function.html_select_date.php code/web/public_php/admin/smarty/plugins/function.html_select_time.php code/web/public_php/admin/smarty/plugins/function.html_table.php code/web/public_php/admin/smarty/plugins/function.mailto.php code/web/public_php/admin/smarty/plugins/function.math.php code/web/public_php/admin/smarty/plugins/function.popup.php code/web/public_php/admin/smarty/plugins/function.popup_init.php code/web/public_php/admin/smarty/plugins/modifier.capitalize.php code/web/public_php/admin/smarty/plugins/modifier.count_characters.php code/web/public_php/admin/smarty/plugins/modifier.count_paragraphs.php code/web/public_php/admin/smarty/plugins/modifier.count_sentences.php code/web/public_php/admin/smarty/plugins/modifier.count_words.php code/web/public_php/admin/smarty/plugins/modifier.date_format.php code/web/public_php/admin/smarty/plugins/modifier.debug_print_var.php code/web/public_php/admin/smarty/plugins/modifier.default.php code/web/public_php/admin/smarty/plugins/modifier.escape.php code/web/public_php/admin/smarty/plugins/modifier.indent.php code/web/public_php/admin/smarty/plugins/modifier.lower.php code/web/public_php/admin/smarty/plugins/modifier.regex_replace.php code/web/public_php/admin/smarty/plugins/modifier.replace.php code/web/public_php/admin/smarty/plugins/modifier.spacify.php code/web/public_php/admin/smarty/plugins/modifier.string_format.php code/web/public_php/admin/smarty/plugins/modifier.strip_tags.php code/web/public_php/admin/smarty/plugins/modifier.truncate.php code/web/public_php/admin/smarty/plugins/modifier.upper.php code/web/public_php/admin/smarty/plugins/modifier.wordwrap.php code/web/public_php/admin/smarty/plugins/outputfilter.trimwhitespace.php code/web/public_php/admin/smarty/plugins/shared.escape_special_chars.php code/web/public_php/admin/smarty/plugins/shared.make_timestamp.php code/web/public_php/admin/templates/default/index.tpl code/web/public_php/admin/templates/default/index_login.tpl code/web/public_php/admin/templates/default/tool_actions.tpl code/web/public_php/admin/templates/default/tool_administration_applications.tpl code/web/public_php/admin/templates/default/tool_administration_domains.tpl code/web/public_php/admin/templates/default/tool_administration_groups.tpl code/web/public_php/admin/templates/default/tool_administration_logs.tpl code/web/public_php/admin/templates/default/tool_administration_restarts.tpl code/web/public_php/admin/templates/default/tool_administration_shards.tpl code/web/public_php/admin/templates/default/tool_administration_users.tpl code/web/public_php/admin/templates/default/tool_graphs.tpl code/web/public_php/admin/templates/default/tool_graphs_ccu.tpl code/web/public_php/admin/templates/default/tool_graphs_hires.tpl code/web/public_php/admin/templates/default/tool_graphs_tech.tpl code/web/public_php/admin/templates/default/tool_notes.tpl code/web/public_php/admin/templates/default_c/placeholder code/web/public_php/admin/tool_administration.php code/web/public_php/admin/tool_graphs.php code/web/public_php/admin/tool_guild_locator.php code/web/public_php/admin/tool_player_locator.php code/web/public_php/admin/tool_preferences.php code/web/public_php/ams/autoload/webusers.php code/web/public_php/ams/cache/placeholder code/web/public_php/ams/configs/ams_lib.conf code/web/public_php/ams/cron/mail_cron.php code/web/public_php/ams/cron/sync_cron.php code/web/public_php/ams/css/animate.min.css code/web/public_php/ams/css/bootstrap-cerulean.css code/web/public_php/ams/css/bootstrap-cerulean.min.css code/web/public_php/ams/css/bootstrap-classic.css code/web/public_php/ams/css/bootstrap-classic.min.css code/web/public_php/ams/css/bootstrap-cyborg.css code/web/public_php/ams/css/bootstrap-cyborg.min.css code/web/public_php/ams/css/bootstrap-darkly.min.css code/web/public_php/ams/css/bootstrap-journal.css code/web/public_php/ams/css/bootstrap-lumen.min.css code/web/public_php/ams/css/bootstrap-redy.css code/web/public_php/ams/css/bootstrap-responsive.css code/web/public_php/ams/css/bootstrap-responsive.min.css code/web/public_php/ams/css/bootstrap-simplex.css code/web/public_php/ams/css/bootstrap-simplex.min.css code/web/public_php/ams/css/bootstrap-slate.css code/web/public_php/ams/css/bootstrap-slate.min.css code/web/public_php/ams/css/bootstrap-spacelab.css code/web/public_php/ams/css/bootstrap-spacelab.min.css code/web/public_php/ams/css/bootstrap-united.css code/web/public_php/ams/css/bootstrap-united.min.css code/web/public_php/ams/css/charisma-app.css code/web/public_php/ams/css/chosen.css code/web/public_php/ams/css/colorbox.css code/web/public_php/ams/css/custom.css code/web/public_php/ams/css/elfinder.min.css code/web/public_php/ams/css/elfinder.theme.css code/web/public_php/ams/css/fullcalendar.css code/web/public_php/ams/css/fullcalendar.print.css code/web/public_php/ams/css/jquery-ui-1.8.21.custom.css code/web/public_php/ams/css/jquery.cleditor.css code/web/public_php/ams/css/jquery.iphone.toggle.css code/web/public_php/ams/css/jquery.noty.css code/web/public_php/ams/css/noty_theme_default.css code/web/public_php/ams/css/opa-icons.css code/web/public_php/ams/css/uniform.default.css code/web/public_php/ams/css/uploadify.css code/web/public_php/ams/doc/assets/images/html_structure.png code/web/public_php/ams/doc/assets/images/image_1.png code/web/public_php/ams/doc/css/documenter_style.css code/web/public_php/ams/doc/css/img/info.png code/web/public_php/ams/doc/css/img/pre_bg.png code/web/public_php/ams/doc/css/img/warning.png code/web/public_php/ams/doc/favicon.ico code/web/public_php/ams/doc/index.html code/web/public_php/ams/doc/js/jquery.1.6.4.js code/web/public_php/ams/doc/js/jquery.easing.js code/web/public_php/ams/doc/js/jquery.scrollTo-1.4.2-min.js code/web/public_php/ams/doc/js/script.js code/web/public_php/ams/files/.htaccess code/web/public_php/ams/files/index.html code/web/public_php/ams/fonts/glyphicons-halflings-regular.eot code/web/public_php/ams/fonts/glyphicons-halflings-regular.svg code/web/public_php/ams/fonts/glyphicons-halflings-regular.ttf code/web/public_php/ams/fonts/glyphicons-halflings-regular.woff code/web/public_php/ams/func/activate_plugin.php code/web/public_php/ams/func/add_sgroup.php code/web/public_php/ams/func/add_user.php code/web/public_php/ams/func/add_user_to_sgroup.php code/web/public_php/ams/func/change_info.php code/web/public_php/ams/func/change_mail.php code/web/public_php/ams/func/change_password.php code/web/public_php/ams/func/change_receivemail.php code/web/public_php/ams/func/create_ticket.php code/web/public_php/ams/func/deactivate_plugin.php code/web/public_php/ams/func/delete_plugin.php code/web/public_php/ams/func/forgot_password.php code/web/public_php/ams/func/install_plugin.php code/web/public_php/ams/func/login.php code/web/public_php/ams/func/modify_email_of_sgroup.php code/web/public_php/ams/func/reply_on_ticket.php code/web/public_php/ams/func/reset_password.php code/web/public_php/ams/func/update_plugin.php code/web/public_php/ams/func/upload.php code/web/public_php/ams/func/userRegistration.php code/web/public_php/ams/img/ajax-loaders/ajax-loader-1.gif code/web/public_php/ams/img/ajax-loaders/ajax-loader-2.gif code/web/public_php/ams/img/ajax-loaders/ajax-loader-3.gif code/web/public_php/ams/img/ajax-loaders/ajax-loader-4.gif code/web/public_php/ams/img/ajax-loaders/ajax-loader-5.gif code/web/public_php/ams/img/ajax-loaders/ajax-loader-6.gif code/web/public_php/ams/img/ajax-loaders/ajax-loader-7.gif code/web/public_php/ams/img/ajax-loaders/ajax-loader-8.gif code/web/public_php/ams/img/arrows-active.png code/web/public_php/ams/img/arrows-normal.png code/web/public_php/ams/img/bg-input-focus.png code/web/public_php/ams/img/bg-input.png code/web/public_php/ams/img/border.png code/web/public_php/ams/img/buttons.gif code/web/public_php/ams/img/cancel-off.png code/web/public_php/ams/img/cancel-on.png code/web/public_php/ams/img/chosen-sprite.png code/web/public_php/ams/img/controls.png code/web/public_php/ams/img/crop.gif code/web/public_php/ams/img/dialogs.png code/web/public_php/ams/img/en.png code/web/public_php/ams/img/error_bg.png code/web/public_php/ams/img/favicon.ico code/web/public_php/ams/img/fr.png code/web/public_php/ams/img/glyphicons-halflings-white.png code/web/public_php/ams/img/glyphicons-halflings.png code/web/public_php/ams/img/icons-big.png code/web/public_php/ams/img/icons-small.png code/web/public_php/ams/img/info/client.png code/web/public_php/ams/img/info/connect.png code/web/public_php/ams/img/info/cpuid.png code/web/public_php/ams/img/info/ht.png code/web/public_php/ams/img/info/local.png code/web/public_php/ams/img/info/mask.png code/web/public_php/ams/img/info/memory.png code/web/public_php/ams/img/info/nel.png code/web/public_php/ams/img/info/os.png code/web/public_php/ams/img/info/patch.png code/web/public_php/ams/img/info/position.png code/web/public_php/ams/img/info/processor.png code/web/public_php/ams/img/info/server.png code/web/public_php/ams/img/info/shard.png code/web/public_php/ams/img/info/user.png code/web/public_php/ams/img/info/view.png code/web/public_php/ams/img/iphone-style-checkboxes/off.png code/web/public_php/ams/img/iphone-style-checkboxes/on.png code/web/public_php/ams/img/iphone-style-checkboxes/slider.png code/web/public_php/ams/img/iphone-style-checkboxes/slider_center.png code/web/public_php/ams/img/iphone-style-checkboxes/slider_left.png code/web/public_php/ams/img/iphone-style-checkboxes/slider_right.png code/web/public_php/ams/img/loading.gif code/web/public_php/ams/img/loading_background.png code/web/public_php/ams/img/logo.png code/web/public_php/ams/img/logo20.png code/web/public_php/ams/img/mainlogo.png code/web/public_php/ams/img/opa-icons-black16.png code/web/public_php/ams/img/opa-icons-black32.png code/web/public_php/ams/img/opa-icons-blue16.png code/web/public_php/ams/img/opa-icons-blue32.png code/web/public_php/ams/img/opa-icons-color16.png code/web/public_php/ams/img/opa-icons-color32.png code/web/public_php/ams/img/opa-icons-darkgray16.png code/web/public_php/ams/img/opa-icons-darkgray32.png code/web/public_php/ams/img/opa-icons-gray16.png code/web/public_php/ams/img/opa-icons-gray32.png code/web/public_php/ams/img/opa-icons-green16.png code/web/public_php/ams/img/opa-icons-green32.png code/web/public_php/ams/img/opa-icons-orange16.png code/web/public_php/ams/img/opa-icons-orange32.png code/web/public_php/ams/img/opa-icons-red16.png code/web/public_php/ams/img/opa-icons-red32.png code/web/public_php/ams/img/opa-icons-white16.png code/web/public_php/ams/img/opa-icons-white32.png code/web/public_php/ams/img/progress.gif code/web/public_php/ams/img/qrcode.png code/web/public_php/ams/img/qrcode136.png code/web/public_php/ams/img/quicklook-bg.png code/web/public_php/ams/img/quicklook-icons.png code/web/public_php/ams/img/resize.png code/web/public_php/ams/img/ryzomcore.png code/web/public_php/ams/img/ryzomcore_166_62.png code/web/public_php/ams/img/ryzomlogo.psd code/web/public_php/ams/img/ryzomtop.png code/web/public_php/ams/img/spinner-mini.gif code/web/public_php/ams/img/sprite.png code/web/public_php/ams/img/star-half.png code/web/public_php/ams/img/star-off.png code/web/public_php/ams/img/star-on.png code/web/public_php/ams/img/thumb.png code/web/public_php/ams/img/toolbar.gif code/web/public_php/ams/img/toolbar.png code/web/public_php/ams/img/ui-bg_flat_0_aaaaaa_40x100.png code/web/public_php/ams/img/ui-bg_flat_75_ffffff_40x100.png code/web/public_php/ams/img/ui-bg_glass_55_fbf9ee_1x400.png code/web/public_php/ams/img/ui-bg_glass_65_ffffff_1x400.png code/web/public_php/ams/img/ui-bg_glass_75_dadada_1x400.png code/web/public_php/ams/img/ui-bg_glass_75_e6e6e6_1x400.png code/web/public_php/ams/img/ui-bg_glass_95_fef1ec_1x400.png code/web/public_php/ams/img/ui-bg_highlight-soft_75_cccccc_1x100.png code/web/public_php/ams/img/ui-icons_222222_256x240.png code/web/public_php/ams/img/ui-icons_2e83ff_256x240.png code/web/public_php/ams/img/ui-icons_454545_256x240.png code/web/public_php/ams/img/ui-icons_888888_256x240.png code/web/public_php/ams/img/ui-icons_cd0a0a_256x240.png code/web/public_php/ams/img/uploadify-cancel.png code/web/public_php/ams/inc/change_permission.php code/web/public_php/ams/inc/createticket.php code/web/public_php/ams/inc/dashboard.php code/web/public_php/ams/inc/error.php code/web/public_php/ams/inc/forgot_password.php code/web/public_php/ams/inc/login.php code/web/public_php/ams/inc/logout.php code/web/public_php/ams/inc/plugins.php code/web/public_php/ams/inc/plugins_update.php code/web/public_php/ams/inc/register.php code/web/public_php/ams/inc/reset_password.php code/web/public_php/ams/inc/settings.php code/web/public_php/ams/inc/sgroup_list.php code/web/public_php/ams/inc/show_queue.php code/web/public_php/ams/inc/show_reply.php code/web/public_php/ams/inc/show_sgroup.php code/web/public_php/ams/inc/show_ticket.php code/web/public_php/ams/inc/show_ticket_info.php code/web/public_php/ams/inc/show_ticket_log.php code/web/public_php/ams/inc/show_user.php code/web/public_php/ams/inc/syncing.php code/web/public_php/ams/inc/userlist.php code/web/public_php/ams/index.php code/web/public_php/ams/js/bootstrap-alert.js code/web/public_php/ams/js/bootstrap-button.js code/web/public_php/ams/js/bootstrap-carousel.js code/web/public_php/ams/js/bootstrap-collapse.js code/web/public_php/ams/js/bootstrap-dropdown.js code/web/public_php/ams/js/bootstrap-modal.js code/web/public_php/ams/js/bootstrap-popover.js code/web/public_php/ams/js/bootstrap-scrollspy.js code/web/public_php/ams/js/bootstrap-tab.js code/web/public_php/ams/js/bootstrap-toggle.js code/web/public_php/ams/js/bootstrap-tooltip.js code/web/public_php/ams/js/bootstrap-tour.js code/web/public_php/ams/js/bootstrap-transition.js code/web/public_php/ams/js/bootstrap-typeahead.js code/web/public_php/ams/js/charisma.js code/web/public_php/ams/js/custom.js code/web/public_php/ams/js/excanvas.js code/web/public_php/ams/js/fullcalendar.min.js code/web/public_php/ams/js/help.js code/web/public_php/ams/js/init-chart.js code/web/public_php/ams/js/jquery-1.7.2.min.js code/web/public_php/ams/js/jquery-ui-1.8.21.custom.min.js code/web/public_php/ams/js/jquery.autogrow-textarea.js code/web/public_php/ams/js/jquery.chosen.min.js code/web/public_php/ams/js/jquery.cleditor.min.js code/web/public_php/ams/js/jquery.colorbox.min.js code/web/public_php/ams/js/jquery.cookie.js code/web/public_php/ams/js/jquery.dataTables.min.js code/web/public_php/ams/js/jquery.elfinder.min.js code/web/public_php/ams/js/jquery.flot.min.js code/web/public_php/ams/js/jquery.flot.pie.min.js code/web/public_php/ams/js/jquery.flot.resize.min.js code/web/public_php/ams/js/jquery.flot.stack.js code/web/public_php/ams/js/jquery.history.js code/web/public_php/ams/js/jquery.iphone.toggle.js code/web/public_php/ams/js/jquery.js code/web/public_php/ams/js/jquery.min.js code/web/public_php/ams/js/jquery.noty.js code/web/public_php/ams/js/jquery.raty.min.js code/web/public_php/ams/js/jquery.uniform.min.js code/web/public_php/ams/js/jquery.uploadify-3.1.js code/web/public_php/ams/js/jquery.uploadify-3.1.min.js code/web/public_php/ams/js/masonry.pkgd.min.js code/web/public_php/ams/misc/check-exists.php code/web/public_php/ams/misc/elfinder-connector/MySQLStorage.sql code/web/public_php/ams/misc/elfinder-connector/connector.php code/web/public_php/ams/misc/elfinder-connector/elFinder.class.php code/web/public_php/ams/misc/elfinder-connector/elFinderConnector.class.php code/web/public_php/ams/misc/elfinder-connector/elFinderVolumeDriver.class.php code/web/public_php/ams/misc/elfinder-connector/elFinderVolumeLocalFileSystem.class.php code/web/public_php/ams/misc/elfinder-connector/elFinderVolumeMySQL.class.php code/web/public_php/ams/misc/elfinder-connector/mime.types code/web/public_php/ams/misc/uploadify.php code/web/public_php/ams/misc/uploadify.swf code/web/public_php/ams/sql/DBScheme.png code/web/public_php/ams/sql/db.sql code/web/public_php/ams/sql/importusers.php code/web/public_php/ams/sql/ticketsql.sql code/web/public_php/ams/sql/ticketsystemmodel.mwb code/web/public_php/ams/templates/README.md code/web/public_php/ams/templates/createticket.tpl code/web/public_php/ams/templates/dashboard.tpl code/web/public_php/ams/templates/error.tpl code/web/public_php/ams/templates/forgot_password.tpl code/web/public_php/ams/templates/homebackup.tpl code/web/public_php/ams/templates/install.tpl code/web/public_php/ams/templates/install_plugin.tpl code/web/public_php/ams/templates/layout.tpl code/web/public_php/ams/templates/layout_admin.tpl code/web/public_php/ams/templates/layout_mod.tpl code/web/public_php/ams/templates/layout_plugin.tpl code/web/public_php/ams/templates/layout_user.tpl code/web/public_php/ams/templates/license.txt code/web/public_php/ams/templates/login.tpl code/web/public_php/ams/templates/logout.tpl code/web/public_php/ams/templates/plugins.tpl code/web/public_php/ams/templates/plugins_update.tpl code/web/public_php/ams/templates/register.tpl code/web/public_php/ams/templates/register_feedback.tpl code/web/public_php/ams/templates/reset_password.tpl code/web/public_php/ams/templates/reset_success.tpl code/web/public_php/ams/templates/settings.tpl code/web/public_php/ams/templates/sgroup_list.tpl code/web/public_php/ams/templates/show_queue.tpl code/web/public_php/ams/templates/show_reply.tpl code/web/public_php/ams/templates/show_sgroup.tpl code/web/public_php/ams/templates/show_ticket.tpl code/web/public_php/ams/templates/show_ticket_info.tpl code/web/public_php/ams/templates/show_ticket_log.tpl code/web/public_php/ams/templates/show_user.tpl code/web/public_php/ams/templates/syncing.tpl code/web/public_php/ams/templates/userlist.tpl code/web/public_php/ams/templates_c/placeholder code/web/public_php/api/client/auth.php code/web/public_php/api/client/config.php.default code/web/public_php/api/client/time.php code/web/public_php/api/client/user.php code/web/public_php/api/client/utils.php code/web/public_php/api/common/actionPage.php code/web/public_php/api/common/auth.php code/web/public_php/api/common/bbCode.php code/web/public_php/api/common/config.php.default code/web/public_php/api/common/db_defs.php code/web/public_php/api/common/db_lib.php code/web/public_php/api/common/dfm.php code/web/public_php/api/common/logger.php code/web/public_php/api/common/render.php code/web/public_php/api/common/ryform.php code/web/public_php/api/common/ryformBases.php code/web/public_php/api/common/time.php code/web/public_php/api/common/user.php code/web/public_php/api/common/utils.php code/web/public_php/api/common/xml_utils.php code/web/public_php/api/data/css/ryzom_iphone.css code/web/public_php/api/data/css/ryzom_ui.css code/web/public_php/api/data/css/skin_b.gif code/web/public_php/api/data/css/skin_bl.gif code/web/public_php/api/data/css/skin_blank.png code/web/public_php/api/data/css/skin_blank_inner.png code/web/public_php/api/data/css/skin_br.gif code/web/public_php/api/data/css/skin_header_l.gif code/web/public_php/api/data/css/skin_header_m.gif code/web/public_php/api/data/css/skin_header_r.gif code/web/public_php/api/data/css/skin_l.gif code/web/public_php/api/data/css/skin_r.gif code/web/public_php/api/data/css/skin_t.gif code/web/public_php/api/data/css/skin_tl.gif code/web/public_php/api/data/css/skin_tr.gif code/web/public_php/api/data/icons/add_app.png code/web/public_php/api/data/icons/edit.png code/web/public_php/api/data/icons/edit_16.png code/web/public_php/api/data/icons/no_action.png code/web/public_php/api/data/icons/spe_com.png code/web/public_php/api/data/img/backgrounds/parchemin.png code/web/public_php/api/data/img/bg.jpg code/web/public_php/api/data/img/bordure.png code/web/public_php/api/data/img/lang/de.png code/web/public_php/api/data/img/lang/en.png code/web/public_php/api/data/img/lang/es.png code/web/public_php/api/data/img/lang/fr.png code/web/public_php/api/data/img/lang/ru.png code/web/public_php/api/data/img/logo.gif code/web/public_php/api/data/js/combobox.js code/web/public_php/api/data/js/jquery-1.7.1.js code/web/public_php/api/data/js/tab.js code/web/public_php/api/data/ryzom/guild_png/.htaccess code/web/public_php/api/data/ryzom/guild_png/guild_back_b_00_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_00_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_01_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_01_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_02_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_02_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_03_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_03_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_04_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_04_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_05_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_05_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_06_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_06_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_07_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_07_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_08_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_08_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_09_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_09_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_10_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_10_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_11_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_11_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_12_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_12_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_13_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_13_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_14_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_b_14_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_00_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_00_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_01_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_01_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_02_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_02_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_03_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_03_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_04_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_04_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_05_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_05_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_06_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_06_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_07_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_07_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_08_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_08_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_09_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_09_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_10_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_10_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_11_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_11_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_12_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_12_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_13_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_13_2.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_14_1.png code/web/public_php/api/data/ryzom/guild_png/guild_back_s_14_2.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_00.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_01.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_02.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_03.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_04.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_05.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_06.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_07.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_08.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_09.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_10.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_11.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_12.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_13.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_14.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_15.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_16.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_17.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_18.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_19.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_20.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_21.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_22.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_23.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_24.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_25.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_26.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_27.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_28.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_29.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_30.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_31.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_32.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_33.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_34.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_35.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_36.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_37.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_38.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_39.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_40.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_41.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_42.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_b_43.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_00.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_01.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_02.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_03.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_04.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_05.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_06.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_07.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_08.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_09.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_10.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_11.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_12.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_13.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_14.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_15.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_16.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_17.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_18.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_19.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_20.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_21.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_22.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_23.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_24.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_25.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_26.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_27.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_28.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_29.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_30.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_31.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_32.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_33.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_34.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_35.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_36.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_37.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_38.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_39.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_40.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_41.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_42.png code/web/public_php/api/data/ryzom/guild_png/guild_symbol_s_43.png code/web/public_php/api/data/ryzom/interface/1h_over.png code/web/public_php/api/data/ryzom/interface/2h_over.png code/web/public_php/api/data/ryzom/interface/am_logo.png code/web/public_php/api/data/ryzom/interface/ar_armpad.png code/web/public_php/api/data/ryzom/interface/ar_armpad_mask.png code/web/public_php/api/data/ryzom/interface/ar_botte.png code/web/public_php/api/data/ryzom/interface/ar_botte_mask.png code/web/public_php/api/data/ryzom/interface/ar_gilet.png code/web/public_php/api/data/ryzom/interface/ar_gilet_mask.png code/web/public_php/api/data/ryzom/interface/ar_hand.png code/web/public_php/api/data/ryzom/interface/ar_hand_mask.png code/web/public_php/api/data/ryzom/interface/ar_helmet.png code/web/public_php/api/data/ryzom/interface/ar_helmet_mask.png code/web/public_php/api/data/ryzom/interface/ar_pantabotte.png code/web/public_php/api/data/ryzom/interface/ar_pantabotte_mask.png code/web/public_php/api/data/ryzom/interface/asc_exit.png code/web/public_php/api/data/ryzom/interface/asc_rolemastercraft.png code/web/public_php/api/data/ryzom/interface/asc_rolemasterfight.png code/web/public_php/api/data/ryzom/interface/asc_rolemasterharvest.png code/web/public_php/api/data/ryzom/interface/asc_rolemastermagic.png code/web/public_php/api/data/ryzom/interface/asc_unknown.png code/web/public_php/api/data/ryzom/interface/bg_downloader.png code/web/public_php/api/data/ryzom/interface/bg_empty.png code/web/public_php/api/data/ryzom/interface/bk_aura.png code/web/public_php/api/data/ryzom/interface/bk_conso.png code/web/public_php/api/data/ryzom/interface/bk_consommable.png code/web/public_php/api/data/ryzom/interface/bk_fyros.png code/web/public_php/api/data/ryzom/interface/bk_fyros_brick.png code/web/public_php/api/data/ryzom/interface/bk_generic.png code/web/public_php/api/data/ryzom/interface/bk_generic_brick.png code/web/public_php/api/data/ryzom/interface/bk_goo.png code/web/public_php/api/data/ryzom/interface/bk_guild.png code/web/public_php/api/data/ryzom/interface/bk_horde.png code/web/public_php/api/data/ryzom/interface/bk_kami.png code/web/public_php/api/data/ryzom/interface/bk_karavan.png code/web/public_php/api/data/ryzom/interface/bk_magie_noire_brick.png code/web/public_php/api/data/ryzom/interface/bk_matis.png code/web/public_php/api/data/ryzom/interface/bk_matis_brick.png code/web/public_php/api/data/ryzom/interface/bk_mission.png code/web/public_php/api/data/ryzom/interface/bk_mission2.png code/web/public_php/api/data/ryzom/interface/bk_outpost.png code/web/public_php/api/data/ryzom/interface/bk_outpost_brick.png code/web/public_php/api/data/ryzom/interface/bk_power.png code/web/public_php/api/data/ryzom/interface/bk_primes.png code/web/public_php/api/data/ryzom/interface/bk_service.png code/web/public_php/api/data/ryzom/interface/bk_training.png code/web/public_php/api/data/ryzom/interface/bk_tryker.png code/web/public_php/api/data/ryzom/interface/bk_tryker_brick.png code/web/public_php/api/data/ryzom/interface/bk_zorai.png code/web/public_php/api/data/ryzom/interface/bk_zorai_brick.png code/web/public_php/api/data/ryzom/interface/brick_default.png code/web/public_php/api/data/ryzom/interface/building_state_24x24.png code/web/public_php/api/data/ryzom/interface/cb_main_nue.png code/web/public_php/api/data/ryzom/interface/ch_back.png code/web/public_php/api/data/ryzom/interface/charge.png code/web/public_php/api/data/ryzom/interface/clef.png code/web/public_php/api/data/ryzom/interface/conso_branche.png code/web/public_php/api/data/ryzom/interface/conso_branche_mask.png code/web/public_php/api/data/ryzom/interface/conso_fleur.png code/web/public_php/api/data/ryzom/interface/conso_fleur_mask.png code/web/public_php/api/data/ryzom/interface/conso_grappe.png code/web/public_php/api/data/ryzom/interface/conso_grappe_mask.png code/web/public_php/api/data/ryzom/interface/conso_nectar.png code/web/public_php/api/data/ryzom/interface/conso_nectar_mask.png code/web/public_php/api/data/ryzom/interface/construction.png code/web/public_php/api/data/ryzom/interface/cp_back.png code/web/public_php/api/data/ryzom/interface/cp_over_break.png code/web/public_php/api/data/ryzom/interface/cp_over_less.png code/web/public_php/api/data/ryzom/interface/cp_over_more.png code/web/public_php/api/data/ryzom/interface/cp_over_opening.png code/web/public_php/api/data/ryzom/interface/cp_over_opening_2.png code/web/public_php/api/data/ryzom/interface/cristal_ammo.png code/web/public_php/api/data/ryzom/interface/cristal_generic.png code/web/public_php/api/data/ryzom/interface/cristal_spell.png code/web/public_php/api/data/ryzom/interface/ef_back.png code/web/public_php/api/data/ryzom/interface/ef_over_break.png code/web/public_php/api/data/ryzom/interface/ef_over_less.png code/web/public_php/api/data/ryzom/interface/ef_over_more.png code/web/public_php/api/data/ryzom/interface/fo_back.png code/web/public_php/api/data/ryzom/interface/fo_over.png code/web/public_php/api/data/ryzom/interface/fp_ammo.png code/web/public_php/api/data/ryzom/interface/fp_armor.png code/web/public_php/api/data/ryzom/interface/fp_building.png code/web/public_php/api/data/ryzom/interface/fp_jewel.png code/web/public_php/api/data/ryzom/interface/fp_melee.png code/web/public_php/api/data/ryzom/interface/fp_over.png code/web/public_php/api/data/ryzom/interface/fp_range.png code/web/public_php/api/data/ryzom/interface/fp_shield.png code/web/public_php/api/data/ryzom/interface/fp_tools.png code/web/public_php/api/data/ryzom/interface/ge_mission_outpost_townhall.png code/web/public_php/api/data/ryzom/interface/ico_absorb_damage.png code/web/public_php/api/data/ryzom/interface/ico_accurate.png code/web/public_php/api/data/ryzom/interface/ico_acid.png code/web/public_php/api/data/ryzom/interface/ico_aim.png code/web/public_php/api/data/ryzom/interface/ico_aim_bird_wings.png code/web/public_php/api/data/ryzom/interface/ico_aim_flying_kitin_abdomen.png code/web/public_php/api/data/ryzom/interface/ico_aim_homin_arms.png code/web/public_php/api/data/ryzom/interface/ico_aim_homin_chest.png code/web/public_php/api/data/ryzom/interface/ico_aim_homin_feet.png code/web/public_php/api/data/ryzom/interface/ico_aim_homin_feint.png code/web/public_php/api/data/ryzom/interface/ico_aim_homin_hands.png code/web/public_php/api/data/ryzom/interface/ico_aim_homin_head.png code/web/public_php/api/data/ryzom/interface/ico_aim_homin_legs.png code/web/public_php/api/data/ryzom/interface/ico_aim_kitin_head.png code/web/public_php/api/data/ryzom/interface/ico_amande.png code/web/public_php/api/data/ryzom/interface/ico_ammo_bullet.png code/web/public_php/api/data/ryzom/interface/ico_ammo_jacket.png code/web/public_php/api/data/ryzom/interface/ico_angle.png code/web/public_php/api/data/ryzom/interface/ico_anti_magic_shield.png code/web/public_php/api/data/ryzom/interface/ico_armor.png code/web/public_php/api/data/ryzom/interface/ico_armor_clip.png code/web/public_php/api/data/ryzom/interface/ico_armor_heavy.png code/web/public_php/api/data/ryzom/interface/ico_armor_kitin.png code/web/public_php/api/data/ryzom/interface/ico_armor_light.png code/web/public_php/api/data/ryzom/interface/ico_armor_medium.png code/web/public_php/api/data/ryzom/interface/ico_armor_penalty.png code/web/public_php/api/data/ryzom/interface/ico_armor_shell.png code/web/public_php/api/data/ryzom/interface/ico_atys.png code/web/public_php/api/data/ryzom/interface/ico_atysian.png code/web/public_php/api/data/ryzom/interface/ico_balance_hp.png code/web/public_php/api/data/ryzom/interface/ico_barrel.png code/web/public_php/api/data/ryzom/interface/ico_bash.png code/web/public_php/api/data/ryzom/interface/ico_berserk.png code/web/public_php/api/data/ryzom/interface/ico_blade.png code/web/public_php/api/data/ryzom/interface/ico_bleeding.png code/web/public_php/api/data/ryzom/interface/ico_blind.png code/web/public_php/api/data/ryzom/interface/ico_blunt.png code/web/public_php/api/data/ryzom/interface/ico_bomb.png code/web/public_php/api/data/ryzom/interface/ico_cataliseur_xp.png code/web/public_php/api/data/ryzom/interface/ico_celestial.png code/web/public_php/api/data/ryzom/interface/ico_circular_attack.png code/web/public_php/api/data/ryzom/interface/ico_clothes.png code/web/public_php/api/data/ryzom/interface/ico_cold.png code/web/public_php/api/data/ryzom/interface/ico_concentration.png code/web/public_php/api/data/ryzom/interface/ico_consommable_over.png code/web/public_php/api/data/ryzom/interface/ico_constitution.png code/web/public_php/api/data/ryzom/interface/ico_counterweight.png code/web/public_php/api/data/ryzom/interface/ico_craft_buff.png code/web/public_php/api/data/ryzom/interface/ico_create_sapload.png code/web/public_php/api/data/ryzom/interface/ico_curse.png code/web/public_php/api/data/ryzom/interface/ico_debuff.png code/web/public_php/api/data/ryzom/interface/ico_debuff_resist.png code/web/public_php/api/data/ryzom/interface/ico_debuff_skill.png code/web/public_php/api/data/ryzom/interface/ico_desert.png code/web/public_php/api/data/ryzom/interface/ico_dexterity.png code/web/public_php/api/data/ryzom/interface/ico_disarm.png code/web/public_php/api/data/ryzom/interface/ico_dodge.png code/web/public_php/api/data/ryzom/interface/ico_dot.png code/web/public_php/api/data/ryzom/interface/ico_durability.png code/web/public_php/api/data/ryzom/interface/ico_electric.png code/web/public_php/api/data/ryzom/interface/ico_explosif.png code/web/public_php/api/data/ryzom/interface/ico_extracting.png code/web/public_php/api/data/ryzom/interface/ico_fear.png code/web/public_php/api/data/ryzom/interface/ico_feint.png code/web/public_php/api/data/ryzom/interface/ico_fire.png code/web/public_php/api/data/ryzom/interface/ico_firing_pin.png code/web/public_php/api/data/ryzom/interface/ico_fleur_carac_1.png code/web/public_php/api/data/ryzom/interface/ico_fleur_carac_1_mask.png code/web/public_php/api/data/ryzom/interface/ico_fleur_carac_2.png code/web/public_php/api/data/ryzom/interface/ico_fleur_carac_2_mask.png code/web/public_php/api/data/ryzom/interface/ico_fleur_carac_3.png code/web/public_php/api/data/ryzom/interface/ico_fleur_carac_3_mask.png code/web/public_php/api/data/ryzom/interface/ico_focus.png code/web/public_php/api/data/ryzom/interface/ico_forage_buff.png code/web/public_php/api/data/ryzom/interface/ico_forbid_item.png code/web/public_php/api/data/ryzom/interface/ico_forest.png code/web/public_php/api/data/ryzom/interface/ico_foreuse.png code/web/public_php/api/data/ryzom/interface/ico_gardening.png code/web/public_php/api/data/ryzom/interface/ico_gentle.png code/web/public_php/api/data/ryzom/interface/ico_goo.png code/web/public_php/api/data/ryzom/interface/ico_gripp.png code/web/public_php/api/data/ryzom/interface/ico_haircolor.png code/web/public_php/api/data/ryzom/interface/ico_haircut.png code/web/public_php/api/data/ryzom/interface/ico_hammer.png code/web/public_php/api/data/ryzom/interface/ico_harmful.png code/web/public_php/api/data/ryzom/interface/ico_hatred.png code/web/public_php/api/data/ryzom/interface/ico_heal.png code/web/public_php/api/data/ryzom/interface/ico_hit_rate.png code/web/public_php/api/data/ryzom/interface/ico_incapacity.png code/web/public_php/api/data/ryzom/interface/ico_intelligence.png code/web/public_php/api/data/ryzom/interface/ico_interrupt.png code/web/public_php/api/data/ryzom/interface/ico_invulnerability.png code/web/public_php/api/data/ryzom/interface/ico_jewel_stone.png code/web/public_php/api/data/ryzom/interface/ico_jewel_stone_support.png code/web/public_php/api/data/ryzom/interface/ico_jungle.png code/web/public_php/api/data/ryzom/interface/ico_lacustre.png code/web/public_php/api/data/ryzom/interface/ico_landmark_bonus.png code/web/public_php/api/data/ryzom/interface/ico_level.png code/web/public_php/api/data/ryzom/interface/ico_lining.png code/web/public_php/api/data/ryzom/interface/ico_location.png code/web/public_php/api/data/ryzom/interface/ico_madness.png code/web/public_php/api/data/ryzom/interface/ico_magic.png code/web/public_php/api/data/ryzom/interface/ico_magic_action_buff.png code/web/public_php/api/data/ryzom/interface/ico_magic_focus.png code/web/public_php/api/data/ryzom/interface/ico_magic_target_buff.png code/web/public_php/api/data/ryzom/interface/ico_melee_action_buff.png code/web/public_php/api/data/ryzom/interface/ico_melee_target_buff.png code/web/public_php/api/data/ryzom/interface/ico_mental.png code/web/public_php/api/data/ryzom/interface/ico_metabolism.png code/web/public_php/api/data/ryzom/interface/ico_mezz.png code/web/public_php/api/data/ryzom/interface/ico_misfortune.png code/web/public_php/api/data/ryzom/interface/ico_mission_art_fyros.png code/web/public_php/api/data/ryzom/interface/ico_mission_art_matis.png code/web/public_php/api/data/ryzom/interface/ico_mission_art_tryker.png code/web/public_php/api/data/ryzom/interface/ico_mission_art_zorai.png code/web/public_php/api/data/ryzom/interface/ico_mission_barrel.png code/web/public_php/api/data/ryzom/interface/ico_mission_bottle.png code/web/public_php/api/data/ryzom/interface/ico_mission_casket.png code/web/public_php/api/data/ryzom/interface/ico_mission_medicine.png code/web/public_php/api/data/ryzom/interface/ico_mission_message.png code/web/public_php/api/data/ryzom/interface/ico_mission_package.png code/web/public_php/api/data/ryzom/interface/ico_mission_pot.png code/web/public_php/api/data/ryzom/interface/ico_mission_purse.png code/web/public_php/api/data/ryzom/interface/ico_move.png code/web/public_php/api/data/ryzom/interface/ico_multi_fight.png code/web/public_php/api/data/ryzom/interface/ico_multiple_spots.png code/web/public_php/api/data/ryzom/interface/ico_noix.png code/web/public_php/api/data/ryzom/interface/ico_opening_hit.png code/web/public_php/api/data/ryzom/interface/ico_over_autumn.png code/web/public_php/api/data/ryzom/interface/ico_over_degenerated.png code/web/public_php/api/data/ryzom/interface/ico_over_fauna.png code/web/public_php/api/data/ryzom/interface/ico_over_flora.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_arms.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_chest.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_feet.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_feet_hands.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_feet_head.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_feet_x2.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_feint_x3.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_hands.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_hands_chest.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_hands_head.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_head.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_head_x3.png code/web/public_php/api/data/ryzom/interface/ico_over_hit_legs.png code/web/public_php/api/data/ryzom/interface/ico_over_homin.png code/web/public_php/api/data/ryzom/interface/ico_over_kitin.png code/web/public_php/api/data/ryzom/interface/ico_over_magic.png code/web/public_php/api/data/ryzom/interface/ico_over_melee.png code/web/public_php/api/data/ryzom/interface/ico_over_racial.png code/web/public_php/api/data/ryzom/interface/ico_over_range.png code/web/public_php/api/data/ryzom/interface/ico_over_special.png code/web/public_php/api/data/ryzom/interface/ico_over_spring.png code/web/public_php/api/data/ryzom/interface/ico_over_summer.png code/web/public_php/api/data/ryzom/interface/ico_over_winter.png code/web/public_php/api/data/ryzom/interface/ico_parry.png code/web/public_php/api/data/ryzom/interface/ico_piercing.png code/web/public_php/api/data/ryzom/interface/ico_pointe.png code/web/public_php/api/data/ryzom/interface/ico_poison.png code/web/public_php/api/data/ryzom/interface/ico_power.png code/web/public_php/api/data/ryzom/interface/ico_preservation.png code/web/public_php/api/data/ryzom/interface/ico_primal.png code/web/public_php/api/data/ryzom/interface/ico_prime_roots.png code/web/public_php/api/data/ryzom/interface/ico_private.png code/web/public_php/api/data/ryzom/interface/ico_prospecting.png code/web/public_php/api/data/ryzom/interface/ico_quality.png code/web/public_php/api/data/ryzom/interface/ico_racine.png code/web/public_php/api/data/ryzom/interface/ico_range.png code/web/public_php/api/data/ryzom/interface/ico_range_action_buff.png code/web/public_php/api/data/ryzom/interface/ico_range_target_buff.png code/web/public_php/api/data/ryzom/interface/ico_ricochet.png code/web/public_php/api/data/ryzom/interface/ico_root.png code/web/public_php/api/data/ryzom/interface/ico_rot.png code/web/public_php/api/data/ryzom/interface/ico_safe.png code/web/public_php/api/data/ryzom/interface/ico_sap.png code/web/public_php/api/data/ryzom/interface/ico_self_damage.png code/web/public_php/api/data/ryzom/interface/ico_shaft.png code/web/public_php/api/data/ryzom/interface/ico_shield_buff.png code/web/public_php/api/data/ryzom/interface/ico_shield_up.png code/web/public_php/api/data/ryzom/interface/ico_shielding.png code/web/public_php/api/data/ryzom/interface/ico_shockwave.png code/web/public_php/api/data/ryzom/interface/ico_sickness.png code/web/public_php/api/data/ryzom/interface/ico_slashing.png code/web/public_php/api/data/ryzom/interface/ico_slow.png code/web/public_php/api/data/ryzom/interface/ico_soft_spot.png code/web/public_php/api/data/ryzom/interface/ico_source_knowledge.png code/web/public_php/api/data/ryzom/interface/ico_source_time.png code/web/public_php/api/data/ryzom/interface/ico_speed.png code/web/public_php/api/data/ryzom/interface/ico_speeding_up.png code/web/public_php/api/data/ryzom/interface/ico_spell_break.png code/web/public_php/api/data/ryzom/interface/ico_spores.png code/web/public_php/api/data/ryzom/interface/ico_spray.png code/web/public_php/api/data/ryzom/interface/ico_spying.png code/web/public_php/api/data/ryzom/interface/ico_stamina.png code/web/public_php/api/data/ryzom/interface/ico_strength.png code/web/public_php/api/data/ryzom/interface/ico_stuffing.png code/web/public_php/api/data/ryzom/interface/ico_stunn.png code/web/public_php/api/data/ryzom/interface/ico_task_craft.png code/web/public_php/api/data/ryzom/interface/ico_task_done.png code/web/public_php/api/data/ryzom/interface/ico_task_failed.png code/web/public_php/api/data/ryzom/interface/ico_task_fight.png code/web/public_php/api/data/ryzom/interface/ico_task_forage.png code/web/public_php/api/data/ryzom/interface/ico_task_generic.png code/web/public_php/api/data/ryzom/interface/ico_task_generic_quart.png code/web/public_php/api/data/ryzom/interface/ico_task_guild.png code/web/public_php/api/data/ryzom/interface/ico_task_rite.png code/web/public_php/api/data/ryzom/interface/ico_task_travel.png code/web/public_php/api/data/ryzom/interface/ico_tatoo.png code/web/public_php/api/data/ryzom/interface/ico_taunt.png code/web/public_php/api/data/ryzom/interface/ico_time.png code/web/public_php/api/data/ryzom/interface/ico_time_bonus.png code/web/public_php/api/data/ryzom/interface/ico_tourbe.png code/web/public_php/api/data/ryzom/interface/ico_trigger.png code/web/public_php/api/data/ryzom/interface/ico_umbrella.png code/web/public_php/api/data/ryzom/interface/ico_use_enchantement.png code/web/public_php/api/data/ryzom/interface/ico_vampire.png code/web/public_php/api/data/ryzom/interface/ico_visibility.png code/web/public_php/api/data/ryzom/interface/ico_war_cry.png code/web/public_php/api/data/ryzom/interface/ico_weight.png code/web/public_php/api/data/ryzom/interface/ico_wellbalanced.png code/web/public_php/api/data/ryzom/interface/ico_will.png code/web/public_php/api/data/ryzom/interface/ico_windding.png code/web/public_php/api/data/ryzom/interface/ico_wisdom.png code/web/public_php/api/data/ryzom/interface/improved_tool.png code/web/public_php/api/data/ryzom/interface/item_default.png code/web/public_php/api/data/ryzom/interface/item_plan_over.png code/web/public_php/api/data/ryzom/interface/lucky_flower.png code/web/public_php/api/data/ryzom/interface/mail.png code/web/public_php/api/data/ryzom/interface/mektoub_pack.png code/web/public_php/api/data/ryzom/interface/mektoub_steed.png code/web/public_php/api/data/ryzom/interface/mf_back.png code/web/public_php/api/data/ryzom/interface/mf_over.png code/web/public_php/api/data/ryzom/interface/mg_glove.png code/web/public_php/api/data/ryzom/interface/mission_icon_0.png code/web/public_php/api/data/ryzom/interface/mission_icon_1.png code/web/public_php/api/data/ryzom/interface/mission_icon_2.png code/web/public_php/api/data/ryzom/interface/mission_icon_3.png code/web/public_php/api/data/ryzom/interface/mp3.png code/web/public_php/api/data/ryzom/interface/mp_amber.png code/web/public_php/api/data/ryzom/interface/mp_back_curative.png code/web/public_php/api/data/ryzom/interface/mp_back_offensive.png code/web/public_php/api/data/ryzom/interface/mp_back_selfonly.png code/web/public_php/api/data/ryzom/interface/mp_bark.png code/web/public_php/api/data/ryzom/interface/mp_batiment_brique.png code/web/public_php/api/data/ryzom/interface/mp_batiment_colonne.png code/web/public_php/api/data/ryzom/interface/mp_batiment_colonne_justice.png code/web/public_php/api/data/ryzom/interface/mp_batiment_comble.png code/web/public_php/api/data/ryzom/interface/mp_batiment_noyau_maduk.png code/web/public_php/api/data/ryzom/interface/mp_batiment_ornement.png code/web/public_php/api/data/ryzom/interface/mp_batiment_revetement.png code/web/public_php/api/data/ryzom/interface/mp_batiment_socle.png code/web/public_php/api/data/ryzom/interface/mp_batiment_statue.png code/web/public_php/api/data/ryzom/interface/mp_beak.png code/web/public_php/api/data/ryzom/interface/mp_blood.png code/web/public_php/api/data/ryzom/interface/mp_bone.png code/web/public_php/api/data/ryzom/interface/mp_bud.png code/web/public_php/api/data/ryzom/interface/mp_buterfly_blue.png code/web/public_php/api/data/ryzom/interface/mp_buterfly_cocoon.png code/web/public_php/api/data/ryzom/interface/mp_cereal.png code/web/public_php/api/data/ryzom/interface/mp_claw.png code/web/public_php/api/data/ryzom/interface/mp_dandelion.png code/web/public_php/api/data/ryzom/interface/mp_dry code/web/public_php/api/data/ryzom/interface/mp_dry wood.png code/web/public_php/api/data/ryzom/interface/mp_dry.png code/web/public_php/api/data/ryzom/interface/mp_dry_wood.png code/web/public_php/api/data/ryzom/interface/mp_dust.png code/web/public_php/api/data/ryzom/interface/mp_egg.png code/web/public_php/api/data/ryzom/interface/mp_eyes.png code/web/public_php/api/data/ryzom/interface/mp_fang.png code/web/public_php/api/data/ryzom/interface/mp_fiber.png code/web/public_php/api/data/ryzom/interface/mp_filament.png code/web/public_php/api/data/ryzom/interface/mp_firefly_abdomen.png code/web/public_php/api/data/ryzom/interface/mp_fish_scale.png code/web/public_php/api/data/ryzom/interface/mp_flowers.png code/web/public_php/api/data/ryzom/interface/mp_fresh_loose_soil.png code/web/public_php/api/data/ryzom/interface/mp_fruit.png code/web/public_php/api/data/ryzom/interface/mp_generic.png code/web/public_php/api/data/ryzom/interface/mp_generic_colorize.png code/web/public_php/api/data/ryzom/interface/mp_gomme.png code/web/public_php/api/data/ryzom/interface/mp_goo_residue.png code/web/public_php/api/data/ryzom/interface/mp_hairs.png code/web/public_php/api/data/ryzom/interface/mp_hoof.png code/web/public_php/api/data/ryzom/interface/mp_horn.png code/web/public_php/api/data/ryzom/interface/mp_horney.png code/web/public_php/api/data/ryzom/interface/mp_insect_fossil.png code/web/public_php/api/data/ryzom/interface/mp_kitin_flesh.png code/web/public_php/api/data/ryzom/interface/mp_kitin_secretion.png code/web/public_php/api/data/ryzom/interface/mp_kitinshell.png code/web/public_php/api/data/ryzom/interface/mp_larva.png code/web/public_php/api/data/ryzom/interface/mp_leaf.png code/web/public_php/api/data/ryzom/interface/mp_leather.png code/web/public_php/api/data/ryzom/interface/mp_liane.png code/web/public_php/api/data/ryzom/interface/mp_lichen.png code/web/public_php/api/data/ryzom/interface/mp_ligament.png code/web/public_php/api/data/ryzom/interface/mp_mandible.png code/web/public_php/api/data/ryzom/interface/mp_meat.png code/web/public_php/api/data/ryzom/interface/mp_moss.png code/web/public_php/api/data/ryzom/interface/mp_mushroom.png code/web/public_php/api/data/ryzom/interface/mp_nail.png code/web/public_php/api/data/ryzom/interface/mp_oil.png code/web/public_php/api/data/ryzom/interface/mp_over_link.png code/web/public_php/api/data/ryzom/interface/mp_parasite.png code/web/public_php/api/data/ryzom/interface/mp_pearl.png code/web/public_php/api/data/ryzom/interface/mp_pelvis.png code/web/public_php/api/data/ryzom/interface/mp_pigment.png code/web/public_php/api/data/ryzom/interface/mp_pistil.png code/web/public_php/api/data/ryzom/interface/mp_plant_fossil.png code/web/public_php/api/data/ryzom/interface/mp_pollen.png code/web/public_php/api/data/ryzom/interface/mp_resin.png code/web/public_php/api/data/ryzom/interface/mp_ronce.png code/web/public_php/api/data/ryzom/interface/mp_rostrum.png code/web/public_php/api/data/ryzom/interface/mp_sap.png code/web/public_php/api/data/ryzom/interface/mp_sawdust.png code/web/public_php/api/data/ryzom/interface/mp_seed.png code/web/public_php/api/data/ryzom/interface/mp_shell.png code/web/public_php/api/data/ryzom/interface/mp_silk_worm.png code/web/public_php/api/data/ryzom/interface/mp_skin.png code/web/public_php/api/data/ryzom/interface/mp_skull.png code/web/public_php/api/data/ryzom/interface/mp_spiders_web.png code/web/public_php/api/data/ryzom/interface/mp_spine.png code/web/public_php/api/data/ryzom/interface/mp_stem.png code/web/public_php/api/data/ryzom/interface/mp_sting.png code/web/public_php/api/data/ryzom/interface/mp_straw.png code/web/public_php/api/data/ryzom/interface/mp_suc.png code/web/public_php/api/data/ryzom/interface/mp_tail.png code/web/public_php/api/data/ryzom/interface/mp_tooth.png code/web/public_php/api/data/ryzom/interface/mp_trunk.png code/web/public_php/api/data/ryzom/interface/mp_whiskers.png code/web/public_php/api/data/ryzom/interface/mp_wing.png code/web/public_php/api/data/ryzom/interface/mp_wood.png code/web/public_php/api/data/ryzom/interface/mp_wood_node.png code/web/public_php/api/data/ryzom/interface/mw_2h_axe.png code/web/public_php/api/data/ryzom/interface/mw_2h_lance.png code/web/public_php/api/data/ryzom/interface/mw_2h_mace.png code/web/public_php/api/data/ryzom/interface/mw_2h_sword.png code/web/public_php/api/data/ryzom/interface/mw_axe.png code/web/public_php/api/data/ryzom/interface/mw_dagger.png code/web/public_php/api/data/ryzom/interface/mw_lance.png code/web/public_php/api/data/ryzom/interface/mw_mace.png code/web/public_php/api/data/ryzom/interface/mw_staff.png code/web/public_php/api/data/ryzom/interface/mw_sword.png code/web/public_php/api/data/ryzom/interface/no_action.png code/web/public_php/api/data/ryzom/interface/num_slash.png code/web/public_php/api/data/ryzom/interface/op_back.png code/web/public_php/api/data/ryzom/interface/op_over_break.png code/web/public_php/api/data/ryzom/interface/op_over_less.png code/web/public_php/api/data/ryzom/interface/op_over_more.png code/web/public_php/api/data/ryzom/interface/pa_anklet.png code/web/public_php/api/data/ryzom/interface/pa_back.png code/web/public_php/api/data/ryzom/interface/pa_bracelet.png code/web/public_php/api/data/ryzom/interface/pa_diadem.png code/web/public_php/api/data/ryzom/interface/pa_earring.png code/web/public_php/api/data/ryzom/interface/pa_over_break.png code/web/public_php/api/data/ryzom/interface/pa_over_less.png code/web/public_php/api/data/ryzom/interface/pa_over_more.png code/web/public_php/api/data/ryzom/interface/pa_pendant.png code/web/public_php/api/data/ryzom/interface/pa_ring.png code/web/public_php/api/data/ryzom/interface/profile.png code/web/public_php/api/data/ryzom/interface/protect_amber.png code/web/public_php/api/data/ryzom/interface/pvp_ally_0.png code/web/public_php/api/data/ryzom/interface/pvp_ally_1.png code/web/public_php/api/data/ryzom/interface/pvp_ally_2.png code/web/public_php/api/data/ryzom/interface/pvp_ally_3.png code/web/public_php/api/data/ryzom/interface/pvp_ally_4.png code/web/public_php/api/data/ryzom/interface/pvp_ally_6.png code/web/public_php/api/data/ryzom/interface/pvp_ally_primas.png code/web/public_php/api/data/ryzom/interface/pvp_ally_ranger.png code/web/public_php/api/data/ryzom/interface/pvp_aura.png code/web/public_php/api/data/ryzom/interface/pvp_aura_mask.png code/web/public_php/api/data/ryzom/interface/pvp_boost.png code/web/public_php/api/data/ryzom/interface/pvp_boost_mask.png code/web/public_php/api/data/ryzom/interface/pvp_enemy_0.png code/web/public_php/api/data/ryzom/interface/pvp_enemy_1.png code/web/public_php/api/data/ryzom/interface/pvp_enemy_2.png code/web/public_php/api/data/ryzom/interface/pvp_enemy_3.png code/web/public_php/api/data/ryzom/interface/pvp_enemy_4.png code/web/public_php/api/data/ryzom/interface/pvp_enemy_6.png code/web/public_php/api/data/ryzom/interface/pvp_enemy_marauder.png code/web/public_php/api/data/ryzom/interface/pvp_enemy_trytonist.png code/web/public_php/api/data/ryzom/interface/pw_4.png code/web/public_php/api/data/ryzom/interface/pw_5.png code/web/public_php/api/data/ryzom/interface/pw_6.png code/web/public_php/api/data/ryzom/interface/pw_7.png code/web/public_php/api/data/ryzom/interface/pw_heavy.png code/web/public_php/api/data/ryzom/interface/pw_light.png code/web/public_php/api/data/ryzom/interface/pw_medium.png code/web/public_php/api/data/ryzom/interface/quest_coeur.png code/web/public_php/api/data/ryzom/interface/quest_foie.png code/web/public_php/api/data/ryzom/interface/quest_jeton.png code/web/public_php/api/data/ryzom/interface/quest_langue.png code/web/public_php/api/data/ryzom/interface/quest_louche.png code/web/public_php/api/data/ryzom/interface/quest_oreille.png code/web/public_php/api/data/ryzom/interface/quest_patte.png code/web/public_php/api/data/ryzom/interface/quest_poils.png code/web/public_php/api/data/ryzom/interface/quest_queue.png code/web/public_php/api/data/ryzom/interface/quest_ticket.png code/web/public_php/api/data/ryzom/interface/r2_live.png code/web/public_php/api/data/ryzom/interface/r2_live_over.png code/web/public_php/api/data/ryzom/interface/r2_live_pushed.png code/web/public_php/api/data/ryzom/interface/r2_palette_entities.png code/web/public_php/api/data/ryzom/interface/requirement.png code/web/public_php/api/data/ryzom/interface/rm_f.png code/web/public_php/api/data/ryzom/interface/rm_f_upgrade.png code/web/public_php/api/data/ryzom/interface/rm_h.png code/web/public_php/api/data/ryzom/interface/rm_h_upgrade.png code/web/public_php/api/data/ryzom/interface/rm_m.png code/web/public_php/api/data/ryzom/interface/rm_m_upgrade.png code/web/public_php/api/data/ryzom/interface/rm_r.png code/web/public_php/api/data/ryzom/interface/rm_r_upgrade.png code/web/public_php/api/data/ryzom/interface/rpjob_200.png code/web/public_php/api/data/ryzom/interface/rpjob_201.png code/web/public_php/api/data/ryzom/interface/rpjob_202.png code/web/public_php/api/data/ryzom/interface/rpjob_203.png code/web/public_php/api/data/ryzom/interface/rpjob_204.png code/web/public_php/api/data/ryzom/interface/rpjob_205.png code/web/public_php/api/data/ryzom/interface/rpjob_206.png code/web/public_php/api/data/ryzom/interface/rpjob_207.png code/web/public_php/api/data/ryzom/interface/rpjob_advanced.png code/web/public_php/api/data/ryzom/interface/rpjob_elementary.png code/web/public_php/api/data/ryzom/interface/rpjob_roleplay.png code/web/public_php/api/data/ryzom/interface/rpjob_task.png code/web/public_php/api/data/ryzom/interface/rpjob_task_certificats.png code/web/public_php/api/data/ryzom/interface/rpjob_task_convert.png code/web/public_php/api/data/ryzom/interface/rpjob_task_elementary.png code/web/public_php/api/data/ryzom/interface/rpjob_task_generic.png code/web/public_php/api/data/ryzom/interface/rpjob_task_upgrade.png code/web/public_php/api/data/ryzom/interface/rpjobitem_200_a.png code/web/public_php/api/data/ryzom/interface/rpjobitem_200_b.png code/web/public_php/api/data/ryzom/interface/rpjobitem_200_c.png code/web/public_php/api/data/ryzom/interface/rpjobitem_201_a.png code/web/public_php/api/data/ryzom/interface/rpjobitem_201_b.png code/web/public_php/api/data/ryzom/interface/rpjobitem_201_c.png code/web/public_php/api/data/ryzom/interface/rpjobitem_202_a.png code/web/public_php/api/data/ryzom/interface/rpjobitem_202_b.png code/web/public_php/api/data/ryzom/interface/rpjobitem_202_c.png code/web/public_php/api/data/ryzom/interface/rpjobitem_203_a.png code/web/public_php/api/data/ryzom/interface/rpjobitem_203_b.png code/web/public_php/api/data/ryzom/interface/rpjobitem_203_c.png code/web/public_php/api/data/ryzom/interface/rpjobitem_204_a.png code/web/public_php/api/data/ryzom/interface/rpjobitem_204_b.png code/web/public_php/api/data/ryzom/interface/rpjobitem_204_c.png code/web/public_php/api/data/ryzom/interface/rpjobitem_205_a.png code/web/public_php/api/data/ryzom/interface/rpjobitem_205_b.png code/web/public_php/api/data/ryzom/interface/rpjobitem_205_c.png code/web/public_php/api/data/ryzom/interface/rpjobitem_206_a.png code/web/public_php/api/data/ryzom/interface/rpjobitem_206_b.png code/web/public_php/api/data/ryzom/interface/rpjobitem_206_c.png code/web/public_php/api/data/ryzom/interface/rpjobitem_207_a.png code/web/public_php/api/data/ryzom/interface/rpjobitem_207_b.png code/web/public_php/api/data/ryzom/interface/rpjobitem_207_c.png code/web/public_php/api/data/ryzom/interface/rpjobitem_certifications.png code/web/public_php/api/data/ryzom/interface/rw_autolaunch.png code/web/public_php/api/data/ryzom/interface/rw_bowgun.png code/web/public_php/api/data/ryzom/interface/rw_grenade.png code/web/public_php/api/data/ryzom/interface/rw_harpoongun.png code/web/public_php/api/data/ryzom/interface/rw_launcher.png code/web/public_php/api/data/ryzom/interface/rw_pistol.png code/web/public_php/api/data/ryzom/interface/rw_pistolarc.png code/web/public_php/api/data/ryzom/interface/rw_rifle.png code/web/public_php/api/data/ryzom/interface/sapload.png code/web/public_php/api/data/ryzom/interface/sh_buckler.png code/web/public_php/api/data/ryzom/interface/sh_large_shield.png code/web/public_php/api/data/ryzom/interface/small_task_craft.png code/web/public_php/api/data/ryzom/interface/small_task_done.png code/web/public_php/api/data/ryzom/interface/small_task_failed.png code/web/public_php/api/data/ryzom/interface/small_task_fight.png code/web/public_php/api/data/ryzom/interface/small_task_forage.png code/web/public_php/api/data/ryzom/interface/small_task_generic.png code/web/public_php/api/data/ryzom/interface/small_task_guild.png code/web/public_php/api/data/ryzom/interface/small_task_rite.png code/web/public_php/api/data/ryzom/interface/small_task_travel.png code/web/public_php/api/data/ryzom/interface/spe_beast.png code/web/public_php/api/data/ryzom/interface/spe_com.png code/web/public_php/api/data/ryzom/interface/spe_inventory.png code/web/public_php/api/data/ryzom/interface/spe_labs.png code/web/public_php/api/data/ryzom/interface/spe_memory.png code/web/public_php/api/data/ryzom/interface/spe_options.png code/web/public_php/api/data/ryzom/interface/spe_status.png code/web/public_php/api/data/ryzom/interface/stimulating_water.png code/web/public_php/api/data/ryzom/interface/tb_action_attack.png code/web/public_php/api/data/ryzom/interface/tb_action_config.png code/web/public_php/api/data/ryzom/interface/tb_action_disband.png code/web/public_php/api/data/ryzom/interface/tb_action_disengage.png code/web/public_php/api/data/ryzom/interface/tb_action_extract.png code/web/public_php/api/data/ryzom/interface/tb_action_invite.png code/web/public_php/api/data/ryzom/interface/tb_action_kick.png code/web/public_php/api/data/ryzom/interface/tb_action_move.png code/web/public_php/api/data/ryzom/interface/tb_action_run.png code/web/public_php/api/data/ryzom/interface/tb_action_sit.png code/web/public_php/api/data/ryzom/interface/tb_action_stand.png code/web/public_php/api/data/ryzom/interface/tb_action_stop.png code/web/public_php/api/data/ryzom/interface/tb_action_talk.png code/web/public_php/api/data/ryzom/interface/tb_action_walk.png code/web/public_php/api/data/ryzom/interface/tb_animals.png code/web/public_php/api/data/ryzom/interface/tb_config.png code/web/public_php/api/data/ryzom/interface/tb_connection.png code/web/public_php/api/data/ryzom/interface/tb_contacts.png code/web/public_php/api/data/ryzom/interface/tb_desk_1.png code/web/public_php/api/data/ryzom/interface/tb_desk_2.png code/web/public_php/api/data/ryzom/interface/tb_desk_3.png code/web/public_php/api/data/ryzom/interface/tb_desk_4.png code/web/public_php/api/data/ryzom/interface/tb_faction.png code/web/public_php/api/data/ryzom/interface/tb_forum.png code/web/public_php/api/data/ryzom/interface/tb_guild.png code/web/public_php/api/data/ryzom/interface/tb_help2.png code/web/public_php/api/data/ryzom/interface/tb_keys.png code/web/public_php/api/data/ryzom/interface/tb_macros.png code/web/public_php/api/data/ryzom/interface/tb_mail.png code/web/public_php/api/data/ryzom/interface/tb_mode.png code/web/public_php/api/data/ryzom/interface/tb_mode_dodge.png code/web/public_php/api/data/ryzom/interface/tb_mode_parry.png code/web/public_php/api/data/ryzom/interface/tb_over.png code/web/public_php/api/data/ryzom/interface/tb_support.png code/web/public_php/api/data/ryzom/interface/tb_team.png code/web/public_php/api/data/ryzom/interface/tb_windows.png code/web/public_php/api/data/ryzom/interface/tetekitin.png code/web/public_php/api/data/ryzom/interface/to_ammo.png code/web/public_php/api/data/ryzom/interface/to_armor.png code/web/public_php/api/data/ryzom/interface/to_cooking_pot.png code/web/public_php/api/data/ryzom/interface/to_fishing_rod.png code/web/public_php/api/data/ryzom/interface/to_forage.png code/web/public_php/api/data/ryzom/interface/to_hammer.png code/web/public_php/api/data/ryzom/interface/to_jewelry_hammer.png code/web/public_php/api/data/ryzom/interface/to_jewels.png code/web/public_php/api/data/ryzom/interface/to_leathercutter.png code/web/public_php/api/data/ryzom/interface/to_melee.png code/web/public_php/api/data/ryzom/interface/to_needle.png code/web/public_php/api/data/ryzom/interface/to_pestle.png code/web/public_php/api/data/ryzom/interface/to_range.png code/web/public_php/api/data/ryzom/interface/to_searake.png code/web/public_php/api/data/ryzom/interface/to_spade.png code/web/public_php/api/data/ryzom/interface/to_stick.png code/web/public_php/api/data/ryzom/interface/to_tunneling_knife.png code/web/public_php/api/data/ryzom/interface/to_whip.png code/web/public_php/api/data/ryzom/interface/to_wrench.png code/web/public_php/api/data/ryzom/interface/tp_caravane.png code/web/public_php/api/data/ryzom/interface/tp_kami.png code/web/public_php/api/data/ryzom/interface/us_back_0.png code/web/public_php/api/data/ryzom/interface/us_back_1.png code/web/public_php/api/data/ryzom/interface/us_back_2.png code/web/public_php/api/data/ryzom/interface/us_back_3.png code/web/public_php/api/data/ryzom/interface/us_back_4.png code/web/public_php/api/data/ryzom/interface/us_back_5.png code/web/public_php/api/data/ryzom/interface/us_back_6.png code/web/public_php/api/data/ryzom/interface/us_back_7.png code/web/public_php/api/data/ryzom/interface/us_back_8.png code/web/public_php/api/data/ryzom/interface/us_back_9.png code/web/public_php/api/data/ryzom/interface/us_ico_0.png code/web/public_php/api/data/ryzom/interface/us_ico_1.png code/web/public_php/api/data/ryzom/interface/us_ico_2.png code/web/public_php/api/data/ryzom/interface/us_ico_3.png code/web/public_php/api/data/ryzom/interface/us_ico_4.png code/web/public_php/api/data/ryzom/interface/us_ico_5.png code/web/public_php/api/data/ryzom/interface/us_ico_6.png code/web/public_php/api/data/ryzom/interface/us_ico_7.png code/web/public_php/api/data/ryzom/interface/us_ico_8.png code/web/public_php/api/data/ryzom/interface/us_ico_9.png code/web/public_php/api/data/ryzom/interface/us_over_0.png code/web/public_php/api/data/ryzom/interface/us_over_1.png code/web/public_php/api/data/ryzom/interface/us_over_2.png code/web/public_php/api/data/ryzom/interface/us_over_3.png code/web/public_php/api/data/ryzom/interface/us_over_4.png code/web/public_php/api/data/ryzom/interface/w_am_logo.png code/web/public_php/api/data/ryzom/interface/w_leader.png code/web/public_php/api/data/ryzom/interface/w_major.png code/web/public_php/api/data/ryzom/interface/w_pa_anklet.png code/web/public_php/api/data/ryzom/interface/w_pa_bracelet.png code/web/public_php/api/data/ryzom/interface/w_pa_diadem.png code/web/public_php/api/data/ryzom/interface/w_pa_earring.png code/web/public_php/api/data/ryzom/interface/w_pa_pendant.png code/web/public_php/api/data/ryzom/interface/w_pa_ring.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id0.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id1.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id2.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id3.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id4.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id5.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id6.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id7.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id8.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_id9.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id0.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id1.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id2.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id3.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id4.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id5.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id6.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id7.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id8.png code/web/public_php/api/data/ryzom/interface/w_slot_shortcut_shift_id9.png code/web/public_php/api/data/ryzom/interface/xp_cat_green.png code/web/public_php/api/data/ryzom/items_db.php code/web/public_php/api/data/ryzom/ryShapesPs.php code/web/public_php/api/data/ryzom/sbrick_db.php code/web/public_php/api/index.php code/web/public_php/api/player_auth.php code/web/public_php/api/ryzom_api.php code/web/public_php/api/server/auth.php code/web/public_php/api/server/config.php.default code/web/public_php/api/server/guilds.php code/web/public_php/api/server/hmagic.php code/web/public_php/api/server/item_icon.php code/web/public_php/api/server/scripts/achievement_script/AchWebParser.php code/web/public_php/api/server/scripts/achievement_script/_test/char_346.xml code/web/public_php/api/server/scripts/achievement_script/_test/diff_class.php code/web/public_php/api/server/scripts/achievement_script/_test/diff_test.php code/web/public_php/api/server/scripts/achievement_script/_test/old_char_346.xml code/web/public_php/api/server/scripts/achievement_script/class/Atom_class.php code/web/public_php/api/server/scripts/achievement_script/class/Callback_class.php code/web/public_php/api/server/scripts/achievement_script/class/DataDispatcher_class.php code/web/public_php/api/server/scripts/achievement_script/class/DataSourceHandler_class.php code/web/public_php/api/server/scripts/achievement_script/class/Entity_abstract.php code/web/public_php/api/server/scripts/achievement_script/class/Logfile_class.php code/web/public_php/api/server/scripts/achievement_script/class/SourceDriver_abstract.php code/web/public_php/api/server/scripts/achievement_script/class/Stats_class.php code/web/public_php/api/server/scripts/achievement_script/class/ValueCache_class.php code/web/public_php/api/server/scripts/achievement_script/class/XMLfile_class.php code/web/public_php/api/server/scripts/achievement_script/class/XMLgenerator_class.php code/web/public_php/api/server/scripts/achievement_script/class/XMLnode_class.php code/web/public_php/api/server/scripts/achievement_script/class/mySQL_class.php code/web/public_php/api/server/scripts/achievement_script/conf.php code/web/public_php/api/server/scripts/achievement_script/include/functions_inc.php code/web/public_php/api/server/scripts/achievement_script/launch_parse_new_xml.sh code/web/public_php/api/server/scripts/achievement_script/log/_logDefaultDir_ code/web/public_php/api/server/scripts/achievement_script/log/xml_tmp/_xml_tmp_dir code/web/public_php/api/server/scripts/achievement_script/parse_new_xml.sh code/web/public_php/api/server/scripts/achievement_script/script/_scriptDir code/web/public_php/api/server/scripts/achievement_script/script/item_grade_script.php code/web/public_php/api/server/scripts/achievement_script/script/places/continents.php code/web/public_php/api/server/scripts/achievement_script/script/places/global.php code/web/public_php/api/server/scripts/achievement_script/script/statsdb.php code/web/public_php/api/server/scripts/achievement_script/source/BillingSummary/BillingSummary_class.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/PDRtoXMLdriver_class.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/DeathPenalty_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/FactionPoints_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Fame_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/FriendOf_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Friend_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Friendlist_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Gear_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Item_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/LastLogStats_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/MissionList_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Mission_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/PermanentMod_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Pet_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/PhysCharacs_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/PhysScores_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Position_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/RespawnPoints_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/SkillList_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/SkillPoints_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Skill_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/SpentSkillPoints_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/TPlist_entity.php code/web/public_php/api/server/scripts/achievement_script/source/PDRtoXMLdriver/entity/Title_entity.php code/web/public_php/api/server/scripts/achievement_script/xmldef/debug.php code/web/public_php/api/server/scripts/achievement_script/xmldef/faction.php code/web/public_php/api/server/scripts/achievement_script/xmldef/fame.php code/web/public_php/api/server/scripts/achievement_script/xmldef/inventory.php code/web/public_php/api/server/scripts/achievement_script/xmldef/knowledge.php code/web/public_php/api/server/scripts/achievement_script/xmldef/logs.php code/web/public_php/api/server/scripts/achievement_script/xmldef/missions.php code/web/public_php/api/server/scripts/achievement_script/xmldef/public.php code/web/public_php/api/server/scripts/achievement_script/xmldef/shop.php code/web/public_php/api/server/scripts/achievement_script/xmldef/skills.php code/web/public_php/api/server/scripts/achievement_script/xmldef/social.php code/web/public_php/api/server/scripts/achievement_script/xmldef/stats.php code/web/public_php/api/server/scripts/create_guilds_xml.php code/web/public_php/api/server/scripts/generate_guild_icon.sh code/web/public_php/api/server/scripts/get_guilds_xml.sh code/web/public_php/api/server/time.php code/web/public_php/api/server/user.php code/web/public_php/api/server/utils.php code/web/public_php/api/time.php code/web/public_php/app/app_achievements/_API/ach_progress.php code/web/public_php/app/app_achievements/_API/ach_struct.php code/web/public_php/app/app_achievements/_API/class/mySQL_class.php code/web/public_php/app/app_achievements/_API/conf.php code/web/public_php/app/app_achievements/_doc/Class_scheme.dia code/web/public_php/app/app_achievements/_doc/Class_scheme.png code/web/public_php/app/app_achievements/_doc/ER & Class Schema.pdf code/web/public_php/app/app_achievements/_doc/ER_scheme.dia code/web/public_php/app/app_achievements/_doc/ER_scheme.png code/web/public_php/app/app_achievements/_doc/Ryzom Player Achievements.pdf code/web/public_php/app/app_achievements/_doc/devshot_001.jpg code/web/public_php/app/app_achievements/_doc/devshot_002.jpg code/web/public_php/app/app_achievements/_doc/devshot_003.jpg code/web/public_php/app/app_achievements/_doc/devshot_004.jpg code/web/public_php/app/app_achievements/_doc/structure_app_achievements.sql code/web/public_php/app/app_achievements/class/AVLTree_class.php code/web/public_php/app/app_achievements/class/AchAchievement_class.php code/web/public_php/app/app_achievements/class/AchCategory_class.php code/web/public_php/app/app_achievements/class/AchList_abstract.php code/web/public_php/app/app_achievements/class/AchMenuNode_class.php code/web/public_php/app/app_achievements/class/AchMenu_class.php code/web/public_php/app/app_achievements/class/AchObjective_class.php code/web/public_php/app/app_achievements/class/AchSummary_class.php code/web/public_php/app/app_achievements/class/AchTask_class.php code/web/public_php/app/app_achievements/class/DLL_class.php code/web/public_php/app/app_achievements/class/InDev_trait.php code/web/public_php/app/app_achievements/class/NodeIterator_class.php code/web/public_php/app/app_achievements/class/Node_abstract.php code/web/public_php/app/app_achievements/class/Parentum_abstract.php code/web/public_php/app/app_achievements/class/RyzomUser_class.php code/web/public_php/app/app_achievements/class/Tieable_inter.php code/web/public_php/app/app_achievements/conf.php code/web/public_php/app/app_achievements/favicon.ico code/web/public_php/app/app_achievements/favicon.png code/web/public_php/app/app_achievements/fb/base_facebook.php code/web/public_php/app/app_achievements/fb/facebook.php code/web/public_php/app/app_achievements/fb/fb_ca_chain_bundle.crt code/web/public_php/app/app_achievements/include/ach_render_common.php code/web/public_php/app/app_achievements/include/ach_render_ig.php code/web/public_php/app/app_achievements/include/ach_render_web.php code/web/public_php/app/app_achievements/index.php code/web/public_php/app/app_achievements/lang.php code/web/public_php/app/app_achievements/pic/ach_news.png code/web/public_php/app/app_achievements/pic/bar_done_b.png code/web/public_php/app/app_achievements/pic/bar_done_bg.png code/web/public_php/app/app_achievements/pic/bar_done_bl.png code/web/public_php/app/app_achievements/pic/bar_done_br.png code/web/public_php/app/app_achievements/pic/bar_done_l.png code/web/public_php/app/app_achievements/pic/bar_done_r.png code/web/public_php/app/app_achievements/pic/bar_done_u.png code/web/public_php/app/app_achievements/pic/bar_done_ul.png code/web/public_php/app/app_achievements/pic/bar_done_ur.png code/web/public_php/app/app_achievements/pic/bar_pending_b.png code/web/public_php/app/app_achievements/pic/bar_pending_bl.png code/web/public_php/app/app_achievements/pic/bar_pending_br.png code/web/public_php/app/app_achievements/pic/bar_pending_l.png code/web/public_php/app/app_achievements/pic/bar_pending_r.png code/web/public_php/app/app_achievements/pic/bar_pending_u.png code/web/public_php/app/app_achievements/pic/bar_pending_ul.png code/web/public_php/app/app_achievements/pic/bar_pending_ur.png code/web/public_php/app/app_achievements/pic/check.png code/web/public_php/app/app_achievements/pic/f-connect.png code/web/public_php/app/app_achievements/pic/facebook-logo.png code/web/public_php/app/app_achievements/pic/icon/grey/small/test.png code/web/public_php/app/app_achievements/pic/icon/grey/test.png code/web/public_php/app/app_achievements/pic/icon/small/test.png code/web/public_php/app/app_achievements/pic/icon/test.png code/web/public_php/app/app_achievements/pic/menu/ig_summary.png code/web/public_php/app/app_achievements/pic/menu/ig_test.png code/web/public_php/app/app_achievements/pic/menu/summary.png code/web/public_php/app/app_achievements/pic/menu/test.png code/web/public_php/app/app_achievements/pic/menu_space.png code/web/public_php/app/app_achievements/pic/pending.png code/web/public_php/app/app_achievements/pic/star_done.png code/web/public_php/app/app_achievements/pic/yubo_done.png code/web/public_php/app/app_achievements/pic/yubo_done_small.png code/web/public_php/app/app_achievements/pic/yubo_pending.png code/web/public_php/app/app_achievements_admin/_doc/ADM_scheme.dia code/web/public_php/app/app_achievements_admin/_doc/ADM_scheme.png code/web/public_php/app/app_achievements_admin/class/ADM_inter.php code/web/public_php/app/app_achievements_admin/class/AdmAchievement_class.php code/web/public_php/app/app_achievements_admin/class/AdmAtom_class.php code/web/public_php/app/app_achievements_admin/class/AdmCategory_class.php code/web/public_php/app/app_achievements_admin/class/AdmDispatcher_trait.php code/web/public_php/app/app_achievements_admin/class/AdmMenuNode_class.php code/web/public_php/app/app_achievements_admin/class/AdmMenu_class.php code/web/public_php/app/app_achievements_admin/class/AdmObjective_class.php code/web/public_php/app/app_achievements_admin/class/AdmTask_class.php code/web/public_php/app/app_achievements_admin/class/CSRAchievement_class.php code/web/public_php/app/app_achievements_admin/class/CSRAtom_class.php code/web/public_php/app/app_achievements_admin/class/CSRCategory_class.php code/web/public_php/app/app_achievements_admin/class/CSRDispatcher_trait.php code/web/public_php/app/app_achievements_admin/class/CSRObjective_class.php code/web/public_php/app/app_achievements_admin/class/CSRTask_class.php code/web/public_php/app/app_achievements_admin/class/CSR_inter.php code/web/public_php/app/app_achievements_admin/class/RyzomAdmin_class.php code/web/public_php/app/app_achievements_admin/class/mySQL_class.php code/web/public_php/app/app_achievements_admin/conf.php code/web/public_php/app/app_achievements_admin/favicon.png code/web/public_php/app/app_achievements_admin/include/adm_render_ach.php code/web/public_php/app/app_achievements_admin/include/adm_render_atom.php code/web/public_php/app/app_achievements_admin/include/adm_render_csr.php code/web/public_php/app/app_achievements_admin/include/adm_render_lang.php code/web/public_php/app/app_achievements_admin/include/adm_render_menu.php code/web/public_php/app/app_achievements_admin/include/adm_render_stats.php code/web/public_php/app/app_achievements_admin/index.php code/web/public_php/app/app_achievements_admin/lang.php code/web/public_php/app/app_achievements_admin/pic/b_drop.png code/web/public_php/app/app_achievements_admin/pic/b_insrow.png code/web/public_php/app/app_achievements_admin/pic/b_tblops.png code/web/public_php/app/app_achievements_admin/pic/green.gif code/web/public_php/app/app_achievements_admin/pic/icon_edit.gif code/web/public_php/app/app_achievements_admin/pic/red.gif code/web/public_php/app/app_test/create.sql code/web/public_php/app/app_test/favicon.png code/web/public_php/app/app_test/index.php code/web/public_php/app/app_test/lang.php code/web/public_php/app/config.php.default code/web/public_php/app/index.php code/web/public_php/app/lang.php code/web/public_php/crash_report/config.inc.php code/web/public_php/crash_report/log.inc.php code/web/public_php/crash_report/submit.php code/web/public_php/index.php code/web/public_php/login/client_install.php code/web/public_php/login/config.php code/web/public_php/login/login_translations.php code/web/public_php/login/logs/placeholder code/web/public_php/login/r2_login.php code/web/public_php/ring/edit_session.php code/web/public_php/ring/invite_pioneer.php code/web/public_php/ring/join_shard.php code/web/public_php/ring/session_tools.php code/web/public_php/setup/auth.php code/web/public_php/setup/css/bootstrap-theme.css code/web/public_php/setup/css/bootstrap-theme.css.map code/web/public_php/setup/css/bootstrap-theme.min.css code/web/public_php/setup/css/bootstrap.css code/web/public_php/setup/css/bootstrap.css.map code/web/public_php/setup/css/bootstrap.min.css code/web/public_php/setup/database.php code/web/public_php/setup/fonts/glyphicons-halflings-regular.eot code/web/public_php/setup/fonts/glyphicons-halflings-regular.svg code/web/public_php/setup/fonts/glyphicons-halflings-regular.ttf code/web/public_php/setup/fonts/glyphicons-halflings-regular.woff code/web/public_php/setup/footer.php code/web/public_php/setup/header.php code/web/public_php/setup/img/agplv3-88x31.png code/web/public_php/setup/index.php code/web/public_php/setup/install.php code/web/public_php/setup/js/bootstrap.js code/web/public_php/setup/js/bootstrap.min.js code/web/public_php/setup/template.htm code/web/public_php/setup/upgrade.php code/web/public_php/setup/version.php code/web/public_php/tools/domain_info.php code/web/public_php/tools/nel_message.php code/web/public_php/tools/validate_cookie.php code/web/public_php/webtt/.gitignore code/web/public_php/webtt/.htaccess code/web/public_php/webtt/CakePHP_README code/web/public_php/webtt/app/.htaccess code/web/public_php/webtt/app/config/acl.ini.php code/web/public_php/webtt/app/config/bootstrap.php code/web/public_php/webtt/app/config/core.php code/web/public_php/webtt/app/config/database.php code/web/public_php/webtt/app/config/database.php.default code/web/public_php/webtt/app/config/routes.php code/web/public_php/webtt/app/config/schema/db_acl.php code/web/public_php/webtt/app/config/schema/i18n.php code/web/public_php/webtt/app/config/schema/sessions.php code/web/public_php/webtt/app/controllers/app_controller.php code/web/public_php/webtt/app/controllers/comments_controller.php code/web/public_php/webtt/app/controllers/components/empty code/web/public_php/webtt/app/controllers/components/path_resolver.php code/web/public_php/webtt/app/controllers/file_identifiers_controller.php code/web/public_php/webtt/app/controllers/identifier_columns_controller.php code/web/public_php/webtt/app/controllers/identifiers_controller.php code/web/public_php/webtt/app/controllers/imported_translation_files_controller.php code/web/public_php/webtt/app/controllers/languages_controller.php code/web/public_php/webtt/app/controllers/pages_controller.php code/web/public_php/webtt/app/controllers/raw_files_controller.php code/web/public_php/webtt/app/controllers/translation_files_controller.php code/web/public_php/webtt/app/controllers/translations_controller.php code/web/public_php/webtt/app/controllers/users_controller.php code/web/public_php/webtt/app/controllers/votes_controller.php code/web/public_php/webtt/app/index.php code/web/public_php/webtt/app/libs/empty code/web/public_php/webtt/app/locale/eng/LC_MESSAGES/empty code/web/public_php/webtt/app/models/app_model.php code/web/public_php/webtt/app/models/behaviors/empty code/web/public_php/webtt/app/models/behaviors/null.php code/web/public_php/webtt/app/models/comment.php code/web/public_php/webtt/app/models/datasources/empty code/web/public_php/webtt/app/models/datasources/raw_files_source.php code/web/public_php/webtt/app/models/file_identifier.php code/web/public_php/webtt/app/models/identifier.php code/web/public_php/webtt/app/models/identifier_column.php code/web/public_php/webtt/app/models/imported_translation_file.php code/web/public_php/webtt/app/models/language.php code/web/public_php/webtt/app/models/raw_file.php code/web/public_php/webtt/app/models/translation.php code/web/public_php/webtt/app/models/translation_file.php code/web/public_php/webtt/app/models/user.php code/web/public_php/webtt/app/models/vote.php code/web/public_php/webtt/app/plugins/empty code/web/public_php/webtt/app/tests/cases/behaviors/empty code/web/public_php/webtt/app/tests/cases/components/empty code/web/public_php/webtt/app/tests/cases/controllers/empty code/web/public_php/webtt/app/tests/cases/helpers/empty code/web/public_php/webtt/app/tests/cases/models/empty code/web/public_php/webtt/app/tests/fixtures/empty code/web/public_php/webtt/app/tests/groups/empty code/web/public_php/webtt/app/tmp/cache/models/empty code/web/public_php/webtt/app/tmp/cache/persistent/empty code/web/public_php/webtt/app/tmp/cache/views/empty code/web/public_php/webtt/app/tmp/logs/empty code/web/public_php/webtt/app/tmp/sessions/empty code/web/public_php/webtt/app/tmp/tests/empty code/web/public_php/webtt/app/vendors/PhraseParser.php code/web/public_php/webtt/app/vendors/SheetParser.php code/web/public_php/webtt/app/vendors/StringParser.php code/web/public_php/webtt/app/vendors/shells/tasks/empty code/web/public_php/webtt/app/vendors/shells/templates/960grid/views/form.ctp code/web/public_php/webtt/app/vendors/shells/templates/960grid/views/home.ctp code/web/public_php/webtt/app/vendors/shells/templates/960grid/views/index.ctp code/web/public_php/webtt/app/vendors/shells/templates/960grid/views/view.ctp code/web/public_php/webtt/app/vendors/shells/templates/empty code/web/public_php/webtt/app/vendors/shells/templates/webtt/views/form.ctp code/web/public_php/webtt/app/vendors/shells/templates/webtt/views/home.ctp code/web/public_php/webtt/app/vendors/shells/templates/webtt/views/index.ctp code/web/public_php/webtt/app/vendors/shells/templates/webtt/views/view.ctp code/web/public_php/webtt/app/views/comments/add.ctp code/web/public_php/webtt/app/views/comments/admin_add.ctp code/web/public_php/webtt/app/views/comments/admin_edit.ctp code/web/public_php/webtt/app/views/comments/admin_index.ctp code/web/public_php/webtt/app/views/comments/admin_view.ctp code/web/public_php/webtt/app/views/comments/edit.ctp code/web/public_php/webtt/app/views/comments/index.ctp code/web/public_php/webtt/app/views/comments/view.ctp code/web/public_php/webtt/app/views/elements/email/html/empty code/web/public_php/webtt/app/views/elements/email/html/registration.ctp code/web/public_php/webtt/app/views/elements/email/text/empty code/web/public_php/webtt/app/views/elements/email/text/registration.ctp code/web/public_php/webtt/app/views/elements/empty code/web/public_php/webtt/app/views/elements/neighbours.ctp code/web/public_php/webtt/app/views/errors/empty code/web/public_php/webtt/app/views/file_identifiers/add.ctp code/web/public_php/webtt/app/views/file_identifiers/admin_add.ctp code/web/public_php/webtt/app/views/file_identifiers/admin_edit.ctp code/web/public_php/webtt/app/views/file_identifiers/admin_index.ctp code/web/public_php/webtt/app/views/file_identifiers/admin_view.ctp code/web/public_php/webtt/app/views/file_identifiers/edit.ctp code/web/public_php/webtt/app/views/file_identifiers/index.ctp code/web/public_php/webtt/app/views/file_identifiers/view.ctp code/web/public_php/webtt/app/views/helpers/empty code/web/public_php/webtt/app/views/identifier_columns/admin_index.ctp code/web/public_php/webtt/app/views/identifier_columns/admin_view.ctp code/web/public_php/webtt/app/views/identifier_columns/index.ctp code/web/public_php/webtt/app/views/identifier_columns/view.ctp code/web/public_php/webtt/app/views/identifiers/add.ctp code/web/public_php/webtt/app/views/identifiers/admin_add.ctp code/web/public_php/webtt/app/views/identifiers/admin_edit.ctp code/web/public_php/webtt/app/views/identifiers/admin_index.ctp code/web/public_php/webtt/app/views/identifiers/admin_view.ctp code/web/public_php/webtt/app/views/identifiers/edit.ctp code/web/public_php/webtt/app/views/identifiers/index.ctp code/web/public_php/webtt/app/views/identifiers/view.ctp code/web/public_php/webtt/app/views/imported_translation_files/admin_add.ctp code/web/public_php/webtt/app/views/imported_translation_files/admin_edit.ctp code/web/public_php/webtt/app/views/imported_translation_files/admin_index.ctp code/web/public_php/webtt/app/views/imported_translation_files/admin_view.ctp code/web/public_php/webtt/app/views/imported_translation_files/index.ctp code/web/public_php/webtt/app/views/imported_translation_files/view.ctp code/web/public_php/webtt/app/views/languages/add.ctp code/web/public_php/webtt/app/views/languages/admin_add.ctp code/web/public_php/webtt/app/views/languages/admin_edit.ctp code/web/public_php/webtt/app/views/languages/admin_index.ctp code/web/public_php/webtt/app/views/languages/admin_view.ctp code/web/public_php/webtt/app/views/languages/edit.ctp code/web/public_php/webtt/app/views/languages/index.ctp code/web/public_php/webtt/app/views/languages/view.ctp code/web/public_php/webtt/app/views/layouts/admin.ctp code/web/public_php/webtt/app/views/layouts/default.ctp code/web/public_php/webtt/app/views/layouts/default_debug.ctp code/web/public_php/webtt/app/views/layouts/email/html/default.ctp code/web/public_php/webtt/app/views/layouts/email/text/default.ctp code/web/public_php/webtt/app/views/layouts/js/empty code/web/public_php/webtt/app/views/layouts/new.ctp code/web/public_php/webtt/app/views/layouts/rss/empty code/web/public_php/webtt/app/views/layouts/xml/empty code/web/public_php/webtt/app/views/pages/admin/home.ctp code/web/public_php/webtt/app/views/pages/home.ctp code/web/public_php/webtt/app/views/raw_files/admin_index.ctp code/web/public_php/webtt/app/views/raw_files/admin_view.ctp code/web/public_php/webtt/app/views/raw_files/index.ctp code/web/public_php/webtt/app/views/raw_files/listdir.ctp code/web/public_php/webtt/app/views/raw_files/view.ctp code/web/public_php/webtt/app/views/scaffolds/edit.ctp code/web/public_php/webtt/app/views/scaffolds/empty code/web/public_php/webtt/app/views/scaffolds/index.ctp code/web/public_php/webtt/app/views/scaffolds/view.ctp code/web/public_php/webtt/app/views/translation_files/admin_index.ctp code/web/public_php/webtt/app/views/translation_files/admin_view.ctp code/web/public_php/webtt/app/views/translation_files/index.ctp code/web/public_php/webtt/app/views/translation_files/view.ctp code/web/public_php/webtt/app/views/translations/add.ctp code/web/public_php/webtt/app/views/translations/admin_add.ctp code/web/public_php/webtt/app/views/translations/admin_edit.ctp code/web/public_php/webtt/app/views/translations/admin_index.ctp code/web/public_php/webtt/app/views/translations/admin_view.ctp code/web/public_php/webtt/app/views/translations/edit.ctp code/web/public_php/webtt/app/views/translations/index.ctp code/web/public_php/webtt/app/views/translations/view.ctp code/web/public_php/webtt/app/views/users/admin_add.ctp code/web/public_php/webtt/app/views/users/admin_edit.ctp code/web/public_php/webtt/app/views/users/admin_index.ctp code/web/public_php/webtt/app/views/users/admin_view.ctp code/web/public_php/webtt/app/views/users/index.ctp code/web/public_php/webtt/app/views/users/login.ctp code/web/public_php/webtt/app/views/users/register.ctp code/web/public_php/webtt/app/views/users/view.ctp code/web/public_php/webtt/app/views/votes/add.ctp code/web/public_php/webtt/app/views/votes/admin_add.ctp code/web/public_php/webtt/app/views/votes/admin_edit.ctp code/web/public_php/webtt/app/views/votes/admin_index.ctp code/web/public_php/webtt/app/views/votes/admin_view.ctp code/web/public_php/webtt/app/views/votes/edit.ctp code/web/public_php/webtt/app/views/votes/index.ctp code/web/public_php/webtt/app/views/votes/view.ctp code/web/public_php/webtt/app/webroot/.htaccess code/web/public_php/webtt/app/webroot/css.php code/web/public_php/webtt/app/webroot/css/960.css code/web/public_php/webtt/app/webroot/css/cake.generic.css code/web/public_php/webtt/app/webroot/css/grid.css code/web/public_php/webtt/app/webroot/css/ie.css code/web/public_php/webtt/app/webroot/css/ie6.css code/web/public_php/webtt/app/webroot/css/labelWidth.css code/web/public_php/webtt/app/webroot/css/layout.css code/web/public_php/webtt/app/webroot/css/nav.css code/web/public_php/webtt/app/webroot/css/reset.css code/web/public_php/webtt/app/webroot/css/text.css code/web/public_php/webtt/app/webroot/favicon.ico code/web/public_php/webtt/app/webroot/files/empty code/web/public_php/webtt/app/webroot/img/cake.icon.png code/web/public_php/webtt/app/webroot/img/cake.power.gif code/web/public_php/webtt/app/webroot/img/switch_minus.gif code/web/public_php/webtt/app/webroot/img/switch_plus.gif code/web/public_php/webtt/app/webroot/index.php code/web/public_php/webtt/app/webroot/js/empty code/web/public_php/webtt/app/webroot/js/jquery-1.3.2.min.js code/web/public_php/webtt/app/webroot/js/jquery-fluid16.js code/web/public_php/webtt/app/webroot/js/jquery-ui.js code/web/public_php/webtt/app/webroot/test.php code/web/public_php/webtt/app/webroot/testfiles/raw_testfile.csv code/web/public_php/webtt/app/webroot/testfiles/testdir/ugatestindir.csv code/web/public_php/webtt/app/webroot/testfiles/ugabla.csv code/web/public_php/webtt/cake/LICENSE.txt code/web/public_php/webtt/cake/VERSION.txt code/web/public_php/webtt/cake/basics.php code/web/public_php/webtt/cake/bootstrap.php code/web/public_php/webtt/cake/config/config.php code/web/public_php/webtt/cake/config/paths.php code/web/public_php/webtt/cake/config/unicode/casefolding/0080_00ff.php code/web/public_php/webtt/cake/config/unicode/casefolding/0100_017f.php code/web/public_php/webtt/cake/config/unicode/casefolding/0180_024F.php code/web/public_php/webtt/cake/config/unicode/casefolding/0250_02af.php code/web/public_php/webtt/cake/config/unicode/casefolding/0370_03ff.php code/web/public_php/webtt/cake/config/unicode/casefolding/0400_04ff.php code/web/public_php/webtt/cake/config/unicode/casefolding/0500_052f.php code/web/public_php/webtt/cake/config/unicode/casefolding/0530_058f.php code/web/public_php/webtt/cake/config/unicode/casefolding/1e00_1eff.php code/web/public_php/webtt/cake/config/unicode/casefolding/1f00_1fff.php code/web/public_php/webtt/cake/config/unicode/casefolding/2100_214f.php code/web/public_php/webtt/cake/config/unicode/casefolding/2150_218f.php code/web/public_php/webtt/cake/config/unicode/casefolding/2460_24ff.php code/web/public_php/webtt/cake/config/unicode/casefolding/2c00_2c5f.php code/web/public_php/webtt/cake/config/unicode/casefolding/2c60_2c7f.php code/web/public_php/webtt/cake/config/unicode/casefolding/2c80_2cff.php code/web/public_php/webtt/cake/config/unicode/casefolding/ff00_ffef.php code/web/public_php/webtt/cake/console/cake code/web/public_php/webtt/cake/console/cake.bat code/web/public_php/webtt/cake/console/cake.php code/web/public_php/webtt/cake/console/error.php code/web/public_php/webtt/cake/console/libs/acl.php code/web/public_php/webtt/cake/console/libs/api.php code/web/public_php/webtt/cake/console/libs/bake.php code/web/public_php/webtt/cake/console/libs/console.php code/web/public_php/webtt/cake/console/libs/i18n.php code/web/public_php/webtt/cake/console/libs/schema.php code/web/public_php/webtt/cake/console/libs/shell.php code/web/public_php/webtt/cake/console/libs/tasks/bake.php code/web/public_php/webtt/cake/console/libs/tasks/controller.php code/web/public_php/webtt/cake/console/libs/tasks/db_config.php code/web/public_php/webtt/cake/console/libs/tasks/extract.php code/web/public_php/webtt/cake/console/libs/tasks/fixture.php code/web/public_php/webtt/cake/console/libs/tasks/model.php code/web/public_php/webtt/cake/console/libs/tasks/plugin.php code/web/public_php/webtt/cake/console/libs/tasks/project.php code/web/public_php/webtt/cake/console/libs/tasks/template.php code/web/public_php/webtt/cake/console/libs/tasks/test.php code/web/public_php/webtt/cake/console/libs/tasks/view.php code/web/public_php/webtt/cake/console/libs/testsuite.php code/web/public_php/webtt/cake/console/templates/default/actions/controller_actions.ctp code/web/public_php/webtt/cake/console/templates/default/classes/controller.ctp code/web/public_php/webtt/cake/console/templates/default/classes/fixture.ctp code/web/public_php/webtt/cake/console/templates/default/classes/model.ctp code/web/public_php/webtt/cake/console/templates/default/classes/test.ctp code/web/public_php/webtt/cake/console/templates/default/views/form.ctp code/web/public_php/webtt/cake/console/templates/default/views/home.ctp code/web/public_php/webtt/cake/console/templates/default/views/index.ctp code/web/public_php/webtt/cake/console/templates/default/views/view.ctp code/web/public_php/webtt/cake/console/templates/skel/.htaccess code/web/public_php/webtt/cake/console/templates/skel/app_controller.php code/web/public_php/webtt/cake/console/templates/skel/app_helper.php code/web/public_php/webtt/cake/console/templates/skel/app_model.php code/web/public_php/webtt/cake/console/templates/skel/config/acl.ini.php code/web/public_php/webtt/cake/console/templates/skel/config/bootstrap.php code/web/public_php/webtt/cake/console/templates/skel/config/core.php code/web/public_php/webtt/cake/console/templates/skel/config/database.php.default code/web/public_php/webtt/cake/console/templates/skel/config/routes.php code/web/public_php/webtt/cake/console/templates/skel/config/schema/db_acl.php code/web/public_php/webtt/cake/console/templates/skel/config/schema/db_acl.sql code/web/public_php/webtt/cake/console/templates/skel/config/schema/i18n.php code/web/public_php/webtt/cake/console/templates/skel/config/schema/i18n.sql code/web/public_php/webtt/cake/console/templates/skel/config/schema/sessions.php code/web/public_php/webtt/cake/console/templates/skel/config/schema/sessions.sql code/web/public_php/webtt/cake/console/templates/skel/controllers/components/empty code/web/public_php/webtt/cake/console/templates/skel/controllers/pages_controller.php code/web/public_php/webtt/cake/console/templates/skel/index.php code/web/public_php/webtt/cake/console/templates/skel/libs/empty code/web/public_php/webtt/cake/console/templates/skel/locale/eng/LC_MESSAGES/empty code/web/public_php/webtt/cake/console/templates/skel/models/behaviors/empty code/web/public_php/webtt/cake/console/templates/skel/models/datasources/empty code/web/public_php/webtt/cake/console/templates/skel/plugins/empty code/web/public_php/webtt/cake/console/templates/skel/tests/cases/behaviors/empty code/web/public_php/webtt/cake/console/templates/skel/tests/cases/components/empty code/web/public_php/webtt/cake/console/templates/skel/tests/cases/controllers/empty code/web/public_php/webtt/cake/console/templates/skel/tests/cases/datasources/empty code/web/public_php/webtt/cake/console/templates/skel/tests/cases/helpers/empty code/web/public_php/webtt/cake/console/templates/skel/tests/cases/models/empty code/web/public_php/webtt/cake/console/templates/skel/tests/cases/shells/empty code/web/public_php/webtt/cake/console/templates/skel/tests/fixtures/empty code/web/public_php/webtt/cake/console/templates/skel/tests/groups/empty code/web/public_php/webtt/cake/console/templates/skel/tmp/cache/models/empty code/web/public_php/webtt/cake/console/templates/skel/tmp/cache/persistent/empty code/web/public_php/webtt/cake/console/templates/skel/tmp/cache/views/empty code/web/public_php/webtt/cake/console/templates/skel/tmp/logs/empty code/web/public_php/webtt/cake/console/templates/skel/tmp/sessions/empty code/web/public_php/webtt/cake/console/templates/skel/tmp/tests/empty code/web/public_php/webtt/cake/console/templates/skel/vendors/shells/tasks/empty code/web/public_php/webtt/cake/console/templates/skel/views/elements/email/html/default.ctp code/web/public_php/webtt/cake/console/templates/skel/views/elements/email/text/default.ctp code/web/public_php/webtt/cake/console/templates/skel/views/elements/empty code/web/public_php/webtt/cake/console/templates/skel/views/errors/empty code/web/public_php/webtt/cake/console/templates/skel/views/helpers/empty code/web/public_php/webtt/cake/console/templates/skel/views/layouts/ajax.ctp code/web/public_php/webtt/cake/console/templates/skel/views/layouts/default.ctp code/web/public_php/webtt/cake/console/templates/skel/views/layouts/email/html/default.ctp code/web/public_php/webtt/cake/console/templates/skel/views/layouts/email/text/default.ctp code/web/public_php/webtt/cake/console/templates/skel/views/layouts/flash.ctp code/web/public_php/webtt/cake/console/templates/skel/views/layouts/js/default.ctp code/web/public_php/webtt/cake/console/templates/skel/views/layouts/rss/default.ctp code/web/public_php/webtt/cake/console/templates/skel/views/layouts/xml/default.ctp code/web/public_php/webtt/cake/console/templates/skel/views/pages/empty code/web/public_php/webtt/cake/console/templates/skel/views/scaffolds/empty code/web/public_php/webtt/cake/console/templates/skel/webroot/.htaccess code/web/public_php/webtt/cake/console/templates/skel/webroot/css.php code/web/public_php/webtt/cake/console/templates/skel/webroot/css/cake.generic.css code/web/public_php/webtt/cake/console/templates/skel/webroot/favicon.ico code/web/public_php/webtt/cake/console/templates/skel/webroot/img/cake.icon.png code/web/public_php/webtt/cake/console/templates/skel/webroot/img/cake.power.gif code/web/public_php/webtt/cake/console/templates/skel/webroot/index.php code/web/public_php/webtt/cake/console/templates/skel/webroot/js/empty code/web/public_php/webtt/cake/console/templates/skel/webroot/test.php code/web/public_php/webtt/cake/dispatcher.php code/web/public_php/webtt/cake/libs/cache.php code/web/public_php/webtt/cake/libs/cache/apc.php code/web/public_php/webtt/cake/libs/cache/file.php code/web/public_php/webtt/cake/libs/cache/memcache.php code/web/public_php/webtt/cake/libs/cache/xcache.php code/web/public_php/webtt/cake/libs/cake_log.php code/web/public_php/webtt/cake/libs/cake_session.php code/web/public_php/webtt/cake/libs/cake_socket.php code/web/public_php/webtt/cake/libs/class_registry.php code/web/public_php/webtt/cake/libs/configure.php code/web/public_php/webtt/cake/libs/controller/app_controller.php code/web/public_php/webtt/cake/libs/controller/component.php code/web/public_php/webtt/cake/libs/controller/components/acl.php code/web/public_php/webtt/cake/libs/controller/components/auth.php code/web/public_php/webtt/cake/libs/controller/components/cookie.php code/web/public_php/webtt/cake/libs/controller/components/email.php code/web/public_php/webtt/cake/libs/controller/components/request_handler.php code/web/public_php/webtt/cake/libs/controller/components/security.php code/web/public_php/webtt/cake/libs/controller/components/session.php code/web/public_php/webtt/cake/libs/controller/controller.php code/web/public_php/webtt/cake/libs/controller/pages_controller.php code/web/public_php/webtt/cake/libs/controller/scaffold.php code/web/public_php/webtt/cake/libs/debugger.php code/web/public_php/webtt/cake/libs/error.php code/web/public_php/webtt/cake/libs/file.php code/web/public_php/webtt/cake/libs/folder.php code/web/public_php/webtt/cake/libs/http_socket.php code/web/public_php/webtt/cake/libs/i18n.php code/web/public_php/webtt/cake/libs/inflector.php code/web/public_php/webtt/cake/libs/l10n.php code/web/public_php/webtt/cake/libs/log/file_log.php code/web/public_php/webtt/cake/libs/magic_db.php code/web/public_php/webtt/cake/libs/model/app_model.php code/web/public_php/webtt/cake/libs/model/behaviors/acl.php code/web/public_php/webtt/cake/libs/model/behaviors/containable.php code/web/public_php/webtt/cake/libs/model/behaviors/translate.php code/web/public_php/webtt/cake/libs/model/behaviors/tree.php code/web/public_php/webtt/cake/libs/model/cake_schema.php code/web/public_php/webtt/cake/libs/model/connection_manager.php code/web/public_php/webtt/cake/libs/model/datasources/datasource.php code/web/public_php/webtt/cake/libs/model/datasources/dbo/dbo_mssql.php code/web/public_php/webtt/cake/libs/model/datasources/dbo/dbo_mysql.php code/web/public_php/webtt/cake/libs/model/datasources/dbo/dbo_mysqli.php code/web/public_php/webtt/cake/libs/model/datasources/dbo/dbo_oracle.php code/web/public_php/webtt/cake/libs/model/datasources/dbo/dbo_postgres.php code/web/public_php/webtt/cake/libs/model/datasources/dbo/dbo_sqlite.php code/web/public_php/webtt/cake/libs/model/datasources/dbo_source.php code/web/public_php/webtt/cake/libs/model/db_acl.php code/web/public_php/webtt/cake/libs/model/model.php code/web/public_php/webtt/cake/libs/model/model_behavior.php code/web/public_php/webtt/cake/libs/multibyte.php code/web/public_php/webtt/cake/libs/object.php code/web/public_php/webtt/cake/libs/overloadable.php code/web/public_php/webtt/cake/libs/overloadable_php4.php code/web/public_php/webtt/cake/libs/overloadable_php5.php code/web/public_php/webtt/cake/libs/router.php code/web/public_php/webtt/cake/libs/sanitize.php code/web/public_php/webtt/cake/libs/security.php code/web/public_php/webtt/cake/libs/set.php code/web/public_php/webtt/cake/libs/string.php code/web/public_php/webtt/cake/libs/validation.php code/web/public_php/webtt/cake/libs/view/elements/email/html/default.ctp code/web/public_php/webtt/cake/libs/view/elements/email/text/default.ctp code/web/public_php/webtt/cake/libs/view/elements/sql_dump.ctp code/web/public_php/webtt/cake/libs/view/errors/error404.ctp code/web/public_php/webtt/cake/libs/view/errors/error500.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_action.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_behavior_class.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_behavior_file.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_component_class.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_component_file.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_connection.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_controller.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_helper_class.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_helper_file.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_layout.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_model.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_scaffolddb.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_table.ctp code/web/public_php/webtt/cake/libs/view/errors/missing_view.ctp code/web/public_php/webtt/cake/libs/view/errors/private_action.ctp code/web/public_php/webtt/cake/libs/view/errors/scaffold_error.ctp code/web/public_php/webtt/cake/libs/view/helper.php code/web/public_php/webtt/cake/libs/view/helpers/ajax.php code/web/public_php/webtt/cake/libs/view/helpers/app_helper.php code/web/public_php/webtt/cake/libs/view/helpers/cache.php code/web/public_php/webtt/cake/libs/view/helpers/form.php code/web/public_php/webtt/cake/libs/view/helpers/html.php code/web/public_php/webtt/cake/libs/view/helpers/javascript.php code/web/public_php/webtt/cake/libs/view/helpers/jquery_engine.php code/web/public_php/webtt/cake/libs/view/helpers/js.php code/web/public_php/webtt/cake/libs/view/helpers/mootools_engine.php code/web/public_php/webtt/cake/libs/view/helpers/number.php code/web/public_php/webtt/cake/libs/view/helpers/paginator.php code/web/public_php/webtt/cake/libs/view/helpers/prototype_engine.php code/web/public_php/webtt/cake/libs/view/helpers/rss.php code/web/public_php/webtt/cake/libs/view/helpers/session.php code/web/public_php/webtt/cake/libs/view/helpers/text.php code/web/public_php/webtt/cake/libs/view/helpers/time.php code/web/public_php/webtt/cake/libs/view/helpers/xml.php code/web/public_php/webtt/cake/libs/view/layouts/ajax.ctp code/web/public_php/webtt/cake/libs/view/layouts/default.ctp code/web/public_php/webtt/cake/libs/view/layouts/email/html/default.ctp code/web/public_php/webtt/cake/libs/view/layouts/email/text/default.ctp code/web/public_php/webtt/cake/libs/view/layouts/flash.ctp code/web/public_php/webtt/cake/libs/view/layouts/js/default.ctp code/web/public_php/webtt/cake/libs/view/layouts/rss/default.ctp code/web/public_php/webtt/cake/libs/view/layouts/xml/default.ctp code/web/public_php/webtt/cake/libs/view/media.php code/web/public_php/webtt/cake/libs/view/pages/home.ctp code/web/public_php/webtt/cake/libs/view/scaffolds/edit.ctp code/web/public_php/webtt/cake/libs/view/scaffolds/index.ctp code/web/public_php/webtt/cake/libs/view/scaffolds/view.ctp code/web/public_php/webtt/cake/libs/view/theme.php code/web/public_php/webtt/cake/libs/view/view.php code/web/public_php/webtt/cake/libs/xml.php code/web/public_php/webtt/cake/tests/cases/basics.test.php code/web/public_php/webtt/cake/tests/cases/console/cake.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/acl.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/api.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/bake.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/schema.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/shell.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/controller.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/db_config.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/extract.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/fixture.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/model.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/plugin.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/project.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/template.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/test.test.php code/web/public_php/webtt/cake/tests/cases/console/libs/tasks/view.test.php code/web/public_php/webtt/cake/tests/cases/dispatcher.test.php code/web/public_php/webtt/cake/tests/cases/libs/cache.test.php code/web/public_php/webtt/cake/tests/cases/libs/cache/apc.test.php code/web/public_php/webtt/cake/tests/cases/libs/cache/file.test.php code/web/public_php/webtt/cake/tests/cases/libs/cache/memcache.test.php code/web/public_php/webtt/cake/tests/cases/libs/cache/xcache.test.php code/web/public_php/webtt/cake/tests/cases/libs/cake_log.test.php code/web/public_php/webtt/cake/tests/cases/libs/cake_session.test.php code/web/public_php/webtt/cake/tests/cases/libs/cake_socket.test.php code/web/public_php/webtt/cake/tests/cases/libs/cake_test_case.test.php code/web/public_php/webtt/cake/tests/cases/libs/cake_test_fixture.test.php code/web/public_php/webtt/cake/tests/cases/libs/class_registry.test.php code/web/public_php/webtt/cake/tests/cases/libs/code_coverage_manager.test.php code/web/public_php/webtt/cake/tests/cases/libs/configure.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/component.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/components/acl.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/components/auth.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/components/cookie.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/components/email.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/components/request_handler.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/components/security.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/components/session.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/controller.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/controller_merge_vars.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/pages_controller.test.php code/web/public_php/webtt/cake/tests/cases/libs/controller/scaffold.test.php code/web/public_php/webtt/cake/tests/cases/libs/debugger.test.php code/web/public_php/webtt/cake/tests/cases/libs/error.test.php code/web/public_php/webtt/cake/tests/cases/libs/file.test.php code/web/public_php/webtt/cake/tests/cases/libs/folder.test.php code/web/public_php/webtt/cake/tests/cases/libs/http_socket.test.php code/web/public_php/webtt/cake/tests/cases/libs/i18n.test.php code/web/public_php/webtt/cake/tests/cases/libs/inflector.test.php code/web/public_php/webtt/cake/tests/cases/libs/l10n.test.php code/web/public_php/webtt/cake/tests/cases/libs/log/file_log.test.php code/web/public_php/webtt/cake/tests/cases/libs/magic_db.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/behaviors/acl.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/behaviors/containable.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/behaviors/translate.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/behaviors/tree.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/cake_schema.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/connection_manager.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/datasources/dbo/dbo_mssql.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/datasources/dbo/dbo_mysql.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/datasources/dbo/dbo_mysqli.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/datasources/dbo/dbo_oracle.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/datasources/dbo/dbo_postgres.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/datasources/dbo/dbo_sqlite.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/datasources/dbo_source.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/db_acl.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/model.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/model_behavior.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/model_delete.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/model_integration.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/model_read.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/model_validation.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/model_write.test.php code/web/public_php/webtt/cake/tests/cases/libs/model/models.php code/web/public_php/webtt/cake/tests/cases/libs/multibyte.test.php code/web/public_php/webtt/cake/tests/cases/libs/object.test.php code/web/public_php/webtt/cake/tests/cases/libs/overloadable.test.php code/web/public_php/webtt/cake/tests/cases/libs/router.test.php code/web/public_php/webtt/cake/tests/cases/libs/sanitize.test.php code/web/public_php/webtt/cake/tests/cases/libs/security.test.php code/web/public_php/webtt/cake/tests/cases/libs/set.test.php code/web/public_php/webtt/cake/tests/cases/libs/string.test.php code/web/public_php/webtt/cake/tests/cases/libs/test_manager.test.php code/web/public_php/webtt/cake/tests/cases/libs/validation.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helper.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/ajax.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/cache.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/form.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/html.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/javascript.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/jquery_engine.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/js.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/mootools_engine.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/number.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/paginator.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/prototype_engine.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/rss.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/session.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/text.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/time.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/helpers/xml.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/media.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/theme.test.php code/web/public_php/webtt/cake/tests/cases/libs/view/view.test.php code/web/public_php/webtt/cake/tests/cases/libs/xml.test.php code/web/public_php/webtt/cake/tests/fixtures/account_fixture.php code/web/public_php/webtt/cake/tests/fixtures/aco_action_fixture.php code/web/public_php/webtt/cake/tests/fixtures/aco_fixture.php code/web/public_php/webtt/cake/tests/fixtures/aco_two_fixture.php code/web/public_php/webtt/cake/tests/fixtures/ad_fixture.php code/web/public_php/webtt/cake/tests/fixtures/advertisement_fixture.php code/web/public_php/webtt/cake/tests/fixtures/after_tree_fixture.php code/web/public_php/webtt/cake/tests/fixtures/another_article_fixture.php code/web/public_php/webtt/cake/tests/fixtures/apple_fixture.php code/web/public_php/webtt/cake/tests/fixtures/aro_fixture.php code/web/public_php/webtt/cake/tests/fixtures/aro_two_fixture.php code/web/public_php/webtt/cake/tests/fixtures/aros_aco_fixture.php code/web/public_php/webtt/cake/tests/fixtures/aros_aco_two_fixture.php code/web/public_php/webtt/cake/tests/fixtures/article_featured_fixture.php code/web/public_php/webtt/cake/tests/fixtures/article_featureds_tags_fixture.php code/web/public_php/webtt/cake/tests/fixtures/article_fixture.php code/web/public_php/webtt/cake/tests/fixtures/articles_tag_fixture.php code/web/public_php/webtt/cake/tests/fixtures/attachment_fixture.php code/web/public_php/webtt/cake/tests/fixtures/auth_user_custom_field_fixture.php code/web/public_php/webtt/cake/tests/fixtures/auth_user_fixture.php code/web/public_php/webtt/cake/tests/fixtures/author_fixture.php code/web/public_php/webtt/cake/tests/fixtures/basket_fixture.php code/web/public_php/webtt/cake/tests/fixtures/bid_fixture.php code/web/public_php/webtt/cake/tests/fixtures/binary_test_fixture.php code/web/public_php/webtt/cake/tests/fixtures/book_fixture.php code/web/public_php/webtt/cake/tests/fixtures/cache_test_model_fixture.php code/web/public_php/webtt/cake/tests/fixtures/callback_fixture.php code/web/public_php/webtt/cake/tests/fixtures/campaign_fixture.php code/web/public_php/webtt/cake/tests/fixtures/category_fixture.php code/web/public_php/webtt/cake/tests/fixtures/category_thread_fixture.php code/web/public_php/webtt/cake/tests/fixtures/cd_fixture.php code/web/public_php/webtt/cake/tests/fixtures/comment_fixture.php code/web/public_php/webtt/cake/tests/fixtures/content_account_fixture.php code/web/public_php/webtt/cake/tests/fixtures/content_fixture.php code/web/public_php/webtt/cake/tests/fixtures/counter_cache_post_fixture.php code/web/public_php/webtt/cake/tests/fixtures/counter_cache_post_nonstandard_primary_key_fixture.php code/web/public_php/webtt/cake/tests/fixtures/counter_cache_user_fixture.php code/web/public_php/webtt/cake/tests/fixtures/counter_cache_user_nonstandard_primary_key_fixture.php code/web/public_php/webtt/cake/tests/fixtures/data_test_fixture.php code/web/public_php/webtt/cake/tests/fixtures/datatype_fixture.php code/web/public_php/webtt/cake/tests/fixtures/dependency_fixture.php code/web/public_php/webtt/cake/tests/fixtures/device_fixture.php code/web/public_php/webtt/cake/tests/fixtures/device_type_category_fixture.php code/web/public_php/webtt/cake/tests/fixtures/device_type_fixture.php code/web/public_php/webtt/cake/tests/fixtures/document_directory_fixture.php code/web/public_php/webtt/cake/tests/fixtures/document_fixture.php code/web/public_php/webtt/cake/tests/fixtures/exterior_type_category_fixture.php code/web/public_php/webtt/cake/tests/fixtures/feature_set_fixture.php code/web/public_php/webtt/cake/tests/fixtures/featured_fixture.php code/web/public_php/webtt/cake/tests/fixtures/film_file_fixture.php code/web/public_php/webtt/cake/tests/fixtures/flag_tree_fixture.php code/web/public_php/webtt/cake/tests/fixtures/fruit_fixture.php code/web/public_php/webtt/cake/tests/fixtures/fruits_uuid_tag_fixture.php code/web/public_php/webtt/cake/tests/fixtures/group_update_all_fixture.php code/web/public_php/webtt/cake/tests/fixtures/home_fixture.php code/web/public_php/webtt/cake/tests/fixtures/image_fixture.php code/web/public_php/webtt/cake/tests/fixtures/item_fixture.php code/web/public_php/webtt/cake/tests/fixtures/items_portfolio_fixture.php code/web/public_php/webtt/cake/tests/fixtures/join_a_b_fixture.php code/web/public_php/webtt/cake/tests/fixtures/join_a_c_fixture.php code/web/public_php/webtt/cake/tests/fixtures/join_a_fixture.php code/web/public_php/webtt/cake/tests/fixtures/join_b_fixture.php code/web/public_php/webtt/cake/tests/fixtures/join_c_fixture.php code/web/public_php/webtt/cake/tests/fixtures/join_thing_fixture.php code/web/public_php/webtt/cake/tests/fixtures/message_fixture.php code/web/public_php/webtt/cake/tests/fixtures/my_categories_my_products_fixture.php code/web/public_php/webtt/cake/tests/fixtures/my_categories_my_users_fixture.php code/web/public_php/webtt/cake/tests/fixtures/my_category_fixture.php code/web/public_php/webtt/cake/tests/fixtures/my_product_fixture.php code/web/public_php/webtt/cake/tests/fixtures/my_user_fixture.php code/web/public_php/webtt/cake/tests/fixtures/node_fixture.php code/web/public_php/webtt/cake/tests/fixtures/number_tree_fixture.php code/web/public_php/webtt/cake/tests/fixtures/number_tree_two_fixture.php code/web/public_php/webtt/cake/tests/fixtures/numeric_article_fixture.php code/web/public_php/webtt/cake/tests/fixtures/overall_favorite_fixture.php code/web/public_php/webtt/cake/tests/fixtures/person_fixture.php code/web/public_php/webtt/cake/tests/fixtures/portfolio_fixture.php code/web/public_php/webtt/cake/tests/fixtures/post_fixture.php code/web/public_php/webtt/cake/tests/fixtures/posts_tag_fixture.php code/web/public_php/webtt/cake/tests/fixtures/primary_model_fixture.php code/web/public_php/webtt/cake/tests/fixtures/product_fixture.php code/web/public_php/webtt/cake/tests/fixtures/product_update_all_fixture.php code/web/public_php/webtt/cake/tests/fixtures/project_fixture.php code/web/public_php/webtt/cake/tests/fixtures/sample_fixture.php code/web/public_php/webtt/cake/tests/fixtures/secondary_model_fixture.php code/web/public_php/webtt/cake/tests/fixtures/session_fixture.php code/web/public_php/webtt/cake/tests/fixtures/something_else_fixture.php code/web/public_php/webtt/cake/tests/fixtures/something_fixture.php code/web/public_php/webtt/cake/tests/fixtures/stories_tag_fixture.php code/web/public_php/webtt/cake/tests/fixtures/story_fixture.php code/web/public_php/webtt/cake/tests/fixtures/syfile_fixture.php code/web/public_php/webtt/cake/tests/fixtures/tag_fixture.php code/web/public_php/webtt/cake/tests/fixtures/test_plugin_article_fixture.php code/web/public_php/webtt/cake/tests/fixtures/test_plugin_comment_fixture.php code/web/public_php/webtt/cake/tests/fixtures/the_paper_monkies_fixture.php code/web/public_php/webtt/cake/tests/fixtures/thread_fixture.php code/web/public_php/webtt/cake/tests/fixtures/translate_article_fixture.php code/web/public_php/webtt/cake/tests/fixtures/translate_fixture.php code/web/public_php/webtt/cake/tests/fixtures/translate_table_fixture.php code/web/public_php/webtt/cake/tests/fixtures/translate_with_prefix_fixture.php code/web/public_php/webtt/cake/tests/fixtures/translated_article_fixture.php code/web/public_php/webtt/cake/tests/fixtures/translated_item_fixture.php code/web/public_php/webtt/cake/tests/fixtures/unconventional_tree_fixture.php code/web/public_php/webtt/cake/tests/fixtures/underscore_field_fixture.php code/web/public_php/webtt/cake/tests/fixtures/user_fixture.php code/web/public_php/webtt/cake/tests/fixtures/uuid_fixture.php code/web/public_php/webtt/cake/tests/fixtures/uuid_tag_fixture.php code/web/public_php/webtt/cake/tests/fixtures/uuid_tree_fixture.php code/web/public_php/webtt/cake/tests/fixtures/uuiditem_fixture.php code/web/public_php/webtt/cake/tests/fixtures/uuiditems_uuidportfolio_fixture.php code/web/public_php/webtt/cake/tests/fixtures/uuiditems_uuidportfolio_numericid_fixture.php code/web/public_php/webtt/cake/tests/fixtures/uuidportfolio_fixture.php code/web/public_php/webtt/cake/tests/groups/acl.group.php code/web/public_php/webtt/cake/tests/groups/bake.group.php code/web/public_php/webtt/cake/tests/groups/behaviors.group.php code/web/public_php/webtt/cake/tests/groups/cache.group.php code/web/public_php/webtt/cake/tests/groups/components.group.php code/web/public_php/webtt/cake/tests/groups/configure.group.php code/web/public_php/webtt/cake/tests/groups/console.group.php code/web/public_php/webtt/cake/tests/groups/controller.group.php code/web/public_php/webtt/cake/tests/groups/database.group.php code/web/public_php/webtt/cake/tests/groups/helpers.group.php code/web/public_php/webtt/cake/tests/groups/i18n.group.php code/web/public_php/webtt/cake/tests/groups/javascript.group.php code/web/public_php/webtt/cake/tests/groups/lib.group.php code/web/public_php/webtt/cake/tests/groups/model.group.php code/web/public_php/webtt/cake/tests/groups/no_cross_contamination.group.php code/web/public_php/webtt/cake/tests/groups/routing_system.group.php code/web/public_php/webtt/cake/tests/groups/socket.group.php code/web/public_php/webtt/cake/tests/groups/test_suite.group.php code/web/public_php/webtt/cake/tests/groups/view.group.php code/web/public_php/webtt/cake/tests/groups/xml.group.php code/web/public_php/webtt/cake/tests/lib/cake_test_case.php code/web/public_php/webtt/cake/tests/lib/cake_test_fixture.php code/web/public_php/webtt/cake/tests/lib/cake_test_model.php code/web/public_php/webtt/cake/tests/lib/cake_test_suite_dispatcher.php code/web/public_php/webtt/cake/tests/lib/cake_web_test_case.php code/web/public_php/webtt/cake/tests/lib/code_coverage_manager.php code/web/public_php/webtt/cake/tests/lib/reporter/cake_base_reporter.php code/web/public_php/webtt/cake/tests/lib/reporter/cake_cli_reporter.php code/web/public_php/webtt/cake/tests/lib/reporter/cake_html_reporter.php code/web/public_php/webtt/cake/tests/lib/reporter/cake_text_reporter.php code/web/public_php/webtt/cake/tests/lib/templates/footer.php code/web/public_php/webtt/cake/tests/lib/templates/header.php code/web/public_php/webtt/cake/tests/lib/templates/menu.php code/web/public_php/webtt/cake/tests/lib/templates/simpletest.php code/web/public_php/webtt/cake/tests/lib/templates/xdebug.php code/web/public_php/webtt/cake/tests/lib/test_manager.php code/web/public_php/webtt/cake/tests/test_app/config/acl.ini.php code/web/public_php/webtt/cake/tests/test_app/controllers/components/empty code/web/public_php/webtt/cake/tests/test_app/controllers/tests_apps_controller.php code/web/public_php/webtt/cake/tests/test_app/controllers/tests_apps_posts_controller.php code/web/public_php/webtt/cake/tests/test_app/libs/cache/test_app_cache.php code/web/public_php/webtt/cake/tests/test_app/libs/library.php code/web/public_php/webtt/cake/tests/test_app/libs/log/test_app_log.php code/web/public_php/webtt/cake/tests/test_app/locale/cache_test_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/cache_test_po/LC_MESSAGES/dom1.po code/web/public_php/webtt/cake/tests/test_app/locale/cache_test_po/LC_MESSAGES/dom2.po code/web/public_php/webtt/cake/tests/test_app/locale/ja_jp/LC_TIME code/web/public_php/webtt/cake/tests/test_app/locale/po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/po/LC_MONETARY/default.po code/web/public_php/webtt/cake/tests/test_app/locale/po/LC_TIME code/web/public_php/webtt/cake/tests/test_app/locale/rule_0_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_0_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_0_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_0_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_10_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_10_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_10_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_10_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_11_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_11_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_11_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_11_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_12_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_12_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_12_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_12_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_13_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_13_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_13_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_13_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_14_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_14_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_14_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_14_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_1_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_1_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_1_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_1_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_2_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_2_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_2_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_2_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_3_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_3_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_3_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_3_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_4_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_4_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_4_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_4_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_5_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_5_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_5_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_5_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_6_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_6_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_6_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_6_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_7_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_7_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_7_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_7_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_8_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_8_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_8_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_8_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_9_mo/LC_MESSAGES/core.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_9_mo/LC_MESSAGES/default.mo code/web/public_php/webtt/cake/tests/test_app/locale/rule_9_po/LC_MESSAGES/core.po code/web/public_php/webtt/cake/tests/test_app/locale/rule_9_po/LC_MESSAGES/default.po code/web/public_php/webtt/cake/tests/test_app/locale/time_test/LC_TIME code/web/public_php/webtt/cake/tests/test_app/models/behaviors/empty code/web/public_php/webtt/cake/tests/test_app/models/behaviors/persister_one_behavior.php code/web/public_php/webtt/cake/tests/test_app/models/behaviors/persister_two_behavior.php code/web/public_php/webtt/cake/tests/test_app/models/comment.php code/web/public_php/webtt/cake/tests/test_app/models/datasources/test2_other_source.php code/web/public_php/webtt/cake/tests/test_app/models/datasources/test2_source.php code/web/public_php/webtt/cake/tests/test_app/models/persister_one.php code/web/public_php/webtt/cake/tests/test_app/models/persister_two.php code/web/public_php/webtt/cake/tests/test_app/models/post.php code/web/public_php/webtt/cake/tests/test_app/plugins/plugin_js/webroot/js/one/plugin_one.js code/web/public_php/webtt/cake/tests/test_app/plugins/plugin_js/webroot/js/plugin_js.js code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/config/load.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/config/more.load.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/config/schema/schema.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/controllers/components/other_component.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/controllers/components/plugins_component.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/controllers/components/test_plugin_component.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/controllers/components/test_plugin_other_component.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/controllers/test_plugin_controller.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/controllers/tests_controller.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/libs/cache/test_plugin_cache.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/libs/log/test_plugin_log.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/libs/test_plugin_library.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/locale/po/LC_MESSAGES/test_plugin.po code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/locale/po/LC_MONETARY/test_plugin.po code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/models/behaviors/test_plugin_persister_one.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/models/behaviors/test_plugin_persister_two.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/models/datasources/dbo/dbo_dummy.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/models/datasources/test_other_source.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/models/datasources/test_source.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/models/test_plugin_auth_user.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/models/test_plugin_authors.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/models/test_plugin_comment.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/models/test_plugin_post.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/test_plugin_app_controller.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/test_plugin_app_model.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/vendors/sample/sample_plugin.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/vendors/shells/example.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/vendors/shells/tasks/empty code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/vendors/shells/templates/empty code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/vendors/welcome.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/views/elements/plugin_element.ctp code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/views/elements/test_plugin_element.ctp code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/views/helpers/other_helper.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/views/helpers/plugged_helper.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/views/helpers/test_plugin_app.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/views/layouts/default.ctp code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/views/tests/index.ctp code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/views/tests/scaffold.edit.ctp code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/webroot/css/test_plugin_asset.css code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/webroot/css/theme_one.htc code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/webroot/css/unknown.extension code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/webroot/flash/plugin_test.swf code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/webroot/img/cake.icon.gif code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/webroot/js/test_plugin/test.js code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/webroot/pdfs/plugin_test.pdf code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin/webroot/root.js code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin_two/vendors/shells/example.php code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin_two/vendors/shells/tasks/empty code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin_two/vendors/shells/templates/empty code/web/public_php/webtt/cake/tests/test_app/plugins/test_plugin_two/vendors/shells/welcome.php code/web/public_php/webtt/cake/tests/test_app/tmp/dir_map code/web/public_php/webtt/cake/tests/test_app/vendors/Test/MyTest.php code/web/public_php/webtt/cake/tests/test_app/vendors/Test/hello.php code/web/public_php/webtt/cake/tests/test_app/vendors/css/test_asset.css code/web/public_php/webtt/cake/tests/test_app/vendors/img/test.jpg code/web/public_php/webtt/cake/tests/test_app/vendors/sample/configure_test_vendor_sample.php code/web/public_php/webtt/cake/tests/test_app/vendors/shells/sample.php code/web/public_php/webtt/cake/tests/test_app/vendors/shells/tasks/empty code/web/public_php/webtt/cake/tests/test_app/vendors/somename/some.name.php code/web/public_php/webtt/cake/tests/test_app/vendors/welcome.php code/web/public_php/webtt/cake/tests/test_app/views/elements/email/html/custom.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/email/html/default.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/email/html/nested_element.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/email/text/custom.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/email/text/default.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/email/text/wide.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/empty code/web/public_php/webtt/cake/tests/test_app/views/elements/html_call.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/nocache/contains_nocache.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/nocache/plain.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/nocache/sub1.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/nocache/sub2.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/session_helper.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/test_element.ctp code/web/public_php/webtt/cake/tests/test_app/views/elements/type_check.ctp code/web/public_php/webtt/cake/tests/test_app/views/errors/empty code/web/public_php/webtt/cake/tests/test_app/views/helpers/banana.php code/web/public_php/webtt/cake/tests/test_app/views/helpers/empty code/web/public_php/webtt/cake/tests/test_app/views/layouts/ajax.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/ajax2.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/cache_empty_sections.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/cache_layout.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/default.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/email/html/default.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/email/html/thin.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/email/text/default.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/flash.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/js/default.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/multi_cache.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/rss/default.ctp code/web/public_php/webtt/cake/tests/test_app/views/layouts/xml/default.ctp code/web/public_php/webtt/cake/tests/test_app/views/pages/empty code/web/public_php/webtt/cake/tests/test_app/views/pages/extract.ctp code/web/public_php/webtt/cake/tests/test_app/views/pages/home.ctp code/web/public_php/webtt/cake/tests/test_app/views/posts/cache_empty_sections.ctp code/web/public_php/webtt/cake/tests/test_app/views/posts/cache_form.ctp code/web/public_php/webtt/cake/tests/test_app/views/posts/helper_overwrite.ctp code/web/public_php/webtt/cake/tests/test_app/views/posts/index.ctp code/web/public_php/webtt/cake/tests/test_app/views/posts/multiple_nocache.ctp code/web/public_php/webtt/cake/tests/test_app/views/posts/nocache_multiple_element.ctp code/web/public_php/webtt/cake/tests/test_app/views/posts/scaffold.edit.ctp code/web/public_php/webtt/cake/tests/test_app/views/posts/sequencial_nocache.ctp code/web/public_php/webtt/cake/tests/test_app/views/posts/test_nocache_tags.ctp code/web/public_php/webtt/cake/tests/test_app/views/scaffolds/empty code/web/public_php/webtt/cake/tests/test_app/views/tests_apps/index.ctp code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/elements/test_element.ctp code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/layouts/default.ctp code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/plugins/test_plugin/layouts/plugin_default.ctp code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/plugins/test_plugin/tests/index.ctp code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/posts/index.ctp code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/posts/scaffold.index.ctp code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/webroot/css/test_asset.css code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/webroot/css/theme_webroot.css code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/webroot/flash/theme_test.swf code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/webroot/img/cake.power.gif code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/webroot/img/test.jpg code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/webroot/js/one/theme_one.js code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/webroot/js/theme.js code/web/public_php/webtt/cake/tests/test_app/views/themed/test_theme/webroot/pdfs/theme_test.pdf code/web/public_php/webtt/cake/tests/test_app/webroot/theme/test_theme/css/theme_webroot.css code/web/public_php/webtt/cake/tests/test_app/webroot/theme/test_theme/css/webroot_test.css code/web/public_php/webtt/cake/tests/test_app/webroot/theme/test_theme/img/cake.power.gif code/web/public_php/webtt/cake/tests/test_app/webroot/theme/test_theme/img/test.jpg code/web/public_php/webtt/docs/INSTALL code/web/public_php/webtt/docs/db/CakePHP_Associations code/web/public_php/webtt/docs/db/erd.png code/web/public_php/webtt/docs/db/webtt2.db code/web/public_php/webtt/index.php code/web/public_php/webtt/plugins/debug_kit/.gitignore code/web/public_php/webtt/plugins/debug_kit/README.mdown code/web/public_php/webtt/plugins/debug_kit/build.py code/web/public_php/webtt/plugins/debug_kit/controllers/components/toolbar.php code/web/public_php/webtt/plugins/debug_kit/controllers/toolbar_access_controller.php code/web/public_php/webtt/plugins/debug_kit/debug_kit_app_controller.php code/web/public_php/webtt/plugins/debug_kit/debug_kit_app_model.php code/web/public_php/webtt/plugins/debug_kit/locale/debug_kit.pot code/web/public_php/webtt/plugins/debug_kit/locale/eng/LC_MESSAGES/debug_kit.po code/web/public_php/webtt/plugins/debug_kit/locale/spa/LC_MESSAGES/debug_kit.po code/web/public_php/webtt/plugins/debug_kit/models/behaviors/timed.php code/web/public_php/webtt/plugins/debug_kit/models/toolbar_access.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/behaviors/timed.test.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/controllers/components/toolbar.test.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/models/toolbar_access.test.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/test_objects.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/vendors/debug_kit_debugger.test.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/vendors/fire_cake.test.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/views/debug.test.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/views/helpers/fire_php_toolbar.test.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/views/helpers/html_toolbar.test.php code/web/public_php/webtt/plugins/debug_kit/tests/cases/views/helpers/toolbar.test.php code/web/public_php/webtt/plugins/debug_kit/tests/groups/view_group.group.php code/web/public_php/webtt/plugins/debug_kit/tests/test_app/controllers/debug_kit_test_controller.php code/web/public_php/webtt/plugins/debug_kit/tests/test_app/vendors/test_panel.php code/web/public_php/webtt/plugins/debug_kit/tests/test_app/views/debug_kit_test/request_action_render.ctp code/web/public_php/webtt/plugins/debug_kit/vendors/debug_kit_debugger.php code/web/public_php/webtt/plugins/debug_kit/vendors/fire_cake.php code/web/public_php/webtt/plugins/debug_kit/vendors/shells/benchmark.php code/web/public_php/webtt/plugins/debug_kit/vendors/shells/whitespace.php code/web/public_php/webtt/plugins/debug_kit/views/debug.php code/web/public_php/webtt/plugins/debug_kit/views/elements/debug_toolbar.ctp code/web/public_php/webtt/plugins/debug_kit/views/elements/history_panel.ctp code/web/public_php/webtt/plugins/debug_kit/views/elements/log_panel.ctp code/web/public_php/webtt/plugins/debug_kit/views/elements/request_panel.ctp code/web/public_php/webtt/plugins/debug_kit/views/elements/session_panel.ctp code/web/public_php/webtt/plugins/debug_kit/views/elements/sql_log_panel.ctp code/web/public_php/webtt/plugins/debug_kit/views/elements/timer_panel.ctp code/web/public_php/webtt/plugins/debug_kit/views/elements/variables_panel.ctp code/web/public_php/webtt/plugins/debug_kit/views/helpers/fire_php_toolbar.php code/web/public_php/webtt/plugins/debug_kit/views/helpers/html_toolbar.php code/web/public_php/webtt/plugins/debug_kit/views/helpers/simple_graph.php code/web/public_php/webtt/plugins/debug_kit/views/helpers/toolbar.php code/web/public_php/webtt/plugins/debug_kit/views/toolbar_access/history_state.ctp code/web/public_php/webtt/plugins/debug_kit/views/toolbar_access/sql_explain.ctp code/web/public_php/webtt/plugins/debug_kit/webroot/css/debug_toolbar.css code/web/public_php/webtt/plugins/debug_kit/webroot/img/cake.icon.png code/web/public_php/webtt/plugins/debug_kit/webroot/js/js_debug_toolbar.js code/web/public_php/webtt/plugins/empty code/web/public_php/webtt/vendors/shells/tasks/empty code/web/public_php/webtt/vendors/shells/templates/empty code/web/public_php/webtt/vendors/simpletest/HELP_MY_TESTS_DONT_WORK_ANYMORE code/web/public_php/webtt/vendors/simpletest/LICENSE code/web/public_php/webtt/vendors/simpletest/README code/web/public_php/webtt/vendors/simpletest/VERSION code/web/public_php/webtt/vendors/simpletest/authentication.php code/web/public_php/webtt/vendors/simpletest/autorun.php code/web/public_php/webtt/vendors/simpletest/browser.php code/web/public_php/webtt/vendors/simpletest/collector.php code/web/public_php/webtt/vendors/simpletest/compatibility.php code/web/public_php/webtt/vendors/simpletest/cookies.php code/web/public_php/webtt/vendors/simpletest/default_reporter.php code/web/public_php/webtt/vendors/simpletest/detached.php code/web/public_php/webtt/vendors/simpletest/docs/en/authentication_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/en/browser_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/en/docs.css code/web/public_php/webtt/vendors/simpletest/docs/en/expectation_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/en/form_testing_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/en/group_test_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/en/index.html code/web/public_php/webtt/vendors/simpletest/docs/en/mock_objects_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/en/overview.html code/web/public_php/webtt/vendors/simpletest/docs/en/partial_mocks_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/en/reporter_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/en/unit_test_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/en/web_tester_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/authentication_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/browser_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/docs.css code/web/public_php/webtt/vendors/simpletest/docs/fr/expectation_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/form_testing_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/group_test_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/index.html code/web/public_php/webtt/vendors/simpletest/docs/fr/mock_objects_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/overview.html code/web/public_php/webtt/vendors/simpletest/docs/fr/partial_mocks_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/reporter_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/unit_test_documentation.html code/web/public_php/webtt/vendors/simpletest/docs/fr/web_tester_documentation.html code/web/public_php/webtt/vendors/simpletest/dumper.php code/web/public_php/webtt/vendors/simpletest/eclipse.php code/web/public_php/webtt/vendors/simpletest/encoding.php code/web/public_php/webtt/vendors/simpletest/errors.php code/web/public_php/webtt/vendors/simpletest/exceptions.php code/web/public_php/webtt/vendors/simpletest/expectation.php code/web/public_php/webtt/vendors/simpletest/extensions/pear_test_case.php code/web/public_php/webtt/vendors/simpletest/extensions/testdox.php code/web/public_php/webtt/vendors/simpletest/extensions/testdox/test.php code/web/public_php/webtt/vendors/simpletest/form.php code/web/public_php/webtt/vendors/simpletest/frames.php code/web/public_php/webtt/vendors/simpletest/http.php code/web/public_php/webtt/vendors/simpletest/invoker.php code/web/public_php/webtt/vendors/simpletest/mock_objects.php code/web/public_php/webtt/vendors/simpletest/page.php code/web/public_php/webtt/vendors/simpletest/php_parser.php code/web/public_php/webtt/vendors/simpletest/reflection_php4.php code/web/public_php/webtt/vendors/simpletest/reflection_php5.php code/web/public_php/webtt/vendors/simpletest/remote.php code/web/public_php/webtt/vendors/simpletest/reporter.php code/web/public_php/webtt/vendors/simpletest/scorer.php code/web/public_php/webtt/vendors/simpletest/selector.php code/web/public_php/webtt/vendors/simpletest/shell_tester.php code/web/public_php/webtt/vendors/simpletest/simpletest.php code/web/public_php/webtt/vendors/simpletest/socket.php code/web/public_php/webtt/vendors/simpletest/tag.php code/web/public_php/webtt/vendors/simpletest/test_case.php code/web/public_php/webtt/vendors/simpletest/tidy_parser.php code/web/public_php/webtt/vendors/simpletest/unit_tester.php code/web/public_php/webtt/vendors/simpletest/url.php code/web/public_php/webtt/vendors/simpletest/user_agent.php code/web/public_php/webtt/vendors/simpletest/web_tester.php code/web/public_php/webtt/vendors/simpletest/xml.php
4391 lines
134 KiB
C++
4391 lines
134 KiB
C++
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
|
// Copyright (C) 2010 Winch Gate Property Limited
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as
|
|
// published by the Free Software Foundation, either version 3 of the
|
|
// License, or (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
/////////////
|
|
// INCLUDE //
|
|
/////////////
|
|
#include "stdpch.h"
|
|
// Game Share
|
|
#include "game_share/generic_xml_msg_mngr.h"
|
|
#include "game_share/msg_client_server.h"
|
|
#include "game_share/bot_chat_types.h"
|
|
#include "game_share/news_types.h"
|
|
#include "game_share/mode_and_behaviour.h"
|
|
#include "game_share/chat_group.h"
|
|
#include "game_share/character_summary.h"
|
|
#include "game_share/sphrase_com.h"
|
|
#include "game_share/msg_client_server.h"
|
|
#include "game_share/ryzom_database_banks.h"
|
|
#include "game_share/msg_encyclopedia.h"
|
|
#include "game_share/prerequisit_infos.h"
|
|
#include "game_share/permanent_ban_magic_number.h"
|
|
#include "game_share/item_special_effect.h"
|
|
#include "game_share/combat_flying_text.h"
|
|
#include "game_share/shard_names.h"
|
|
// Client.
|
|
#include "nel/gui/group_list.h"
|
|
#include "interface_v3/interface_manager.h"
|
|
#include "net_manager.h"
|
|
#include "client_cfg.h"
|
|
#include "entities.h"
|
|
#include "client_chat_manager.h"
|
|
#include "world_database_manager.h"
|
|
#include "continent_manager.h"
|
|
#include "motion/user_controls.h"
|
|
#include "interface_v3/bot_chat_manager.h"
|
|
#include "interface_v3/bot_chat_page_all.h"
|
|
#include "interface_v3/bot_chat_page_trade.h"
|
|
#include "interface_v3/bot_chat_page_create_guild.h"
|
|
#include "interface_v3/obs_huge_list.h"
|
|
#include "string_manager_client.h"
|
|
#include "interface_v3/people_interraction.h"
|
|
#include "interface_v3/bot_chat_manager.h"
|
|
#include "interface_v3/bot_chat_page_all.h"
|
|
#include "nel/gui/view_text_id.h"
|
|
#include "nel/gui/ctrl_text_button.h"
|
|
#include "interface_v3/input_handler_manager.h"
|
|
#include "interface_v3/guild_manager.h"
|
|
#include "interface_v3/skill_manager.h"
|
|
#include "misc.h"
|
|
#include "interface_v3/inventory_manager.h"
|
|
#include "interface_v3/sphrase_manager.h"
|
|
#include "outpost_manager.h"
|
|
#include "interface_v3/encyclopedia_manager.h"
|
|
#include "user_entity.h"
|
|
#include "init_main_loop.h"
|
|
#include "interface_v3/group_map.h"
|
|
#include "sound_manager.h"
|
|
#include "interface_v3/group_compas.h"
|
|
#include "interface_v3/group_html_webig.h"
|
|
#include "interface_v3/bar_manager.h"
|
|
#include "permanent_ban.h"
|
|
#include "global.h"
|
|
#include "connection.h"
|
|
#include "faction_war_manager.h"
|
|
#include "far_tp.h"
|
|
#include "input.h"
|
|
#include "r2/editor.h"
|
|
#include "game_share/r2_share_itf.h"
|
|
#include "game_share/r2_types.h"
|
|
#include "npc_icon.h"
|
|
#include "interface_v3/action_handler_base.h"
|
|
|
|
// Std.
|
|
#include <vector>
|
|
|
|
|
|
#define OLD_STRING_SYSTEM
|
|
#define BAR_STEP_TP 2
|
|
|
|
///////////
|
|
// USING //
|
|
///////////
|
|
using namespace NLMISC;
|
|
using namespace NL3D;
|
|
using namespace std;
|
|
|
|
|
|
extern bool FirstFrame;
|
|
extern void selectTipsOfTheDay (uint tips);
|
|
|
|
|
|
////////////
|
|
// GLOBAL //
|
|
////////////
|
|
CGenericXmlMsgHeaderManager GenericMsgHeaderMngr; // Manage messages
|
|
#ifdef CLIENT_MULTI
|
|
CNetManagerMulti NetMngr; // Manage the connection.
|
|
#else
|
|
CNetManager NetMngr; // Manage the connection.
|
|
#endif
|
|
|
|
bool UseFemaleTitles = false;
|
|
|
|
bool serverReceivedReady = false;
|
|
|
|
static const std::string PLAYER_EXCHANGE_INVITATION_DIALOG = "ui:interface:accept_trade_invitation";
|
|
|
|
// Hierarchical timer
|
|
H_AUTO_DECL ( RZ_Client_Net_Mngr_Update )
|
|
|
|
////////////
|
|
// EXTERN //
|
|
////////////
|
|
extern bool noUserChar; // \todo GUIGUI : do this better.
|
|
extern bool userChar; // \todo GUIGUI : do this better.
|
|
extern std::vector<CCharacterSummary> CharacterSummaries;
|
|
extern uint8 ServerPeopleActive;
|
|
extern uint8 ServerCareerActive;
|
|
extern vector<CMainlandSummary> Mainlands;
|
|
extern bool UserCharPosReceived;
|
|
extern CGenericXmlMsgHeaderManager GenericMsgHeaderMngr;
|
|
extern CClientChatManager ChatMngr;
|
|
|
|
extern bool CharNameValidArrived;
|
|
extern bool CharNameValid;
|
|
bool IsInRingSession = false;
|
|
TSessionId HighestMainlandSessionId; // highest in the position stack
|
|
|
|
extern const char *CDBBankNames[INVALID_CDB_BANK+1];
|
|
|
|
void cbImpulsionGatewayOpen(NLMISC::CBitMemStream &bms);
|
|
void cbImpulsionGatewayMessage(NLMISC::CBitMemStream &bms);
|
|
void cbImpulsionGatewayClose(NLMISC::CBitMemStream &bms);
|
|
|
|
|
|
|
|
///////////////
|
|
// FUNCTIONS //
|
|
///////////////
|
|
|
|
void impulseDatabaseInitPlayer(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
try
|
|
{
|
|
sint32 p = impulse.getPos();
|
|
|
|
// get the egs tick of this change
|
|
TGameCycle serverTick;
|
|
impulse.serial(serverTick);
|
|
|
|
// read delta
|
|
IngameDbMngr.readDelta( serverTick, impulse, CDBPlayer );
|
|
IngameDbMngr.setInitPacketReceived();
|
|
nlinfo( "DB_INIT:PLR done (%u bytes)", impulse.getPos()-p );
|
|
}
|
|
catch (const Exception &e)
|
|
{
|
|
BOMB( NLMISC::toString( "Problem while decoding a DB_INIT:PLR msg, skipped: %s", e.what() ), return );
|
|
}
|
|
}
|
|
|
|
void impulseDatabaseUpdatePlayer(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
try
|
|
{
|
|
// get the egs tick of this change
|
|
TGameCycle serverTick;
|
|
impulse.serial(serverTick);
|
|
|
|
// read delta
|
|
IngameDbMngr.readDelta( serverTick, impulse, CDBPlayer ); // unlike on the server, here there is only one unified CCDBSynchronized object
|
|
}
|
|
catch (const Exception &e)
|
|
{
|
|
|
|
BOMB( NLMISC::toString( "Problem while decoding a DB_UPDATE_PLR msg, skipped: %s", e.what() ), return );
|
|
}
|
|
}
|
|
|
|
template <class CInventoryCategoryTemplate>
|
|
void updateInventoryFromStream(NLMISC::CBitMemStream &impulse, const CInventoryCategoryTemplate *templ, bool notifyItemSheetChanges);
|
|
|
|
void impulseDatabaseUpdateBank(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 bank = INVALID_CDB_BANK;
|
|
try
|
|
{
|
|
// get the egs tick of this change
|
|
TGameCycle serverTick;
|
|
impulse.serial(serverTick);
|
|
|
|
// decode bank
|
|
uint nbits;
|
|
FILL_nbits_WITH_NB_BITS_FOR_CDBBANK
|
|
impulse.serial( bank, nbits );
|
|
|
|
// read delta
|
|
IngameDbMngr.readDelta( serverTick, impulse, (TCDBBank)bank );
|
|
|
|
// read guild inventory update
|
|
if ( bank == CDBGuild )
|
|
{
|
|
updateInventoryFromStream( impulse, (INVENTORIES::CInventoryCategoryForGuild*)NULL, false );
|
|
}
|
|
}
|
|
catch (const Exception &e)
|
|
{
|
|
BOMB( NLMISC::toString( "Problem while decoding a DB_GROUP:UPDATE_BANK %s msg, skipped: %s", CDBBankNames[bank], e.what() ), return );
|
|
}
|
|
}
|
|
|
|
void impulseDatabaseInitBank(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 bank = INVALID_CDB_BANK;
|
|
try
|
|
{
|
|
// get the egs tick of this change
|
|
TGameCycle serverTick;
|
|
impulse.serial(serverTick);
|
|
|
|
// decode bank
|
|
uint nbits;
|
|
FILL_nbits_WITH_NB_BITS_FOR_CDBBANK
|
|
impulse.serial( bank, nbits );
|
|
|
|
// read delta
|
|
IngameDbMngr.readDelta( serverTick, impulse, (TCDBBank)bank );
|
|
nldebug( "CDB: DB_GROUP:INIT_BANK %s", CDBBankNames[bank] );
|
|
|
|
// read guild inventory update
|
|
if ( bank == CDBGuild )
|
|
{
|
|
updateInventoryFromStream( impulse, (INVENTORIES::CInventoryCategoryForGuild*)NULL, false );
|
|
}
|
|
}
|
|
catch (const Exception &e)
|
|
{
|
|
BOMB( NLMISC::toString( "Problem while decoding a DB_GROUP:INIT_BANK %s msg, skipped: %s", CDBBankNames[bank], e.what() ), return );
|
|
}
|
|
}
|
|
|
|
void impulseDatabaseResetBank(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 bank = INVALID_CDB_BANK;
|
|
try
|
|
{
|
|
// get the egs tick of this change
|
|
TGameCycle serverTick;
|
|
impulse.serial(serverTick);
|
|
|
|
// read the bank to reset
|
|
uint nbits;
|
|
FILL_nbits_WITH_NB_BITS_FOR_CDBBANK
|
|
impulse.serial( bank, nbits );
|
|
|
|
// reset the bank
|
|
IngameDbMngr.resetBank( serverTick, bank );
|
|
nldebug( "CDB: DB_GROUP:RESET_BANK %s", CDBBankNames[bank] );
|
|
}
|
|
catch (const Exception &e)
|
|
{
|
|
BOMB( NLMISC::toString( "Problem while decoding a DB_GROUP:RESET_BANK %s msg, skipped: %s", CDBBankNames[bank], e.what() ), return );
|
|
}
|
|
}
|
|
|
|
static void readPrivileges(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
nlassert(impulse.isReading());
|
|
// nico : temporarily uses a try block here to avoid prb with people having updated client and not the server
|
|
try
|
|
{
|
|
impulse.serial(UserPrivileges);
|
|
}
|
|
catch(const EStreamOverflow &)
|
|
{
|
|
nlwarning("User privileges not serialised, assuming none");
|
|
UserPrivileges.clear();
|
|
}
|
|
}
|
|
|
|
void impulseNoUserChar(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// received NO_USER_CHAR
|
|
//nlinfo("impulseCallBack : Received CONNECTION:NO_USER_CHAR");
|
|
|
|
impulse.serial(ServerPeopleActive);
|
|
impulse.serial(ServerCareerActive);
|
|
readPrivileges(impulse);
|
|
impulse.serialCont(Mainlands);
|
|
CharacterSummaries.clear();
|
|
noUserChar = true;
|
|
|
|
LoginSM.pushEvent(CLoginStateMachine::ev_no_user_char);
|
|
|
|
updatePatcherPriorityBasedOnCharacters();
|
|
}
|
|
|
|
void impulseFarTP(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// received FAR_TP
|
|
TSessionId sessionId;
|
|
impulse.serial(sessionId);
|
|
//nlinfo("impulseCallback : Received CONNECTION:FAR_TP %u", sessionId.asInt());
|
|
bool bailOutIfSessionVanished;
|
|
impulse.serial(bailOutIfSessionVanished);
|
|
FarTP.requestFarTPToSession(sessionId, PlayerSelectedSlot, CFarTP::JoinSession, bailOutIfSessionVanished);
|
|
}
|
|
|
|
|
|
static std::string lookupSrcKeyFile(const std::string &src)
|
|
{
|
|
if (CFile::isExists("save/" + src)) return "save/" + src;
|
|
return CPath::lookup(src, false);
|
|
}
|
|
|
|
void copyKeySet(const std::string &srcPath, const std::string &destPath)
|
|
{
|
|
// can't use CFile copyFile here, because src may be in a bnp file
|
|
std::string srcStr;
|
|
srcStr.resize(CFile::getFileSize(srcPath));
|
|
if (srcStr.empty())
|
|
{
|
|
nlwarning("Can't copy keys from %s : file not found or empty");
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
CIFile ifile(srcPath);
|
|
ifile.serialBuffer((uint8 *) &srcStr[0], (uint)srcStr.size());
|
|
COFile ofile(destPath);
|
|
ofile.serialBuffer((uint8 *) &srcStr[0], (uint)srcStr.size());
|
|
}
|
|
catch(const EStream &)
|
|
{
|
|
nlwarning("Couldn't copy %s to %s to create new character keyset", srcPath.c_str(), destPath.c_str());
|
|
}
|
|
}
|
|
|
|
void impulseUserChars(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// received USER_CHARS
|
|
//nlinfo("impulseCallBack : Received CONNECTION:USER_CHARS");
|
|
|
|
impulse.serial(ServerPeopleActive);
|
|
impulse.serial(ServerCareerActive);
|
|
// read characters summary
|
|
CharacterSummaries.clear();
|
|
impulse.serialCont (CharacterSummaries);
|
|
// read shard name summaries
|
|
std::vector<string> shardNames;
|
|
impulse.serialCont (shardNames);
|
|
CShardNames::getInstance().loadShardNames(shardNames);
|
|
// read privileges
|
|
readPrivileges(impulse);
|
|
impulse.serial(FreeTrial);
|
|
FreeTrial = false;
|
|
impulse.serialCont(Mainlands);
|
|
userChar = true;
|
|
|
|
LoginSM.pushEvent(CLoginStateMachine::ev_chars_received);
|
|
|
|
// Create the message for the server to select the first character.
|
|
/* CBitMemStream out;
|
|
if(GenericMsgHeaderMngr.pushNameToStream("CONNECTION:SELECT_CHAR", out))
|
|
{
|
|
CSelectCharMsg SelectCharMsg;
|
|
SelectCharMsg.c = 0; //TODO set here the character choosen by player
|
|
out.serial( SelectCharMsg );
|
|
NetMngr.push(out);
|
|
NetMngr.send(NetMngr.getCurrentServerTick());
|
|
// send CONNECTION:USER_CHARS
|
|
nldebug("impulseCallBack : CONNECTION:SELECT_CHAR sent");
|
|
}
|
|
else
|
|
nlwarning("impulseCallBack : unknown message name : 'CONNECTION:SELECT_CHAR'.");
|
|
|
|
noUserChar = true;
|
|
*/
|
|
|
|
if (!NewKeysCharNameValidated.empty())
|
|
{
|
|
// if there's a new char for which a key set was wanted, create it now
|
|
for (uint k = 0; k < CharacterSummaries.size(); ++k)
|
|
{
|
|
if (toLower(CharacterSummaries[k].Name) == toLower(NewKeysCharNameValidated))
|
|
{
|
|
// first, stripes server name
|
|
copyKeySet(lookupSrcKeyFile(GameKeySet), "save/keys_" + buildPlayerNameForSaveFile(NewKeysCharNameValidated) + ".xml");
|
|
copyKeySet(lookupSrcKeyFile(RingEditorKeySet), "save/keys_r2ed_" + buildPlayerNameForSaveFile(NewKeysCharNameValidated) + ".xml");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
updatePatcherPriorityBasedOnCharacters();
|
|
}
|
|
|
|
void impulseUserChar(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// received USER_CHAR
|
|
//nlinfo("impulseCallBack : Received CONNECTION:USER_CHAR");
|
|
|
|
// Serialize the message
|
|
COfflineEntityState posState;
|
|
extern uint8 ServerSeasonValue;
|
|
extern bool ServerSeasonReceived;
|
|
uint32 userRole;
|
|
CUserCharMsg::read( impulse, posState, ServerSeasonValue, userRole, IsInRingSession, HighestMainlandSessionId, CharFirstConnectedTime, CharPlayedTime );
|
|
ServerSeasonReceived = true; // set the season that will be used when selecting the continent from the position
|
|
|
|
if (UserEntity)
|
|
{
|
|
UserEntity->pos(CVectorD((float)posState.X/1000.0f, (float)posState.Y/1000.0f, (float)posState.Z/1000.0f));
|
|
UserEntity->front(CVector((float)cos(posState.Heading), (float)sin(posState.Heading), 0.f));
|
|
UserEntity->dir(UserEntity->front());
|
|
UserEntity->setHeadPitch(0);
|
|
UserControls.resetCameraDeltaYaw();
|
|
//nldebug("<impulseUserChar> pos : %f %f %f heading : %f",UserEntity->pos().x,UserEntity->pos().y,UserEntity->pos().z,posState.Heading);
|
|
|
|
// Update the position for the vision.
|
|
NetMngr.setReferencePosition(UserEntity->pos());
|
|
}
|
|
else
|
|
{
|
|
UserEntityInitPos = CVectorD((float)posState.X/1000.0f, (float)posState.Y/1000.0f, (float)posState.Z/1000.0f);
|
|
UserEntityInitFront = CVector((float)cos(posState.Heading), (float)sin(posState.Heading), 0.f);
|
|
//nldebug("<impulseUserChar> pos : %f %f %f heading : %f",UserEntityInitPos.x,UserEntityInitPos.y,UserEntityInitPos.z,posState.Heading);
|
|
|
|
// Update the position for the vision.
|
|
NetMngr.setReferencePosition(UserEntityInitPos);
|
|
}
|
|
|
|
UserCharPosReceived = true;
|
|
|
|
// Configure the ring editor
|
|
extern R2::TUserRole UserRoleInSession;
|
|
UserRoleInSession = R2::TUserRole::TValues(userRole);
|
|
ClientCfg.R2EDEnabled = IsInRingSession /*&& (UserRoleInSession.getValue() != R2::TUserRole::ur_player)*/;
|
|
// !!!Do NOT uncomment the following line do the ClientCfg.R2EDEnabled = IsInRingSession && (UserRoleInSession != R2::TUserRole::ur_player);
|
|
// even with UserRoleInSession R2::TUserRole::ur_player the ring features must be activated
|
|
// because if the ring is not activated the dss do not know the existence of the player
|
|
// So we can not kick him, tp to him, tp in to next act ....
|
|
nldebug( "EnableR2Ed = %u, IsInRingSession = %u, UserRoleInSession = %u", (uint)ClientCfg.R2EDEnabled, (uint)IsInRingSession, userRole );
|
|
|
|
updatePatcherPriorityBasedOnCharacters();
|
|
}
|
|
|
|
void impulseCharNameValid(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//nlinfo("impulseCallBack : Received CONNECTION:VALID_NAME");
|
|
uint8 nTmp;
|
|
impulse.serial(nTmp);
|
|
CharNameValid = ((nTmp != 0) ? true : false);
|
|
CharNameValidArrived = true;
|
|
if (CharNameValid) NewKeysCharNameValidated = NewKeysCharNameWanted;
|
|
}
|
|
|
|
|
|
void checkHandshake( NLMISC::CBitMemStream &impulse )
|
|
{
|
|
// Decode handshake to check versions
|
|
uint16 handshakeVersion;
|
|
uint16 itemSlotVersion;
|
|
impulse.serial( handshakeVersion );
|
|
if ( handshakeVersion > 0 )
|
|
nlerror( "Server handshake version is more recent than client one" );
|
|
impulse.serial( itemSlotVersion );
|
|
if ( itemSlotVersion != INVENTORIES::CItemSlot::getVersion() )
|
|
nlerror( "Handshake: itemSlotVersion mismatch (S:%hu C:%hu)", itemSlotVersion, INVENTORIES::CItemSlot::getVersion() );
|
|
}
|
|
|
|
|
|
void impulseServerReady(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// received CONNECTION:READY
|
|
//nlinfo("impulseCallBack : Received CONNECTION:READY");
|
|
|
|
serverReceivedReady = true;
|
|
|
|
checkHandshake( impulse );
|
|
|
|
LoginSM.pushEvent(CLoginStateMachine::ev_ready_received);
|
|
}
|
|
|
|
void impulseShardId(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// received SHARD_ID
|
|
|
|
uint32 shardId;
|
|
impulse.serial(shardId);
|
|
ShardId = shardId;
|
|
|
|
string webHost;
|
|
impulse.serial(webHost);
|
|
if (!webHost.empty())
|
|
{
|
|
WebServer = webHost;
|
|
}
|
|
|
|
nlinfo("WEB: Received SHARD_ID %d, web hosted at '%s', using '%s'", shardId, webHost.c_str(), WebServer.c_str());
|
|
}
|
|
|
|
void impulseServerQuitOk(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// receive CONNECTION:SERVER_QUIT_OK
|
|
if (FarTP.isFarTPInProgress())
|
|
{
|
|
FarTP.onServerQuitOk();
|
|
}
|
|
else
|
|
{
|
|
// ensure first a quit request is really asked
|
|
if(game_exit_request)
|
|
{
|
|
// quit!
|
|
game_exit= true;
|
|
ryzom_exit= true;
|
|
}
|
|
}
|
|
}
|
|
|
|
void impulseServerQuitAbort(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// receive CONNECTION:SERVER_QUIT_ABORT
|
|
if (FarTP.isFarTPInProgress())
|
|
{
|
|
FarTP.onServerQuitAbort();
|
|
}
|
|
else
|
|
{
|
|
// abort any quit request
|
|
game_exit_request= false;
|
|
ryzom_exit_request= false;
|
|
}
|
|
}
|
|
|
|
void impulseMailNotification(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
// receive CONNECTION:MAIL_AVAILABLE
|
|
CInterfaceManager::getInstance()->notifyMailAvailable();
|
|
}
|
|
|
|
void impulseForumNotification(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
// receive CONNECTION:GUILD_MESSAGE_AVAILABLE
|
|
CInterfaceManager::getInstance()->notifyForumUpdated();
|
|
|
|
}
|
|
|
|
void impulsePermanentBan(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint64 magicNumber;
|
|
impulse.serial(magicNumber);
|
|
if (magicNumber != PermanentBanMSGMagicNumber) return; // bad msg
|
|
setPermanentBanMarkers(true);
|
|
applyPermanentBanPunishment();
|
|
PermanentlyBanned = true;
|
|
}
|
|
|
|
void impulsePermanentUnban(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint64 magicNumber;
|
|
impulse.serial(magicNumber);
|
|
if (magicNumber != PermanentUnbanMSGMagicNumber) return; // bad msg
|
|
setPermanentBanMarkers(false);
|
|
PermanentlyBanned = false;
|
|
if (UserEntity)
|
|
{
|
|
// allows to walk / run again
|
|
UserEntity->walkVelocity(ClientCfg.Walk);
|
|
UserEntity->runVelocity(ClientCfg.Run);
|
|
}
|
|
}
|
|
|
|
|
|
// ***************************************************************************
|
|
class CInterfaceChatDisplayer : public CClientChatManager::IChatDisplayer
|
|
{
|
|
public:
|
|
virtual void displayChat(TDataSetIndex compressedSenderIndex, const ucstring &ucstr, const ucstring &rawMessage, CChatGroup::TGroupType mode, NLMISC::CEntityId dynChatId, ucstring &senderName, uint bubbleTimer=0);
|
|
virtual void displayTell(/*TDataSetIndex senderIndex, */const ucstring &ucstr, const ucstring &senderName);
|
|
virtual void clearChannel(CChatGroup::TGroupType mode, uint32 dynChatDbIndex);
|
|
|
|
private:
|
|
// Add colorization tag for sender name
|
|
void colorizeSender(ucstring &text, const ucstring &senderName, CRGBA baseColor);
|
|
|
|
};
|
|
static CInterfaceChatDisplayer InterfaceChatDisplayer;
|
|
|
|
void CInterfaceChatDisplayer::colorizeSender(ucstring &text, const ucstring &senderName, CRGBA baseColor)
|
|
{
|
|
// find the sender/text separator to put color tags
|
|
ucstring::size_type pos = senderName.length() - 1;
|
|
if (pos != ucstring::npos)
|
|
{
|
|
ucstring str;
|
|
|
|
CInterfaceProperty prop;
|
|
prop.readRGBA("UI:SAVE:CHAT:COLORS:SPEAKER"," ");
|
|
|
|
CChatWindow::encodeColorTag(prop.getRGBA(), str, false);
|
|
|
|
str += text.substr(0, pos+1);
|
|
|
|
CChatWindow::encodeColorTag(baseColor, str, true);
|
|
|
|
str += text.substr(pos+1);
|
|
|
|
text.swap(str);
|
|
}
|
|
}
|
|
|
|
// display a chat from network to interface
|
|
void CInterfaceChatDisplayer::displayChat(TDataSetIndex compressedSenderIndex, const ucstring &ucstr, const ucstring &rawMessage, CChatGroup::TGroupType mode, NLMISC::CEntityId dynChatId, ucstring &senderName, uint bubbleTimer)
|
|
{
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
ucstring finalString;
|
|
string stringCategory = getStringCategory(ucstr, finalString);
|
|
|
|
bool bubbleWanted = true;
|
|
|
|
// Subtract rawMessage from ucstr so that the 'sender' part remains.
|
|
ucstring senderPart = ucstr.luabind_substr(0, ucstr.length() - rawMessage.length());
|
|
|
|
// search a "{no_bubble}" tag
|
|
{
|
|
ucstring::size_type index = finalString.find(ucstring("{no_bubble}"));
|
|
const size_t tokenSize= 11; // length of "{no_bubble}"
|
|
if (index != ucstring::npos)
|
|
{
|
|
bubbleWanted = false;
|
|
finalString = finalString.luabind_substr(0, index) + finalString.substr(index+tokenSize,finalString.size());
|
|
}
|
|
}
|
|
|
|
|
|
// **** get color
|
|
CRGBA col;
|
|
if (mode != CChatGroup::system)
|
|
{
|
|
// Remove all {break}
|
|
for(;;)
|
|
{
|
|
ucstring::size_type index = finalString.find(ucstring("{break}"));
|
|
if (index == ucstring::npos) break;
|
|
finalString = finalString.luabind_substr(0, index) + finalString.luabind_substr(index+7,finalString.size());
|
|
}
|
|
|
|
// select DB
|
|
sint32 dbIndex = ChatMngr.getDynamicChannelDbIndexFromId(dynChatId);
|
|
clamp(dbIndex, (sint32)0 , (sint32)CChatGroup::MaxDynChanPerPlayer);
|
|
string entry="UI:SAVE:CHAT:COLORS:";
|
|
switch(mode)
|
|
{
|
|
case CChatGroup::dyn_chat: entry+="DYN:" + NLMISC::toString(dbIndex); break;
|
|
case CChatGroup::say: entry+="SAY"; break;
|
|
case CChatGroup::shout: entry+="SHOUT"; break;
|
|
case CChatGroup::team: entry+="GROUP"; break;
|
|
case CChatGroup::guild: entry+="CLADE"; break;
|
|
case CChatGroup::civilization: entry+="CIVILIZATION"; break;
|
|
case CChatGroup::territory: entry+="TERRITORY"; break;
|
|
case CChatGroup::universe: entry+="UNIVERSE_NEW"; break;
|
|
case CChatGroup::region: entry+="REGION"; break;
|
|
case CChatGroup::tell: entry+="TELL"; break;
|
|
default: nlwarning("unknown group type"); return;
|
|
}
|
|
|
|
// read DB
|
|
CInterfaceProperty prop;
|
|
prop.readRGBA(entry.c_str()," ");
|
|
col = prop.getRGBA();
|
|
|
|
// Override color if the string contains the color
|
|
if (!stringCategory.empty() && stringCategory != "SYS")
|
|
{
|
|
map<string, CClientConfig::SSysInfoParam>::const_iterator it;
|
|
it = ClientCfg.SystemInfoParams.find(toLower(stringCategory));
|
|
if (it != ClientCfg.SystemInfoParams.end())
|
|
{
|
|
col = it->second.Color;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (stringCategory == "emt")
|
|
{
|
|
bubbleWanted = false;
|
|
}
|
|
|
|
if (mode != CChatGroup::system)
|
|
{
|
|
// find the sender/text separator to put color tags
|
|
if (senderPart.empty() && stringCategory == "emt")
|
|
{
|
|
size_t pos = finalString.find(ucstring(": "), 0);
|
|
if (pos != ucstring::npos)
|
|
{
|
|
senderPart = finalString.luabind_substr(0, pos + 2);
|
|
}
|
|
}
|
|
colorizeSender(finalString, senderPart, col);
|
|
}
|
|
|
|
// play associated fx if any
|
|
if( !stringCategory.empty() )
|
|
{
|
|
map<string, CClientConfig::SSysInfoParam>::const_iterator it;
|
|
it = ClientCfg.SystemInfoParams.find( toLower(stringCategory) );
|
|
if( it != ClientCfg.SystemInfoParams.end() )
|
|
{
|
|
if( !(*it).second.SysInfoFxName.empty() )
|
|
{
|
|
NL3D::UParticleSystemInstance sysInfoFx = FXMngr.instantFX((*it).second.SysInfoFxName);
|
|
if( !sysInfoFx.empty() )
|
|
{
|
|
sysInfoFx.setClusterSystem( UserEntity->getClusterSystem() );
|
|
sysInfoFx.setPos( UserEntity->pos() );
|
|
}
|
|
else
|
|
{
|
|
nlwarning("<CInterfaceChatDisplayer::displayChat> Can't set chat fx %s",(*it).second.SysInfoFxName.c_str());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// **** redirect to the correct interface output
|
|
if( stringCategory != "bbl" )
|
|
{
|
|
bool windowVisible;
|
|
if (mode == CChatGroup::system)
|
|
{
|
|
pIM->displaySystemInfo(finalString, stringCategory);
|
|
}
|
|
else if (mode == CChatGroup::guild)
|
|
{
|
|
PeopleInterraction.ChatInput.Guild.displayMessage(finalString, col, 2, &windowVisible);
|
|
}
|
|
else if (mode == CChatGroup::team)
|
|
{
|
|
PeopleInterraction.ChatInput.Team.displayMessage(finalString, col, 2, &windowVisible);
|
|
}
|
|
else if (mode == CChatGroup::region)
|
|
{
|
|
PeopleInterraction.ChatInput.Region.displayMessage(finalString, col, 2, &windowVisible);
|
|
}
|
|
else if (mode == CChatGroup::universe)
|
|
{
|
|
PeopleInterraction.ChatInput.Universe.displayMessage(finalString, col, 2, &windowVisible);
|
|
}
|
|
else if (mode == CChatGroup::dyn_chat)
|
|
{
|
|
// retrieve the DBIndex from the dynamic chat id
|
|
sint32 dbIndex= ChatMngr.getDynamicChannelDbIndexFromId(dynChatId);
|
|
// if found, display, else discarded
|
|
if(dbIndex >= 0 && dbIndex < CChatGroup::MaxDynChanPerPlayer)
|
|
{
|
|
PeopleInterraction.ChatInput.DynamicChat[dbIndex].displayMessage(finalString, col, 2, &windowVisible);
|
|
|
|
// Add dynchannel info before text so that the chat log will show the correct string.
|
|
CCDBNodeLeaf* node = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:SHOW_DYN_CHANNEL_NAME_IN_CHAT_CB", false);
|
|
if (pIM->getLogState())
|
|
{
|
|
// Add dyn chan number before string
|
|
ucstring prefix("[" + NLMISC::toString(dbIndex) + "]");
|
|
// Find position to put the new string
|
|
// After timestamp?
|
|
size_t pos = finalString.find(ucstring("]"));
|
|
size_t colonpos = finalString.find(ucstring(": @{"));
|
|
// If no ] found or if found but after the colon (so part of the user chat)
|
|
if (pos == ucstring::npos || (colonpos < pos))
|
|
{
|
|
// No timestamp, so put it right after the color and add a space
|
|
pos = finalString.find(ucstring("}"));;
|
|
prefix += " ";
|
|
}
|
|
finalString = finalString.substr(0, pos + 1) + prefix + finalString.substr(pos + 1);
|
|
|
|
if (node && node->getValueBool())
|
|
{
|
|
uint32 textId = ChatMngr.getDynamicChannelNameFromDbIndex(dbIndex);
|
|
ucstring title;
|
|
STRING_MANAGER::CStringManagerClient::instance()->getDynString(textId, title);
|
|
prefix = title.empty() ? ucstring("") : ucstring(" ") + title;
|
|
pos = finalString.find(ucstring("] "));
|
|
finalString = finalString.substr(0, pos) + prefix + finalString.substr(pos);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
nlwarning("Dynamic chat %s not found for message: %s", dynChatId.toString().c_str(), finalString.toString().c_str());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ucstring::size_type index = finalString.find(ucstring("<BPFX>"));
|
|
if (index != ucstring::npos)
|
|
{
|
|
bubbleWanted = false;
|
|
finalString = finalString.substr(index+6,finalString.size());
|
|
ucstring::size_type index2 = finalString.find(ucstring(" "));
|
|
ucstring playerName;
|
|
if (index2 < (finalString.size()-3))
|
|
{
|
|
playerName = finalString.substr(0,index2);
|
|
finalString = finalString.substr(index2+1,finalString.size());
|
|
}
|
|
if (!senderName.empty())
|
|
{
|
|
CEntityCL *senderEntity = EntitiesMngr.getEntityByName (CEntityCL::removeTitleAndShardFromName(senderName), true, true);
|
|
if (senderEntity)
|
|
{
|
|
if (senderEntity->Type != CEntityCL::Player)
|
|
{
|
|
if (playerName.empty())
|
|
{
|
|
senderEntity->removeStateFx();
|
|
senderEntity->setStateFx(finalString.toString());
|
|
nlinfo("empty");
|
|
}
|
|
else
|
|
{
|
|
CEntityCL *destEntity = EntitiesMngr.getEntityByName (CEntityCL::removeTitleAndShardFromName(playerName), false, true);
|
|
if (destEntity)
|
|
{
|
|
destEntity->removeStateFx();
|
|
destEntity->setStateFx(finalString.toString());
|
|
nlinfo("no empty");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
finalString.clear();
|
|
}
|
|
else
|
|
{
|
|
PeopleInterraction.ChatInput.AroundMe.displayMessage(finalString, col, 2, &windowVisible);
|
|
}
|
|
}
|
|
// if tell, bkup sendername
|
|
if (mode == CChatGroup::tell && windowVisible && !senderName.empty())
|
|
{
|
|
PeopleInterraction.LastSenderName = CEntityCL::removeTitleAndShardFromName(senderName);
|
|
}
|
|
}
|
|
|
|
// received CHAT
|
|
//nldebug("<impulseChat> Received CHAT : %s with category %s",finalString.toString().c_str(),stringCategory.c_str());
|
|
|
|
|
|
// **** Process chat entry for the bubbles
|
|
// todo hulud : registering a chat callback would be better than calling this hardcoded action handler
|
|
ucstring finalRawMessage;
|
|
// remove color qualifier from raw string
|
|
getStringCategory(rawMessage, finalRawMessage);
|
|
if (bubbleWanted)
|
|
{
|
|
InSceneBubbleManager.chatOpen(compressedSenderIndex, finalRawMessage, bubbleTimer);
|
|
}
|
|
|
|
// Log
|
|
|
|
string channel;
|
|
if (mode == CChatGroup::dyn_chat)
|
|
{
|
|
sint32 dbIndex = ChatMngr.getDynamicChannelDbIndexFromId(dynChatId);
|
|
clamp(dbIndex, (sint32)0 , (sint32)CChatGroup::MaxDynChanPerPlayer);
|
|
|
|
channel = "dyn" + toString(dbIndex);
|
|
}
|
|
else
|
|
{
|
|
channel = CChatGroup::groupTypeToString(mode);
|
|
if (channel.empty())
|
|
{
|
|
channel = "#" + toString((uint32)mode);
|
|
}
|
|
}
|
|
if (!stringCategory.empty() && NLMISC::toUpper(stringCategory) != "SYS")
|
|
{
|
|
channel = channel + "/" + stringCategory;
|
|
}
|
|
pIM->log (finalString, channel);
|
|
|
|
}
|
|
|
|
|
|
// display a tell from network to interface
|
|
void CInterfaceChatDisplayer::displayTell(/*TDataSetIndex senderIndex, */const ucstring &ucstr, const ucstring &senderName)
|
|
{
|
|
|
|
ucstring finalString = ucstr;
|
|
|
|
// for now, '&' are removed by server so use another format until a special msg is made
|
|
if (strFindReplace(finalString, ucstring("<R2_INVITE>"), ucstring()))
|
|
{
|
|
CLuaManager::getInstance().executeLuaScript("RingAccessPoint:forceRefresh()");
|
|
}
|
|
|
|
|
|
CInterfaceProperty prop;
|
|
prop.readRGBA("UI:SAVE:CHAT:COLORS:TELL"," ");
|
|
bool windowVisible;
|
|
|
|
ucstring goodSenderName = CEntityCL::removeTitleAndShardFromName(senderName);
|
|
|
|
// The sender part is up to and including the first ":" after the goodSenderName
|
|
ucstring::size_type pos = finalString.find(goodSenderName);
|
|
pos = finalString.find(':', pos);
|
|
pos = finalString.find(' ', pos);
|
|
ucstring senderPart = finalString.substr(0, pos+1);
|
|
colorizeSender(finalString, senderPart, prop.getRGBA());
|
|
|
|
PeopleInterraction.ChatInput.Tell.displayTellMessage(/*senderIndex, */finalString, goodSenderName, prop.getRGBA(), 2, &windowVisible);
|
|
CInterfaceManager::getInstance()->log(finalString, CChatGroup::groupTypeToString(CChatGroup::tell));
|
|
|
|
// Open the free teller window
|
|
CChatGroupWindow *pCGW = PeopleInterraction.getChatGroupWindow();
|
|
if (pCGW != NULL)
|
|
pCGW->setActiveFreeTeller(goodSenderName);
|
|
|
|
if (windowVisible && !goodSenderName.empty())
|
|
PeopleInterraction.LastSenderName = goodSenderName;
|
|
}
|
|
|
|
// clear a channel
|
|
void CInterfaceChatDisplayer::clearChannel(CChatGroup::TGroupType mode, uint32 dynChatDbIndex)
|
|
{
|
|
if (mode == CChatGroup::guild) PeopleInterraction.ChatInput.Guild.clearMessages();
|
|
else if (mode == CChatGroup::team) PeopleInterraction.ChatInput.Team.clearMessages();
|
|
else if (mode == CChatGroup::region) PeopleInterraction.ChatInput.Region.clearMessages();
|
|
else if (mode == CChatGroup::arround) PeopleInterraction.ChatInput.AroundMe.clearMessages();
|
|
else if (mode == CChatGroup::universe) PeopleInterraction.ChatInput.Universe.clearMessages();
|
|
else if (mode == CChatGroup::dyn_chat)
|
|
{
|
|
// if correct dbIndex, clear
|
|
if(dynChatDbIndex<CChatGroup::MaxDynChanPerPlayer)
|
|
PeopleInterraction.ChatInput.DynamicChat[dynChatDbIndex].clearMessages();
|
|
else
|
|
nlwarning("Dynamic chat %d not found for clearing", dynChatDbIndex);
|
|
}
|
|
|
|
// don't support other for now (NB: actually used only for dyn_chat)
|
|
}
|
|
|
|
|
|
// ***************************************************************************
|
|
void impulseChat(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
ChatMngr.processChatString(impulse, InterfaceChatDisplayer);
|
|
}
|
|
|
|
void impulseChat2(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
ChatMngr.processChatString2(impulse, InterfaceChatDisplayer);
|
|
}
|
|
|
|
void impulseTell(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
ChatMngr.processTellString(impulse, InterfaceChatDisplayer);
|
|
}
|
|
|
|
void impulseFarTell(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
ChatMngr.processFarTellString(impulse, InterfaceChatDisplayer);
|
|
}
|
|
|
|
void impulseTell2(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
ChatMngr.processTellString2(impulse, InterfaceChatDisplayer);
|
|
}
|
|
|
|
void impulseDynString(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
ChatMngr.processChatStringWithNoSender(impulse, CChatGroup::system, InterfaceChatDisplayer);
|
|
}
|
|
|
|
void inpulseDynStringInChatGroup(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CChatGroup::TGroupType type = CChatGroup::say;
|
|
impulse.serialEnum(type);
|
|
ChatMngr.processChatStringWithNoSender(impulse, type, InterfaceChatDisplayer);
|
|
}
|
|
|
|
// ***************************************************************************
|
|
//void impulseAddDynStr(NLMISC::CBitMemStream &impulse)
|
|
//{
|
|
// bool huff = false;
|
|
// impulse.serialBit(huff);
|
|
//
|
|
// uint32 index;
|
|
// ucstring ucstr;
|
|
//
|
|
// impulse.serial( index );
|
|
// impulse.serial( ucstr );
|
|
//
|
|
// vector<bool> code;
|
|
// if( huff )
|
|
// {
|
|
// impulse.serialCont( code );
|
|
// }
|
|
// if (PermanentlyBanned) return;
|
|
// #ifdef OLD_STRING_SYSTEM
|
|
// ChatMngr.getDynamicDB().add( index, ucstr, code );
|
|
// #else
|
|
// nlwarning( "// TRAP // WE MUST NEVER CALL THIS IMPULE ANYMORE : ALL IS HANDLED BY STRING_MANAGER NOW !!!" );
|
|
// #endif
|
|
//
|
|
// // received ADD_DYN_STR
|
|
// nlinfo("impulseCallBack : Received ADD_DYN_STR : adding %s at index %d",ucstr.toString().c_str(),index);
|
|
//}
|
|
/*
|
|
string getInterfaceNameFromId (sint botType, sint interfaceId)
|
|
{
|
|
string interfaceName = "ui:interface:bot_chat_";
|
|
|
|
switch (botType)
|
|
{
|
|
case 0: interfaceName += "figurant_"; break;
|
|
case 1: interfaceName += "figurant_presse_"; break;
|
|
case 2: interfaceName += "chef_village_"; break;
|
|
default: interfaceName += "figurant_"; break;
|
|
}
|
|
|
|
switch (interfaceId)
|
|
{
|
|
case BOTCHATTYPE::Intro: interfaceName += "intro"; break;
|
|
case BOTCHATTYPE::FriendlyMainPage: interfaceName += "friendly_main"; break;
|
|
case BOTCHATTYPE::NeutralMainPage: interfaceName += "neutral_main"; break;
|
|
case BOTCHATTYPE::NastyMainPage: interfaceName += "nasty_main"; break;
|
|
case BOTCHATTYPE::MoreNewsPage: interfaceName += "more_news"; break;
|
|
case BOTCHATTYPE::Done: nlinfo ("end of bot chat"); interfaceName.clear(); break;
|
|
}
|
|
return interfaceName;
|
|
}
|
|
|
|
static char *shortNews[] = {
|
|
"The wind is sour and brings only bad tidings...", "Kitins have been sighted near the village!", "",
|
|
"The tribe of the Black Circle has recently", "increased its activities in our region.", "",
|
|
"The Black Circle has made an incursion", "into our territory!", "",
|
|
"The Black Circle has been sighted near one", "of our forward posts, deep in dangerous territory.", "",
|
|
"The tide has washed up evil news, friend.", "The Black Circle is active in our region.", "",
|
|
"Our people suffer from a debilitating shortage.", "We are in sore need of KamiBast.", "",
|
|
"The economy is slow and our reserve of", "Live Seed low.", "",
|
|
"We are in sore need of Live Seed", "If there is a Goo epidemic, we shall all perish!", "",
|
|
"Our master mages have gotten wind of", "the growing Kami discontentment", "",
|
|
};
|
|
|
|
static char *longNews[] = {
|
|
"These powerful predators haven't come this near", "to the village since their devastating attack", "over 15 seasons ago!",
|
|
"They are after more KamiBast", "for their occult practices.", "",
|
|
"They have captured", "2 of our fortifications in the bush!", "",
|
|
"They have taken over one of our richest sources", "of KamiBast, and are exploiting it", "for their own occult purposes.",
|
|
"They now hold an important source", "of Live Seed hostage,", "close to one of our forward posts.",
|
|
"We use the magical properties of KamiBast and", "its unusually rich fibers for all our crafts.", "",
|
|
"If we don't harvest new Seed soon,", "we will have no way of purchasing goods", "and resources, beyond what we produce ourselves",
|
|
"We use the rich Sap of Live Seed to produce", "an antidote that counters the disastrous", "effects of the Goo on all Atysian life forms.",
|
|
"The Kamis are shaken by the Black Circle's", "presence. If the Circle continues it's occult", "practices, we will all suffer the Kamic anger.",
|
|
};
|
|
*/
|
|
/*
|
|
void setFakeNews ()
|
|
{
|
|
char *table[] = { "figurant", "chef_village", "garde", "commercant" };
|
|
|
|
sint rnd = rand ()%(sizeof(shortNews)/sizeof(shortNews[0])/3);
|
|
rnd;
|
|
|
|
for (uint i = 0; i < sizeof(table)/sizeof(table[0]); i++)
|
|
{
|
|
{ // set test for the friendly main
|
|
string iname;
|
|
iname = "ui:interface:bot_chat_";
|
|
iname += table[i];
|
|
iname += "_friendly_main";
|
|
|
|
CInterfaceGroup *inter = CWidgetManager::getInstance()->getWindowFromId(iname);
|
|
if (inter == NULL)
|
|
{
|
|
nlwarning ("cant find interface 's%'", iname.c_str());
|
|
continue;
|
|
}
|
|
|
|
CViewText *inter2 = (CViewText *)inter->getView("title0");
|
|
nlassert (inter2 != NULL);
|
|
inter2->setText(ucstring(shortNews[rnd*3]));
|
|
|
|
CViewText *inter3 = (CViewText *)inter->getView("title1");
|
|
nlassert (inter3 != NULL);
|
|
inter3->setText(ucstring(shortNews[rnd*3+1]));
|
|
|
|
CViewText *inter4 = (CViewText *)inter->getView("title2");
|
|
nlassert (inter4 != NULL);
|
|
inter4->setText(ucstring(shortNews[rnd*3+2]));
|
|
}
|
|
{ // set test for the neutral main
|
|
string iname;
|
|
iname = "ui:interface:bot_chat_";
|
|
iname += table[i];
|
|
iname += "_neutral_main";
|
|
|
|
CInterfaceGroup *inter = CWidgetManager::getInstance()->getWindowFromId(iname);
|
|
if (inter == NULL)
|
|
{
|
|
nlwarning ("cant find interface 's%'", iname.c_str());
|
|
continue;
|
|
}
|
|
|
|
CViewText *inter2 = (CViewText *)inter->getView("title0");
|
|
nlassert (inter2 != NULL);
|
|
inter2->setText(ucstring(shortNews[rnd*3]));
|
|
|
|
CViewText *inter3 = (CViewText *)inter->getView("title1");
|
|
nlassert (inter3 != NULL);
|
|
inter3->setText(ucstring(shortNews[rnd*3+1]));
|
|
}
|
|
{ // set test for the more news
|
|
string iname;
|
|
iname = "ui:interface:bot_chat_";
|
|
iname += table[i];
|
|
iname += "_more_news";
|
|
|
|
CInterfaceGroup *inter = CWidgetManager::getInstance()->getWindowFromId(iname);
|
|
if (inter == NULL)
|
|
{
|
|
nlwarning ("cant find interface 's%'", iname.c_str());
|
|
continue;
|
|
}
|
|
|
|
CViewText *inter2 = (CViewText *)inter->getView("title0");
|
|
nlassert (inter2 != NULL);
|
|
inter2->setText(ucstring(longNews[rnd*3]));
|
|
|
|
CViewText *inter3 = (CViewText *)inter->getView("title1");
|
|
nlassert (inter3 != NULL);
|
|
inter3->setText(ucstring(longNews[rnd*3+1]));
|
|
|
|
CViewText *inter4 = (CViewText *)inter->getView("title2");
|
|
nlassert (inter4 != NULL);
|
|
inter4->setText(ucstring(longNews[rnd*3+2]));
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
//=========================================
|
|
/** Temp setup for choice list
|
|
*/
|
|
/*
|
|
static void setupBotChatChoiceList(CInterfaceGroup *botChatGroup)
|
|
{
|
|
// Temp for test. Should then be read from server msg
|
|
std::vector<ucstring> choices;
|
|
for(uint k = 0; k < 90; ++k)
|
|
{
|
|
choices.push_back("Choice " + toString(k));
|
|
}
|
|
CBotChat::setChoiceList(botChatGroup, choices, false);
|
|
}
|
|
*/
|
|
|
|
//=========================================
|
|
/** Temp setup for description list
|
|
*/
|
|
/*
|
|
static void setupBotChatDescription(CInterfaceGroup *botChatGroup)
|
|
{
|
|
ucstring desc;
|
|
for(uint k = 0; k < 90; ++k)
|
|
{
|
|
desc += "This is a multi line description. ";
|
|
}
|
|
CBotChat::setDescription(botChatGroup, desc);
|
|
}
|
|
*/
|
|
|
|
//=========================================
|
|
/** Temp setup for bot chat gift
|
|
*/
|
|
/*
|
|
static void setupBotChatBotGift(CInterfaceGroup *botChatGroup)
|
|
{
|
|
// create dummy item in the db
|
|
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
NLGUI::CDBManager::getInstance()->getDbProp("SERVER:INVENTORY:20:0:SHEET")->setValue32(CSheetId("ai_flesh_poisson.item").asInt());
|
|
NLGUI::CDBManager::getInstance()->getDbProp("SERVER:INVENTORY:20:0:QUALITY")->setValue32(0);
|
|
NLGUI::CDBManager::getInstance()->getDbProp("SERVER:INVENTORY:20:1:SHEET")->setValue32(CSheetId("fyros_sword_lvl_01_05.item").asInt());
|
|
NLGUI::CDBManager::getInstance()->getDbProp("SERVER:INVENTORY:20:1:QUALITY")->setValue32(2);
|
|
CBotChat::setBotGift(botChatGroup, ucstring("Thanks to have succeeded the mission"), ucstring("Here's your reward"), ucstring("The bot has taken the object quest from your inventory"));
|
|
}
|
|
*/
|
|
|
|
//-----------------------------------------------
|
|
// impulseBotChatSetInterface :
|
|
//-----------------------------------------------
|
|
#if 0
|
|
void impulseBotChatSetInterface(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// received ADD_DYN_STR
|
|
|
|
CEntityId user;
|
|
uint32 happyness;
|
|
BOTCHATTYPE::TBotChatInterfaceId interfaceId;
|
|
bool hasNews;
|
|
|
|
impulse.serial (user);
|
|
impulse.serial (happyness);
|
|
|
|
// impulse.serialEnum (interfaceId);
|
|
uint16 interfId;
|
|
impulse.serial(interfId);
|
|
interfaceId = (BOTCHATTYPE::TBotChatInterfaceId)(interfId&0xff);
|
|
uint8 botType = (interfId>>8) & 0xff;
|
|
|
|
impulse.serial (hasNews);
|
|
|
|
nldebug("impulseCallBack : Received BOT_CHAT:SET_INTERFACE interface %d, have news %s, happy %d, bottype %hu", interfaceId, hasNews?"yes":"no", happyness,(uint16)botType);
|
|
|
|
string stringId;
|
|
vector<uint64> args;
|
|
if (hasNews)
|
|
{
|
|
|
|
/* impulse.serial (stringId);
|
|
impulse.serialCont (args);
|
|
nlinfo ("receive the news '%s' with %d args", stringId.c_str(), args.size());
|
|
*/
|
|
// TEMP FOR THE DEMO, DON'T USE THE NETWORK NEW BUT SELECT A NEWS HERE
|
|
/*
|
|
CInterfaceGroup *inter = CWidgetManager::getInstance()->getWindowFromId("ui:interface:bot_chat_intro");
|
|
nlassert (inter != NULL);
|
|
inter->setActive(true);
|
|
|
|
CViewText *inter2 = (CViewText *)inter->getView("hi");
|
|
nlassert (inter2 != NULL);
|
|
inter2->NetworkTextId.setString("IOS_NEWS_FOOTBALL_SHORT_EEII", &ChatMngr);
|
|
inter2->NetworkTextId.Args.push_back(10);
|
|
inter2->NetworkTextId.Args.push_back(20);
|
|
inter2->NetworkTextId.Args.push_back(1);
|
|
inter2->NetworkTextId.Args.push_back(2);
|
|
*/ }
|
|
|
|
// FOR THE DEMO, find and set a fake news:
|
|
// setFakeNews ();
|
|
|
|
string interfaceName = getInterfaceNameFromId (botType, interfaceId);
|
|
|
|
if(interfaceName.empty())
|
|
{
|
|
nlwarning ("Received an unknown bot chat interface %d", interfaceId);
|
|
}
|
|
else
|
|
{
|
|
CInterfaceGroup *inter = CWidgetManager::getInstance()->getWindowFromId(interfaceName);
|
|
if (inter == NULL)
|
|
{
|
|
nlwarning ("Can't find interface name '%s' %d", interfaceName.c_str(), interfaceId);
|
|
}
|
|
else
|
|
{
|
|
CInterfaceManager::getInstance()->setBotChatWin(inter);
|
|
if (inter->getActive())
|
|
{
|
|
nlwarning ("Interface %s is already active, not normal!", interfaceName.c_str());
|
|
}
|
|
else
|
|
{
|
|
nlinfo ("server want to me display the bot chat interface %s %d", interfaceName.c_str(), interfaceId);
|
|
inter->setActive(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseBeginTrade :
|
|
//-----------------------------------------------
|
|
void impulseBeginTrade(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
//open trade window
|
|
CInterfaceGroup* win = CWidgetManager::getInstance()->getWindowFromId("ui:interface:trade");
|
|
if (!win)
|
|
{
|
|
nlwarning("invalid interface ui:interface:trade");
|
|
return;
|
|
}
|
|
win->setActive(true);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseBuyPrice :
|
|
//-----------------------------------------------
|
|
void impulseBuyPrice(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint16 botChatSession;
|
|
uint32 sheetID;
|
|
uint16 quality;
|
|
uint64 price;
|
|
impulse.serial(botChatSession);
|
|
impulse.serial(price);
|
|
impulse.serial(sheetID);
|
|
impulse.serial(quality);
|
|
// no more used
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseDynChatOpen
|
|
//-----------------------------------------------
|
|
void impulseDynChatOpen(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 BotUID; // Compressed Index
|
|
uint32 BotName; // Server string
|
|
vector<uint32> DynStrs; // 0 - Desc, 1 - Option0, 2 - Option1, etc....
|
|
impulse.serial(BotUID);
|
|
impulse.serial(BotName);
|
|
impulse.serialCont(DynStrs);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
/* string sTmp = "impulseCallback : Received BOTCHAT:DYNCHAT_OPEN BotUID:";
|
|
sTmp += toString(BotUID) + " BotName:";
|
|
sTmp += toString(BotName) + " DynStrs:";
|
|
for (uint32 i = 0; i < DynStrs.size(); ++i)
|
|
{
|
|
sTmp += toString(DynStrs[i]);
|
|
if (i != DynStrs.size()-1) sTmp += ",";
|
|
}
|
|
nlinfo(sTmp.c_str());*/
|
|
|
|
InSceneBubbleManager.dynChatOpen(BotUID, BotName, DynStrs);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseDynChatClose
|
|
//-----------------------------------------------
|
|
void impulseDynChatClose(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 BotUID; // Compressed Index
|
|
impulse.serial(BotUID);
|
|
if (PermanentlyBanned) return;
|
|
//nlinfo("impulseCallback : Received BOTCHAT:DYNCHAT_CLOSE BotUID:"+toString(BotUID));
|
|
InSceneBubbleManager.dynChatClose(BotUID);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseBeginCast:
|
|
//-----------------------------------------------
|
|
void impulseBeginCast(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//open cast window
|
|
uint32 begin,end;
|
|
impulse.serial(begin);
|
|
impulse.serial(end);
|
|
if (PermanentlyBanned) return;
|
|
CInterfaceManager* iMngr = CInterfaceManager::getInstance();
|
|
NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:SPELL_CAST")->setValue32(1);
|
|
NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:CAST_BEGIN")->setValue32(begin);
|
|
NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:CAST_END")->setValue32(end);
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseCorrectPos :
|
|
// Message from the server to correct the user position because he is not at the same position on the server..
|
|
//-----------------------------------------------
|
|
void impulseCorrectPos(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// TP:CORRECT
|
|
//nlinfo("impulseCallback : Received TP:CORRECT");
|
|
sint32 x, y, z;
|
|
impulse.serial(x);
|
|
impulse.serial(y);
|
|
impulse.serial(z);
|
|
nlinfo("impulseCorrectPos: new user position %d %d %d", x, y, z);
|
|
|
|
if(UserEntity->mode() != MBEHAV::COMBAT_FLOAT)
|
|
{
|
|
// Compute the destination.
|
|
CVectorD dest = CVectorD((float)x/1000.0f, (float)y/1000.0f, (float)z/1000.0f);
|
|
// Update the position for the vision.
|
|
NetMngr.setReferencePosition(dest);
|
|
// Change the user poisition.
|
|
UserEntity->correctPos(dest);
|
|
}
|
|
}// impulseCorrectPos //
|
|
|
|
class CDummyProgress : public IProgressCallback
|
|
{
|
|
void progress (float /* value */) {}
|
|
};
|
|
|
|
//-----------------------------------------------
|
|
// impulseTP :
|
|
// Message from the server to teleport the user.
|
|
// \warning This function remove the current target. Do no use to correct a position.
|
|
//-----------------------------------------------
|
|
void impulseTPCommon(NLMISC::CBitMemStream &impulse, bool hasSeason);
|
|
void impulseTPCommon2(NLMISC::CBitMemStream &impulse, bool hasSeason);
|
|
|
|
void impulseTP(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
impulseTPCommon(impulse, false);
|
|
}
|
|
|
|
void impulseTPWithSeason(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
impulseTPCommon(impulse, true);
|
|
}
|
|
|
|
struct SQueuedTP
|
|
{
|
|
NLMISC::CBitMemStream Impulse;
|
|
bool HasSeason;
|
|
|
|
SQueuedTP(const NLMISC::CBitMemStream &impulse, bool hasSeason)
|
|
:Impulse(impulse), HasSeason(hasSeason)
|
|
{
|
|
}
|
|
};
|
|
|
|
// note - this method added by Sadge and Hamster to deal with unexplained recursive calls to impulseTPCommon
|
|
// these calls are provoked by the net manager update which is called during loading
|
|
void impulseTPCommon(NLMISC::CBitMemStream &impulse, bool hasSeason)
|
|
{
|
|
CNiceInputAuto niceInputs;
|
|
static std::list<SQueuedTP> queuedTPs;
|
|
SQueuedTP thisTP(impulse,hasSeason);
|
|
queuedTPs.push_back(thisTP);
|
|
|
|
BOMB_IF(queuedTPs.size()!=1,NLMISC::toString("Queueing recursive TPs depth=%u",queuedTPs.size()),return);
|
|
|
|
while(!queuedTPs.empty())
|
|
{
|
|
impulseTPCommon2(queuedTPs.front().Impulse,queuedTPs.front().HasSeason);
|
|
queuedTPs.pop_front();
|
|
};
|
|
|
|
}
|
|
|
|
|
|
void impulseTPCommon2(NLMISC::CBitMemStream &impulse, bool hasSeason)
|
|
{
|
|
// choose a default screen if not setuped
|
|
if( LoadingBackground!=ResurectKamiBackground && LoadingBackground!=ResurectKaravanBackground &&
|
|
LoadingBackground!=TeleportKamiBackground && LoadingBackground!=TeleportKaravanBackground)
|
|
LoadingBackground= TeleportKaravanBackground;
|
|
// if resurect but user not dead, choose default. NB: this is a bug, the tp impulse should tell
|
|
// which background to choose. \todo yoyo: this is a temp fix
|
|
if( UserEntity && !UserEntity->isDead() &&
|
|
(LoadingBackground==ResurectKamiBackground || LoadingBackground==ResurectKaravanBackground) )
|
|
LoadingBackground= TeleportKaravanBackground;
|
|
|
|
// Play music according to the background
|
|
if(SoundMngr)
|
|
{
|
|
LoadingMusic.clear();
|
|
if(LoadingBackground==TeleportKamiBackground)
|
|
LoadingMusic= "Kami Teleport.ogg";
|
|
else if(LoadingBackground==TeleportKaravanBackground)
|
|
LoadingMusic= "Karavan Teleport.ogg";
|
|
// if resurection, continue to play death music
|
|
else if(LoadingBackground==ResurectKamiBackground || LoadingBackground==ResurectKaravanBackground)
|
|
{
|
|
// noop
|
|
}
|
|
// default: loading music
|
|
else
|
|
{
|
|
LoadingMusic= "Loading Music Loop.ogg";
|
|
}
|
|
|
|
// start to play
|
|
SoundMngr->playEventMusic(LoadingMusic, CSoundManager::LoadingMusicXFade, true);
|
|
}
|
|
|
|
// Create the loading texture.
|
|
beginLoading (LoadingBackground);
|
|
|
|
// No ESCAPE key
|
|
UseEscapeDuringLoading = false;
|
|
|
|
// Change the tips
|
|
selectTipsOfTheDay (rand());
|
|
|
|
// start progress bar and display background
|
|
ProgressBar.reset (BAR_STEP_TP);
|
|
ucstring nmsg("Loading...");
|
|
ProgressBar.newMessage ( ClientCfg.buildLoadingString(nmsg) );
|
|
|
|
|
|
// received ADD_DYN_STR
|
|
nlinfo("impulseTP: received a request for a TP.");
|
|
sint32 x, y, z;
|
|
impulse.serial(x);
|
|
impulse.serial(y);
|
|
impulse.serial(z);
|
|
bool useHeading;
|
|
impulse.serialBit( useHeading );
|
|
// Is there an orientation too ?
|
|
if( useHeading )
|
|
{
|
|
float angle;
|
|
impulse.serial(angle);
|
|
nlinfo("impulseTP: to %d %d %d %f", x, y, z, angle);
|
|
CVector ori = CVector((float)cos(angle), (float)sin(angle), 0.0f);
|
|
ori.normalize();
|
|
UserEntity->dir(ori, false, false);
|
|
UserEntity->front(ori, false, false);
|
|
UserEntity->setHeadPitch(0);
|
|
UserControls.resetCameraDeltaYaw();
|
|
}
|
|
else
|
|
nlinfo("impulseTP: to %d %d %d", x, y, z);
|
|
|
|
if (hasSeason)
|
|
{
|
|
extern uint8 ServerSeasonValue;
|
|
extern bool ServerSeasonReceived;
|
|
impulse.serial(ServerSeasonValue);
|
|
ServerSeasonReceived = true;
|
|
}
|
|
|
|
if (ClientCfg.R2EDEnabled)
|
|
{
|
|
R2::getEditor().tpReceived();
|
|
}
|
|
|
|
// Compute the destination.
|
|
CVectorD dest = CVectorD((float)x/1000.0f, (float)y/1000.0f, (float)z/1000.0f);
|
|
// Update the position for the vision.
|
|
NetMngr.setReferencePosition(dest);
|
|
// Change the position of the entity and in Pacs.
|
|
UserEntity->pos(dest);
|
|
|
|
// Fade out the Game Sound
|
|
if(SoundMngr)
|
|
SoundMngr->fadeOutGameSound(ClientCfg.SoundTPFade);
|
|
|
|
|
|
R2::TTeleportContext tpContext = R2::TPContext_Unknown;
|
|
|
|
ucstring tpReason;
|
|
ucstring tpCancelText;
|
|
|
|
try
|
|
{
|
|
R2::TR2TpInfos tpInfos;
|
|
impulse.serial(tpInfos);
|
|
|
|
|
|
if ( tpInfos.UseTpMessage)
|
|
{
|
|
tpReason = CI18N::get(tpInfos.TpReasonId);
|
|
|
|
uint32 size = (uint32)tpInfos.TpReasonParams.size();
|
|
uint32 first = 0;
|
|
CSString str(tpReason.toString());
|
|
for (;first != size ; ++first)
|
|
{
|
|
std::string value = tpInfos.TpReasonParams[first];
|
|
std::string key = NLMISC::toString("%%%u", first +1);
|
|
str = str.replace( key.c_str(), value.c_str());
|
|
}
|
|
tpReason = ucstring(str);
|
|
tpCancelText = CI18N::get(tpInfos.TpCancelTextId);
|
|
tpContext = tpInfos.TpContext;
|
|
}
|
|
|
|
}
|
|
catch (const EStream &)
|
|
{
|
|
tpReason = ucstring("TP Reason");
|
|
tpCancelText = ucstring("Cancel TP"); // for test
|
|
// try to deduce tp context from current editor mode
|
|
switch (R2::getEditor().getMode())
|
|
{
|
|
case R2::CEditor::EditionMode:
|
|
case R2::CEditor::NotInitialized:
|
|
tpContext = R2::TPContext_Unknown;
|
|
tpReason = ucstring();
|
|
tpCancelText = ucstring();
|
|
break;
|
|
case R2::CEditor::GoingToDMMode:
|
|
case R2::CEditor::TestMode:
|
|
case R2::CEditor::DMMode:
|
|
tpContext = R2::TPContext_Edit;
|
|
break;
|
|
case R2::CEditor::AnimationModeLoading:
|
|
case R2::CEditor::AnimationModeWaitingForLoading:
|
|
case R2::CEditor::AnimationModeDm:
|
|
case R2::CEditor::AnimationModeGoingToDm:
|
|
tpContext = R2::TPContext_IslandOwner;
|
|
break;
|
|
case R2::CEditor::AnimationModePlay:
|
|
case R2::CEditor::AnimationModeGoingToPlay:
|
|
default:
|
|
tpContext = R2::TPContext_Mainland;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (!tpReason.empty())
|
|
{
|
|
std::string tpIcon;
|
|
switch(tpContext)
|
|
{
|
|
case R2::TPContext_Mainland: tpIcon = "cancel_tp_main_land.tga"; break;
|
|
case R2::TPContext_Edit: tpIcon = "cancel_tp_edit.tga"; break;
|
|
case R2::TPContext_IslandOwner: tpIcon = "cancel_tp_island_owner.tga"; break;
|
|
default: break;
|
|
}
|
|
ProgressBar.setTPMessages(tpReason, tpCancelText, tpIcon);
|
|
}
|
|
|
|
ProgressBar.progress(0);
|
|
// enable hardware mouse to allow to click the buttons
|
|
//bool oldHardwareCursor = IsMouseCursorHardware();
|
|
//InitMouseWithCursor(true);
|
|
// Select the closest continent from the new position.
|
|
ContinentMngr.select(dest, ProgressBar);
|
|
//
|
|
//InitMouseWithCursor(oldHardwareCursor);
|
|
|
|
// reset 'cancel' button
|
|
ProgressBar.setTPMessages(ucstring(), ucstring(), "");
|
|
|
|
|
|
// ProgressBar.enableQuitButton(false); // TMP TMP
|
|
ProgressBar.progress(1.f); // do a last display without the buttons because first frame may take a while to draw, and the buttons have no more effect at this point.
|
|
ProgressBar.finish();
|
|
// ProgressBar.enableQuitButton(true); // TMP TMP
|
|
|
|
// Teleport the User.
|
|
UserEntity->tp(dest);
|
|
|
|
// Msg Received, send an acknowledge after the landscape has been loaded.
|
|
CBitMemStream out;
|
|
if(GenericMsgHeaderMngr.pushNameToStream("TP:ACK", out))
|
|
{
|
|
NetMngr.push(out);
|
|
nlinfo("impulseTP: teleport acknowledge 'TP:ACK' sent.");
|
|
}
|
|
else
|
|
nlwarning("impulseTP: unknown message name : 'TP:ACK'.");
|
|
|
|
|
|
// First frame
|
|
FirstFrame = true;
|
|
|
|
|
|
// if tp canceling was asked, act accordingly
|
|
if (ProgressBar.getTPCancelFlag(true))
|
|
{
|
|
switch(tpContext)
|
|
{
|
|
case R2::TPContext_Mainland:
|
|
CAHManager::getInstance()->runActionHandler("return_to_mainland", NULL);
|
|
break;
|
|
case R2::TPContext_Edit:
|
|
CAHManager::getInstance()->runActionHandler("r2ed_stop_test", NULL);
|
|
break;
|
|
case R2::TPContext_IslandOwner:
|
|
CAHManager::getInstance()->runActionHandler("r2_stop_live", NULL);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
initHardwareCursor(true);
|
|
}// impulseTP //
|
|
|
|
//-----------------------------------------------
|
|
// impulseCombatEngageFailed :
|
|
//-----------------------------------------------
|
|
void impulseCombatEngageFailed(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
nlinfo("impulseCombatEngageFailed: Combat Engage Failed.");
|
|
|
|
// Unlock the motion.
|
|
UserControls.locked(false);
|
|
}// impulseCombatEngageFailed //
|
|
|
|
//-----------------------------------------------
|
|
// impulseTeamInvitation :
|
|
//-----------------------------------------------
|
|
void impulseTeamInvitation(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
nlinfo("impulseTeamInvitation: received an invitation");
|
|
|
|
uint32 textID;
|
|
impulse.serial(textID);
|
|
if (PermanentlyBanned) return;
|
|
|
|
CLuaManager::getInstance().executeLuaScript("game:onTeamInvation("+toString(textID)+")", 0);
|
|
}// impulseTeamInvitation //
|
|
|
|
//-----------------------------------------------
|
|
// impulseTeamShareOpen
|
|
// The server request that the client opens the team sharing system
|
|
//-----------------------------------------------
|
|
void impulseTeamShareOpen(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
CGroupContainer *gc = dynamic_cast<CGroupContainer*>( CWidgetManager::getInstance()->getElementFromId("ui:interface:team_share"));
|
|
if (!gc) return;
|
|
gc->setActive(true);
|
|
CWidgetManager::getInstance()->setTopWindow(gc);
|
|
gc->updateCoords();
|
|
gc->center();
|
|
}// impulseTeamShareOpen //
|
|
|
|
//-----------------------------------------------
|
|
// impulseTeamShareInvalid
|
|
// invalidate the player validation. If someone has choosen an item/phrase after the player has validated
|
|
// the player receive this message to let him know that the chance percentage to obtain a specific item has
|
|
// changed and so the player can update its own settings to fit better to what he wants.
|
|
// On the client side we have just to show the valid button. All the resets are done on the server side.
|
|
//-----------------------------------------------
|
|
void impulseTeamShareInvalid(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CCtrlTextButton *pTB = dynamic_cast<CCtrlTextButton*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:team_share:content:ok"));
|
|
if (pTB != NULL)
|
|
pTB->setActive(true);
|
|
}// impulseTeamShareInvalid //
|
|
|
|
//-----------------------------------------------
|
|
// impulseTeamShareClose
|
|
// The server wants to close the team sharing interface (if the sharing has been validated or other reasons)
|
|
//-----------------------------------------------
|
|
void impulseTeamShareClose(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CGroupContainer
|
|
*pGC = dynamic_cast<CGroupContainer*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:team_share"));
|
|
if (pGC != NULL)
|
|
pGC->setActive(false);
|
|
CCtrlTextButton *pTB = dynamic_cast<CCtrlTextButton*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:team_share:content:ok"));
|
|
if (pTB != NULL)
|
|
pTB->setActive(true);
|
|
}// impulseTeamShareClose //
|
|
|
|
//-----------------------------------------------
|
|
// impulseTeamContactInit
|
|
// initialize friend list and ignore list from the contact list
|
|
//-----------------------------------------------
|
|
void impulseTeamContactInit(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
vector<uint32> vFriendListName;
|
|
vector<TCharConnectionState> vFriendListOnline;
|
|
vector<ucstring> vIgnoreListName;
|
|
|
|
impulse.serialCont(vFriendListName);
|
|
uint32 nbState;
|
|
impulse.serial(nbState);
|
|
vFriendListOnline.resize(nbState);
|
|
for (uint i=0; i<nbState; ++i)
|
|
{
|
|
impulse.serialShortEnum(vFriendListOnline[i]);
|
|
}
|
|
// impulse.serialCont(vFriendListOnline);
|
|
impulse.serialCont(vIgnoreListName);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
//nlinfo("impulseCallback : Received TEAM:CONTACT_INIT nbfriend:%d nbignore:%d", vFriendListName.size(), vIgnoreListName.size());
|
|
|
|
PeopleInterraction.initContactLists(vFriendListName, vFriendListOnline, vIgnoreListName);
|
|
}// impulseTeamContactInit //
|
|
|
|
//-----------------------------------------------
|
|
// impulseTeamContactCreate
|
|
// create one character from the friend or ignore list
|
|
//-----------------------------------------------
|
|
void impulseTeamContactCreate(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 contactId;
|
|
uint32 nameId;
|
|
TCharConnectionState online = ccs_offline;
|
|
uint8 nList;
|
|
|
|
impulse.serial(contactId);
|
|
impulse.serial(nameId);
|
|
impulse.serialShortEnum(online);
|
|
impulse.serial(nList);
|
|
|
|
// client patch to resolve bad server response when requesting ignore list contact creation
|
|
if (nList == 1) // ignore list
|
|
{
|
|
// prevent adding an empty player to ignore list
|
|
if (nameId == 0) return;
|
|
}
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
//nlinfo("impulseCallback : Received TEAM:CONTACT_CREATE %d %d %s %d", contactId, nameId, online?"true":"false", nList);
|
|
|
|
PeopleInterraction.addContactInList(contactId, nameId, online, nList);
|
|
|
|
}// impulseTeamContactStatus //
|
|
|
|
//-----------------------------------------------
|
|
// impulseTeamContactStatus
|
|
// update one of the character from the friend list
|
|
//-----------------------------------------------
|
|
void impulseTeamContactStatus(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 contactId;
|
|
TCharConnectionState online = ccs_offline;
|
|
|
|
impulse.serial(contactId);
|
|
impulse.serialShortEnum(online);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
//nlinfo("impulseCallback : Received TEAM:CONTACT_STATUS %d %s", contactId, online == ccs_online ?"online": online==ccs_offline?"offline" : "foreign_online");
|
|
|
|
// 0<=FriendList (actually ignore list does not show online state)
|
|
PeopleInterraction.updateContactInList(contactId, online, 0);
|
|
|
|
// Resort the contact list if needed
|
|
CInterfaceManager* pIM= CInterfaceManager::getInstance();
|
|
CPeopleList::TSortOrder order = (CPeopleList::TSortOrder)(NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTACT_LIST:SORT_ORDER")->getValue32());
|
|
|
|
if (order == CPeopleList::sort_online)
|
|
{
|
|
PeopleInterraction.FriendList.sortEx(order);
|
|
}
|
|
}// impulseTeamContactStatus //
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseTeamContactRemove
|
|
// Remove a contact by the server
|
|
//-----------------------------------------------
|
|
void impulseTeamContactRemove(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 contactId;
|
|
uint8 nList;
|
|
|
|
impulse.serial(contactId);
|
|
impulse.serial(nList);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
//nlinfo("impulseCallback : Received TEAM:CONTACT_REMOVE %d %d", contactId, nList);
|
|
|
|
PeopleInterraction.removeContactFromList(contactId, nList);
|
|
|
|
}// impulseTeamContactRemove //
|
|
|
|
|
|
//-----------------------------------------------
|
|
// servers sets information of a guild member:
|
|
// u16 ( member index ) u32 (player name ), u8 ( player grade + last bit set if player online ).
|
|
//-----------------------------------------------
|
|
/*void impulseGuildSetMemberInfo(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint16 index;
|
|
impulse.serial(index);
|
|
uint32 guildMemberName;
|
|
impulse.serial(guildMemberName);
|
|
uint8 grade;
|
|
impulse.serial(grade);
|
|
bool online = ((grade&0x80) != 0);
|
|
grade = (grade & 0x7F);
|
|
CGuildManager::getInstance()->set(index, guildMemberName, grade, online);
|
|
}*/
|
|
|
|
//-----------------------------------------------
|
|
// vector of pair( u32 (player name ), u8 ( player grade + last bit set if player online ) )
|
|
//-----------------------------------------------
|
|
/*void impulseGuildInitMemberInfo(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
vector < pair < uint32, uint8 > > AllMembers;
|
|
uint16 nbEntries;
|
|
impulse.serial(nbEntries);
|
|
AllMembers.resize(nbEntries);
|
|
for (uint32 i = 0; i < nbEntries; ++i)
|
|
{
|
|
uint32 name;
|
|
impulse.serial(name);
|
|
uint8 gradeNonline;
|
|
impulse.serial(gradeNonline);
|
|
AllMembers[i].first = name;
|
|
AllMembers[i].second = gradeNonline;
|
|
}
|
|
|
|
CGuildManager::getInstance()->init(AllMembers);
|
|
}*/
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseGuildInvitation
|
|
//-----------------------------------------------
|
|
/*void impulseGuildInvitation(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
nlinfo("impulseGuildInvitation");
|
|
|
|
}*/
|
|
|
|
//-----------------------------------------------
|
|
// impulseGuildJoinProposal
|
|
// server sent to client invitation (uint32 invitorNameId, uint32 guildNameId
|
|
//-----------------------------------------------
|
|
void impulseGuildJoinProposal(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
|
|
uint32 phraseID;
|
|
impulse.serial(phraseID);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
//nlinfo("impulseCallback : Received GUILD:JOIN_PROPOSAL %d", phraseID);
|
|
|
|
CGuildManager::getInstance()->launchJoinProposal(phraseID);
|
|
/*//activate the pop up window
|
|
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
CGroupContainer *gc = dynamic_cast<CGroupContainer *>( CWidgetManager::getInstance()->getElementFromId("ui:interface:join_guild_proposal"));
|
|
if (!gc) return;
|
|
CViewText *vt = dynamic_cast<CViewText*>(gc->getView("invitor_name"));
|
|
if (vt == NULL) return;
|
|
vt->setText(invitor);
|
|
gc->setActive(true);
|
|
CWidgetManager::getInstance()->setTopWindow(gc);
|
|
gc->updateCoords();
|
|
gc->center();
|
|
gc->enableBlink(2);*/
|
|
}// impulseGuildJoinProposal //
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseCloseTempInv
|
|
//-----------------------------------------------
|
|
void impulseCloseTempInv(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CTempInvManager::getInstance()->close();
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseAscencorTeleport
|
|
//-----------------------------------------------
|
|
void impulseAscencorTeleport(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
|
|
} // impulseAscencorTeleport //
|
|
|
|
//-----------------------------------------------
|
|
// impulseEnterCrZoneProposal
|
|
// server sent to client invitation (uint32 invitorNameId, uint32 guildNameId
|
|
//-----------------------------------------------
|
|
void impulseEnterCrZoneProposal(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 phraseID;
|
|
impulse.serial(phraseID);
|
|
if (PermanentlyBanned) return;
|
|
|
|
//nlinfo("impulseCallback : Received MISSION:ASK_ENTER_CRITICAL %d", phraseID);
|
|
|
|
//activate the pop up window
|
|
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
CGroupContainer *gc = dynamic_cast<CGroupContainer *>( CWidgetManager::getInstance()->getElementFromId("ui:interface:enter_crzone_proposal"));
|
|
if (!gc) return;
|
|
CViewTextID *vti = dynamic_cast<CViewTextID *>(gc->getView("phrase"));
|
|
if (!vti) return;
|
|
vti->setTextId(phraseID);
|
|
gc->setActive(true);
|
|
CWidgetManager::getInstance()->setTopWindow(gc);
|
|
gc->updateCoords();
|
|
gc->center();
|
|
gc->enableBlink(2);
|
|
}// impulseEnterCrZoneProposal //
|
|
|
|
//-----------------------------------------------
|
|
// impulseCloseEnterCrZoneProposal
|
|
// server close proposal interface
|
|
//-----------------------------------------------
|
|
void impulseCloseEnterCrZoneProposal(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// hide interface
|
|
CInterfaceManager* pIM = CInterfaceManager::getInstance();
|
|
CInterfaceGroup *pIG = (CInterfaceGroup*)CWidgetManager::getInstance()->getElementFromId ("ui:interface:enter_crzone_proposal");
|
|
if(pIG)
|
|
pIG->setActive(false);
|
|
}// impulseCloseEnterCrZoneProposal //
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseExchangeInvitation :
|
|
//-----------------------------------------------
|
|
void impulseExchangeInvitation(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 textID;
|
|
impulse.serial(textID);
|
|
if (PermanentlyBanned) return;
|
|
CInterfaceManager* iMngr = CInterfaceManager::getInstance();
|
|
|
|
// show the modal window that allow the player to accept / decline the invitation
|
|
CGroupContainer *wnd = dynamic_cast<CGroupContainer *>(CWidgetManager::getInstance()->getElementFromId(PLAYER_EXCHANGE_INVITATION_DIALOG));
|
|
if (wnd)
|
|
{
|
|
wnd->setActive(true);
|
|
wnd->updateCoords();
|
|
wnd->center();
|
|
wnd->enableBlink(2);
|
|
CWidgetManager::getInstance()->setTopWindow(wnd);
|
|
}
|
|
|
|
CViewTextID *vti = dynamic_cast<CViewTextID *>(wnd->getView("invite_phrase"));
|
|
if (vti)
|
|
{
|
|
vti->setTextId(textID);
|
|
}
|
|
|
|
}// impulseExchangeInvitation //
|
|
|
|
//-----------------------------------------------
|
|
// impulseExchangeCloseInvitation :
|
|
//-----------------------------------------------
|
|
void impulseExchangeCloseInvitation(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
CInterfaceManager* iMngr = CInterfaceManager::getInstance();
|
|
// hide the modal window that allow the player to accept / decline the invitation
|
|
CInterfaceGroup *wnd = dynamic_cast<CInterfaceGroup *>(CWidgetManager::getInstance()->getElementFromId(PLAYER_EXCHANGE_INVITATION_DIALOG));
|
|
if (wnd) wnd->setActive(false);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseMountAbort :
|
|
//-----------------------------------------------
|
|
void impulseMountAbort(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
nlwarning("impulseMountAbort: Received ANIMALS:MOUNT_ABORT => no more used");
|
|
}// impulseMountAbort //
|
|
|
|
//-----------------------------------------------
|
|
// impulseRyzomTime :
|
|
// Synchronize the ryzom time with the server.
|
|
//-----------------------------------------------
|
|
/*
|
|
void impulseRyzomTime(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
nlinfo("impulseRyzomTime: Ryzom Time Received");
|
|
uint32 serverTick;
|
|
float ryzomTime;
|
|
uint32 ryzomDay;
|
|
impulse.serial(serverTick);
|
|
impulse.serial(ryzomTime);
|
|
impulse.serial(ryzomDay);
|
|
nlinfo("impulseRyzomTime: Day '%d' Time '%f'.", ryzomDay, ryzomTime);
|
|
|
|
// Initialize
|
|
RT.setOrigin( serverTick, ryzomDay, ryzomTime );
|
|
}// impulseRyzomTime //
|
|
*/
|
|
//-----------------------------------------------
|
|
// impulseWhere :
|
|
// Display server position
|
|
//-----------------------------------------------
|
|
void impulseWhere(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//nlinfo("impulseCallback : Received DEBUG:REPLY_WHERE");
|
|
|
|
sint32 x,y,z;
|
|
impulse.serial(x);
|
|
impulse.serial(y);
|
|
impulse.serial(z);
|
|
if (PermanentlyBanned) return;
|
|
char buf[128];
|
|
|
|
double xf = ((double)x)/1000.0f;
|
|
double yf = ((double)y)/1000.0f;
|
|
double zf = ((double)z)/1000.0f;
|
|
|
|
sprintf(buf,"Your server position is : X= %g Y= %g Z= %g",xf,yf,zf);
|
|
nlinfo(buf);
|
|
CInterfaceManager::getInstance()->displaySystemInfo(ucstring(buf));
|
|
}// impulseWhere //
|
|
|
|
//-----------------------------------------------
|
|
// impulseWho :
|
|
// Display server position
|
|
//-----------------------------------------------
|
|
/*
|
|
void impulseWho(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
nlinfo("impulseWho Received");
|
|
CInterfaceManager::getInstance()->displaySystemInfo(ucstring("Players currently in the game :"));
|
|
|
|
ucstring name;
|
|
uint32 loginId;
|
|
uint16 dist;
|
|
uint8 dirshort;
|
|
string str;
|
|
while( impulse.getPos() < (sint32)impulse.length() )
|
|
{
|
|
impulse.serial(name);
|
|
impulse.serial(loginId);
|
|
impulse.serial(dist);
|
|
impulse.serial(dirshort);
|
|
|
|
double angle = dirshort * 2.0 * NLMISC::Pi / 255.0;
|
|
angle -= NLMISC::Pi;
|
|
nlinfo ("name %s uid %u dist %hu dirshort %hu angle %f", name.toString().c_str(),loginId, dist, (uint16)dirshort, angle);
|
|
sint direction =(sint) floor( 0.5 + ( 8.0 * (angle + NLMISC::Pi)/(NLMISC::Pi) ) );
|
|
direction = ((direction%16)+16)%16;
|
|
static const string txts[]=
|
|
{
|
|
"uiW",
|
|
"uiWSW",
|
|
"uiSW",
|
|
"uiSSW",
|
|
"uiS",
|
|
"uiSSE",
|
|
"uiSE",
|
|
"uiESE",
|
|
"uiE",
|
|
"uiENE",
|
|
"uiNE",
|
|
"uiNNE",
|
|
"uiN",
|
|
"uiNNW",
|
|
"uiNW",
|
|
"uiWNW",
|
|
};
|
|
|
|
str = toString (" - uid %d - distance %hu meters - direction ", loginId, dist);
|
|
CInterfaceManager::getInstance()->displaySystemInfo(ucstring(name + ucstring(str) + CI18N::get(txts[direction])));
|
|
}
|
|
}// impulseWho //
|
|
*/
|
|
|
|
/*
|
|
void impulseWhoGM(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
nlinfo("impulseWhoGM Received");
|
|
CInterfaceManager::getInstance()->displaySystemInfo(ucstring("Players currently in the game :"));
|
|
|
|
ucstring name;
|
|
uint32 loginId;
|
|
uint16 dist;
|
|
uint8 dirshort;
|
|
string str;
|
|
while( impulse.getPos() < (sint32)impulse.length() )
|
|
{
|
|
impulse.serial(name);
|
|
impulse.serial(loginId);
|
|
impulse.serial(dist);
|
|
impulse.serial(dirshort);
|
|
|
|
double angle = dirshort * 2.0 * NLMISC::Pi / 255.0;
|
|
angle -= NLMISC::Pi;
|
|
nlinfo ("name %s uid %u dist %hu dirshort %hu angle %f", name.toString().c_str(),loginId, dist, (uint16)dirshort, angle);
|
|
sint direction =(sint) floor( 0.5 + ( 8.0 * (angle + NLMISC::Pi)/(NLMISC::Pi) ) );
|
|
direction = ((direction%16)+16)%16;
|
|
static const string txts[]=
|
|
{
|
|
"uiW",
|
|
"uiWSW",
|
|
"uiSW",
|
|
"uiSSW",
|
|
"uiS",
|
|
"uiSSE",
|
|
"uiSE",
|
|
"uiESE",
|
|
"uiE",
|
|
"uiENE",
|
|
"uiNE",
|
|
"uiNNE",
|
|
"uiN",
|
|
"uiNNW",
|
|
"uiNW",
|
|
"uiWNW",
|
|
};
|
|
|
|
str = toString (" - uid %d - distance %hu meters - direction ", loginId, dist);
|
|
CInterfaceManager::getInstance()->displaySystemInfo(ucstring(name + ucstring(str) + CI18N::get(txts[direction])));
|
|
}
|
|
}// impulseWho //
|
|
*/
|
|
//-----------------------------------------------
|
|
// impulseCounter :
|
|
// check UDP validity
|
|
//-----------------------------------------------
|
|
void impulseCounter(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//nlinfo("impulseCallBack : Received DEBUG:COUNTER");
|
|
try
|
|
{
|
|
uint32 counter;
|
|
impulse.serial(counter);
|
|
|
|
static uint queueTop = 0;
|
|
static deque<bool> queue;
|
|
|
|
if (counter > queueTop)
|
|
{
|
|
queue.resize(queue.size()+counter-queueTop, false);
|
|
queueTop = counter;
|
|
}
|
|
|
|
if (queueTop-counter+1 > queue.size())
|
|
{
|
|
nlinfo("COUNTER: counter %d arrived too late...", counter);
|
|
}
|
|
else
|
|
{
|
|
if (queue[queue.size()-1-(queueTop-counter)])
|
|
{
|
|
nlwarning("COUNTER: Received counter %d more than once !", counter);
|
|
}
|
|
else
|
|
{
|
|
nldebug("COUNTER: set counter %d", counter);
|
|
queue[queue.size()-1-(queueTop-counter)] = true;
|
|
}
|
|
|
|
while (queue.size() > 128)
|
|
{
|
|
if (!queue.front())
|
|
{
|
|
nlwarning("COUNTER: counter %d not received !", queueTop-queue.size()-1);
|
|
}
|
|
|
|
queue.pop_front();
|
|
}
|
|
}
|
|
}
|
|
catch (const Exception &e)
|
|
{
|
|
nlwarning ("Problem while decoding a COUTNER msg, skipped: %s", e.what());
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulsePhraseSend :
|
|
// A dyn string (or phrase) is send (so, we receive it)
|
|
//-----------------------------------------------
|
|
void impulsePhraseSend(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
STRING_MANAGER::CStringManagerClient::instance()->receiveDynString(impulse);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseStringResp :
|
|
// Update the local string set
|
|
//-----------------------------------------------
|
|
void impulseStringResp(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 stringId;
|
|
string strUtf8;
|
|
impulse.serial(stringId);
|
|
impulse.serial(strUtf8);
|
|
ucstring str;
|
|
str.fromUtf8(strUtf8);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
STRING_MANAGER::CStringManagerClient::instance()->receiveString(stringId, str);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseReloadCache :
|
|
// reload the string cache
|
|
//-----------------------------------------------
|
|
void impulseReloadCache(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 timestamp;;
|
|
impulse.serial(timestamp);
|
|
if (PermanentlyBanned) return;
|
|
STRING_MANAGER::CStringManagerClient::instance()->loadCache(timestamp);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseBotChatEnd
|
|
// ForceThe end of the bot chat
|
|
//-----------------------------------------------
|
|
void impulseBotChatForceEnd(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
CBotChatManager::getInstance()->setCurrPage(NULL);
|
|
}
|
|
|
|
|
|
//-----------------------------------------------
|
|
// MISSION COMPLETED JOURNAL
|
|
//-----------------------------------------------
|
|
/*
|
|
#define MC_M_CONTAINER "ui:interface:info_player_journal"
|
|
#define MC_S_CONTAINER "ui:interface:ipj_com_missions"
|
|
#define MC_TEMPLATE "tipj_mission_complete"
|
|
//-----------------------------------------------
|
|
CGroupContainer *getMissionCompletedContainer()
|
|
{
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CInterfaceElement *pIE = CWidgetManager::getInstance()->getElementFromId(MC_M_CONTAINER);
|
|
CGroupContainer *pGCM = dynamic_cast<CGroupContainer*>(pIE);
|
|
if (pGCM == NULL) return NULL;
|
|
|
|
CGroupList *pList = pGCM->getList();
|
|
CGroupContainer *pGCS = dynamic_cast<CGroupContainer*>(pList->getGroup(MC_S_CONTAINER));
|
|
return pGCS;
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
void clearMissions()
|
|
{
|
|
CGroupContainer *pGCMC = getMissionCompletedContainer();
|
|
CInterfaceGroup *pContent = pGCMC->getGroup("content");
|
|
pContent->clearGroups();
|
|
}
|
|
//-----------------------------------------------
|
|
void addMission(uint32 titleID)
|
|
{
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CGroupContainer *pGCMC = getMissionCompletedContainer();
|
|
if (pGCMC == NULL)
|
|
{
|
|
nlwarning("cannot get container for missions completed");
|
|
return;
|
|
}
|
|
CInterfaceGroup *pContent = pGCMC->getGroup("content");
|
|
|
|
uint32 nNbMission = pContent->getGroups().size();
|
|
vector<pair<string, string> > vArgs;
|
|
|
|
vArgs.push_back(pair<string,string>("id", "mc"+NLMISC::toString(nNbMission)));
|
|
vArgs.push_back(pair<string,string>("mcid", NLMISC::toString(titleID)));
|
|
|
|
if (nNbMission == 0)
|
|
{
|
|
vArgs.push_back(pair<string,string>("posref", "TL TL"));
|
|
vArgs.push_back(pair<string,string>("posparent", "parent"));
|
|
vArgs.push_back(pair<string,string>("y", "0"));
|
|
}
|
|
else
|
|
{
|
|
vArgs.push_back(pair<string,string>("posref", "BL TL"));
|
|
}
|
|
|
|
CInterfaceGroup *pIG = pIM->createGroupInstance(MC_TEMPLATE, pContent->getId(), vArgs);
|
|
if (pIG == NULL)
|
|
{
|
|
nlwarning("cannot create a mission completed");
|
|
return;
|
|
}
|
|
pIG->setParent(pContent);
|
|
if (nNbMission == 0)
|
|
pIG->setParentPos(pContent);
|
|
else
|
|
pIG->setParentPos(pContent->getGroups()[nNbMission-1]);
|
|
pContent->addGroup(pIG);
|
|
}
|
|
*/
|
|
//-----------------------------------------------
|
|
// impulseJournalInitCompletedMissions :
|
|
// initialize the player journal missions for completed missions
|
|
//-----------------------------------------------
|
|
void impulseJournalInitCompletedMissions (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
/*
|
|
vector<uint32> vMissionCompleted;
|
|
impulse.serialCont(vMissionCompleted);
|
|
|
|
clearMissions();
|
|
|
|
for (uint32 i = 0; i < vMissionCompleted.size(); ++i)
|
|
addMission (vMissionCompleted[i]);
|
|
*/
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseJournalInitCompletedMissions :
|
|
// initialize the player journal missions for completed missions
|
|
//-----------------------------------------------
|
|
void impulseJournalUpdateCompletedMissions (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
/*
|
|
uint32 nNewCompletedMission;
|
|
impulse.serial(nNewCompletedMission);
|
|
|
|
addMission (nNewCompletedMission);
|
|
*/
|
|
}
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseJournalCantAbandon :
|
|
// server refuses mission abandon
|
|
//-----------------------------------------------
|
|
void impulseJournalCantAbandon (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
/// reactivate abandon button
|
|
CCDBNodeLeaf *pNL = NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:MISSION_ABANDON_BUTTON",false);
|
|
if (pNL != NULL)
|
|
pNL->setValue64(1);
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------
|
|
// server add a compass target
|
|
//-----------------------------------------------
|
|
void impulseJournalAddCompass(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
sint32 x;
|
|
sint32 y;
|
|
uint32 text;
|
|
impulse.serial(x);
|
|
impulse.serial(y);
|
|
impulse.serial(text);
|
|
if (PermanentlyBanned) return;
|
|
//nlinfo("impulseCallback : Received JOURNAL:ADD_COMPASS %d %d %d", x, y, text);
|
|
CCompassDialogsManager::getInstance().addEntry( x,y,text );
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// server removes a compass target
|
|
//-----------------------------------------------
|
|
void impulseJournalRemoveCompass(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 text;
|
|
impulse.serial(text);
|
|
if (PermanentlyBanned) return;
|
|
//nlinfo("impulseCallback : Received JOURNAL:REMOVE_COMPASS %d", text);
|
|
CCompassDialogsManager::getInstance().removeEntry( text );
|
|
}
|
|
|
|
|
|
|
|
//
|
|
// the server ask me to execute a command
|
|
//
|
|
void impulseRemoteAdmin (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CLog logDisplayVars;
|
|
CLightMemDisplayer mdDisplayVars;
|
|
logDisplayVars.addDisplayer (&mdDisplayVars);
|
|
mdDisplayVars.setParam (10);
|
|
|
|
uint32 rid;
|
|
impulse.serial (rid);
|
|
string cmd;
|
|
impulse.serial (cmd);
|
|
|
|
// remove the 2 first rc character if exists, only there to say to the EGS that is a remote command
|
|
if (cmd.size()>2 && tolower(cmd[0])=='r' && tolower(cmd[1])=='c')
|
|
cmd = cmd.substr(2);
|
|
|
|
mdDisplayVars.clear ();
|
|
ICommand::execute(cmd, logDisplayVars, !ICommand::isCommand(cmd));
|
|
const std::deque<std::string> &strs = mdDisplayVars.lockStrings();
|
|
|
|
string str;
|
|
if (ICommand::isCommand(cmd))
|
|
{
|
|
for (uint k = 0; k < strs.size(); k++)
|
|
{
|
|
str += strs[k];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!strs.empty())
|
|
{
|
|
str = strs[0].substr(0,strs[0].size()-1);
|
|
// replace all spaces into underscore because space is a reserved char
|
|
for (uint i = 0; i < str.size(); i++) if (str[i] == ' ') str[i] = '_';
|
|
}
|
|
else
|
|
{
|
|
str = "???";
|
|
}
|
|
}
|
|
mdDisplayVars.unlockStrings();
|
|
|
|
//nlinfo("impulseCallback : Received COMMAND:REMOTE_ADMIN : Server asked me to execute '%s', result is '%s'", cmd.c_str(), str.c_str());
|
|
|
|
CBitMemStream out;
|
|
if(GenericMsgHeaderMngr.pushNameToStream("COMMAND:REMOTE_ADMIN_ANSWER", out))
|
|
{
|
|
out.serial (rid);
|
|
out.serial (cmd);
|
|
out.serial (str);
|
|
NetMngr.push (out);
|
|
//nlinfo("impulseCallback : COMMAND:REMOTE_ADMIN_ANSWER %d %s %s sent", rid, cmd.c_str(), str.c_str());
|
|
}
|
|
}
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseGuildAscensor :
|
|
// server request that the client launch the ascensor interface
|
|
//-----------------------------------------------
|
|
|
|
void impulseGuildAscensor (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
//nlinfo("impulseCallback : Received GUILD:ASCENSOR");
|
|
CGuildManager::getInstance()->launchAscensor();
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
//impulseGuildLeaveAscensor
|
|
//-----------------------------------------------
|
|
void impulseGuildLeaveAscensor (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
//nlinfo("impulseCallback : Received GUILD:LEAVE_ASCENSOR");
|
|
CGuildManager::getInstance()->quitAscensor();
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
//impulseGuildAbortCreation
|
|
//-----------------------------------------------
|
|
void impulseGuildAbortCreation (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CBotChatPage *pPage = CBotChatManager::getInstance()->getCurrPage();
|
|
CBotChatPageCreateGuild *pPageCG = dynamic_cast<CBotChatPageCreateGuild*>(pPage);
|
|
if (pPageCG == BotChatPageAll->CreateGuild)
|
|
CBotChatManager::getInstance()->setCurrPage(NULL);
|
|
}
|
|
|
|
void impulseGuildOpenGuildWindow(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CGuildManager::getInstance()->openGuildWindow();
|
|
}
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseGuildOpenInventory
|
|
//-----------------------------------------------
|
|
void impulseGuildOpenInventory (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:INVENTORY_GUILD_OPENED")->setValue32(1);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseGuildCloseInventory
|
|
//-----------------------------------------------
|
|
void impulseGuildCloseInventory (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:INVENTORY_GUILD_OPENED")->setValue32(0);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseGuildUpdatePlayerTitle
|
|
// server block/unblock some reserved titles
|
|
//-----------------------------------------------
|
|
void impulseGuildUpdatePlayerTitle(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CSkillManager *pSM = CSkillManager::getInstance();
|
|
bool bUnblock;
|
|
impulse.serial(bUnblock);
|
|
vector<uint16> vTitles;
|
|
impulse.serialCont(vTitles);
|
|
if (PermanentlyBanned) return;
|
|
if (bUnblock)
|
|
{
|
|
for (uint32 i = 0; i < vTitles.size(); ++i)
|
|
pSM->unblockTitleFromServer((CHARACTER_TITLE::ECharacterTitle)vTitles[i]);
|
|
}
|
|
else
|
|
{
|
|
for (uint32 i = 0; i < vTitles.size(); ++i)
|
|
pSM->blockTitleFromServer((CHARACTER_TITLE::ECharacterTitle)vTitles[i]);
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseGuildUseFemaleTitles
|
|
// server activates/deactivates use of female titles
|
|
//-----------------------------------------------
|
|
void impulseGuildUseFemaleTitles(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
impulse.serial( UseFemaleTitles );
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulsePhraseDownLoad
|
|
// server upload the phrases.
|
|
//-----------------------------------------------
|
|
void impulsePhraseDownLoad (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
std::vector<CSPhraseSlot> phrases;
|
|
|
|
// Read Known Phrases
|
|
impulse.serialCont(phrases);
|
|
CSPhraseManager *pPM= CSPhraseManager::getInstance();
|
|
for(uint i=0;i<phrases.size();i++)
|
|
{
|
|
if(phrases[i].PhraseSheetId != CSheetId::Unknown)
|
|
{
|
|
CSPhraseCom phraseCom;
|
|
pPM->buildPhraseFromSheet(phraseCom, phrases[i].PhraseSheetId.asInt());
|
|
pPM->setPhraseNoUpdateDB(phrases[i].KnownSlot, phraseCom);
|
|
}
|
|
else
|
|
{
|
|
pPM->setPhraseNoUpdateDB(phrases[i].KnownSlot, phrases[i].Phrase);
|
|
}
|
|
}
|
|
// must update the DB (NB: if initInGameDone) after all phrase set.
|
|
pPM->updateBookDB();
|
|
|
|
// Then Read Memorized Phrases
|
|
std::vector<CSPhraseMemorySlot> memorizedPhrases;
|
|
impulse.serialCont(memorizedPhrases);
|
|
if (PermanentlyBanned) return;
|
|
for(uint i=0;i<memorizedPhrases.size();i++)
|
|
{
|
|
pPM->memorizePhrase(
|
|
memorizedPhrases[i].MemoryLineId,
|
|
memorizedPhrases[i].MemorySlotId,
|
|
memorizedPhrases[i].PhraseId);
|
|
}
|
|
|
|
// OK.
|
|
extern bool SabrinaPhraseBookLoaded;
|
|
SabrinaPhraseBookLoaded= true;
|
|
|
|
// update gray state, if game inited.
|
|
pPM->updateMemoryBar();
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulsePhraseConfirmBuy
|
|
// server confirm/infirm the buy of botchat phrase.
|
|
//-----------------------------------------------
|
|
void impulsePhraseConfirmBuy (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint16 phraseId;
|
|
bool confirm;
|
|
|
|
impulse.serial(phraseId);
|
|
impulse.serial(confirm);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
CSPhraseManager *pSM= CSPhraseManager::getInstance();
|
|
pSM->receiveBotChatConfirmBuy(phraseId, confirm);
|
|
}
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulsePhraseAckExecuteCyclic
|
|
// server confirm/infirm the cyclic execution of a phrase
|
|
//-----------------------------------------------
|
|
void impulsePhraseAckExecuteCyclic (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint8 counter;
|
|
bool ok;
|
|
|
|
impulse.serial(ok);
|
|
impulse.serial(counter);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
|
|
CSPhraseManager *pSM= CSPhraseManager::getInstance();
|
|
pSM->receiveAckExecuteFromServer(true, counter, ok);
|
|
}
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulsePhraseAckExecuteCyclic
|
|
// server confirm/infirm the execution of a phrase
|
|
//-----------------------------------------------
|
|
void impulsePhraseAckExecuteNext (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint8 counter;
|
|
bool ok;
|
|
|
|
impulse.serial(ok);
|
|
impulse.serial(counter);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
CSPhraseManager *pSM= CSPhraseManager::getInstance();
|
|
pSM->receiveAckExecuteFromServer(false, counter, ok);
|
|
}
|
|
|
|
// Same params as in BOMB_IF
|
|
#ifdef FINAL_VERSION
|
|
#define SKIP_IF(condition,msg,skipAction) if (!(condition)); else skipAction;
|
|
#else
|
|
#define SKIP_IF(condition,msg,skipAction) if (!(condition)) WARN(msg); else skipAction;
|
|
#endif
|
|
|
|
template <class CInventoryCategoryTemplate>
|
|
void updateInventoryFromStream (NLMISC::CBitMemStream &impulse, const CInventoryCategoryTemplate *templ, bool notifyItemSheetChanges)
|
|
{
|
|
try
|
|
{
|
|
// get the egs tick of this change
|
|
TGameCycle serverTick;
|
|
impulse.serial(serverTick);
|
|
|
|
// For All inventories
|
|
for ( uint invId=0; invId!=CInventoryCategoryTemplate::NbInventoryIds; ++invId )
|
|
{
|
|
// Presence bit
|
|
bool hasContent;
|
|
impulse.serialBit( hasContent );
|
|
if ( ! hasContent )
|
|
continue;
|
|
|
|
// Number field
|
|
uint32 nbChanges;
|
|
impulse.serial( nbChanges, INVENTORIES::LowNumberBits );
|
|
if ( nbChanges == INVENTORIES::LowNumberBound )
|
|
impulse.serial( nbChanges, 32 );
|
|
|
|
const string invBranchStr = CInventoryCategoryTemplate::getDbStr( (typename CInventoryCategoryTemplate::TInventoryId)invId );
|
|
ICDBNode::CTextId textId( invBranchStr );
|
|
ICDBNode *inventoryNode = IngameDbMngr.getNodePtr()->getNode( textId, false );
|
|
BOMB_IF( !inventoryNode, "Inventory missing in database", return )
|
|
|
|
// List of updates
|
|
for ( uint c=0; c!=nbChanges; ++c )
|
|
{
|
|
// Unpack (the bitmemstream is written from high-order to low-order)
|
|
uint32 iuInfoVersion;
|
|
impulse.serial( iuInfoVersion, 1 );
|
|
if ( iuInfoVersion == 1 )
|
|
{
|
|
uint32 slotIndex;
|
|
impulse.serial( slotIndex, CInventoryCategoryTemplate::SlotBitSize );
|
|
|
|
// Access the database leaf
|
|
CCDBNodeBranch *slotNode = safe_cast<CCDBNodeBranch*>(inventoryNode->getNode( (uint16)slotIndex ));
|
|
CCDBNodeLeaf *leafNode = type_cast<CCDBNodeLeaf*>(slotNode->find( INVENTORIES::InfoVersionStr ));
|
|
BOMB_IF( !leafNode, "Inventory slot property missing in database", continue );
|
|
|
|
// Apply or increment Info Version in database
|
|
if ( CInventoryCategoryTemplate::needPlainInfoVersionTransfer() )
|
|
{
|
|
uint32 infoVersion;
|
|
impulse.serial( infoVersion, INVENTORIES::InfoVersionBitSize );
|
|
leafNode->setPropCheckGC( serverTick, infoVersion );
|
|
}
|
|
else
|
|
{
|
|
// NB: don't need to check GC on a info version upgrade, since this is always a delta of +1
|
|
// the order of received of this impulse is not important
|
|
leafNode->setValue64( leafNode->getValue64() + 1 );
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
uint32 iuAll;
|
|
impulse.serial( iuAll, 1 );
|
|
if ( iuAll == 1 )
|
|
{
|
|
INVENTORIES::CItemSlot itemSlot;
|
|
itemSlot.serialAll( impulse, templ );
|
|
//nldebug( "Inv %s Update %u", CInventoryCategoryTemplate::InventoryStr[invId], itemSlot.getSlotIndex() );
|
|
|
|
// Apply all properties to database
|
|
CCDBNodeBranch *slotNode = safe_cast<CCDBNodeBranch*>(inventoryNode->getNode( (uint16)itemSlot.getSlotIndex() ));
|
|
for ( uint i=0; i!=INVENTORIES::NbItemPropId; ++i )
|
|
{
|
|
CCDBNodeLeaf *leafNode = type_cast<CCDBNodeLeaf*>(slotNode->find( string(INVENTORIES::CItemSlot::ItemPropStr[i]) ));
|
|
SKIP_IF( !leafNode, "Inventory slot property missing in database", continue );
|
|
leafNode->setPropCheckGC( serverTick, (sint64)itemSlot.getItemProp( ( INVENTORIES::TItemPropId)i ) );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
uint32 iuOneProp;
|
|
impulse.serial( iuOneProp, 1 );
|
|
if ( iuOneProp == 1 )
|
|
{
|
|
INVENTORIES::CItemSlot itemSlot;
|
|
itemSlot.serialOneProp( impulse, templ );
|
|
//nldebug( "Inv %s Prop %u %s", CInventoryCategoryTemplate::InventoryStr[invId], itemSlot.getSlotIndex(), INVENTORIES::CItemSlot::ItemPropStr[itemSlot.getOneProp().ItemPropId] );
|
|
|
|
// Apply property to database
|
|
CCDBNodeBranch *slotNode = safe_cast<CCDBNodeBranch*>(inventoryNode->getNode( (uint16)itemSlot.getSlotIndex() ));
|
|
CCDBNodeLeaf *leafNode = type_cast<CCDBNodeLeaf*>(slotNode->find( string(INVENTORIES::CItemSlot::ItemPropStr[itemSlot.getOneProp().ItemPropId]) ));
|
|
SKIP_IF( !leafNode, "Inventory slot property missing in database", continue );
|
|
leafNode->setPropCheckGC( serverTick, (sint64)itemSlot.getOneProp().ItemPropValue );
|
|
|
|
}
|
|
else // iuReset
|
|
{
|
|
uint32 slotIndex;
|
|
impulse.serial( slotIndex, CInventoryCategoryTemplate::SlotBitSize );
|
|
//nldebug( "Inv %s Reset %u", CInventoryCategoryTemplate::InventoryStr[invId], slotIndex );
|
|
|
|
// Reset all properties in database
|
|
CCDBNodeBranch *slotNode = safe_cast<CCDBNodeBranch*>(inventoryNode->getNode( (uint16)slotIndex ));
|
|
for ( uint i=0; i!=INVENTORIES::NbItemPropId; ++i )
|
|
{
|
|
// Instead of clearing all leaves (by index), we must find and clear only the
|
|
// properties in TItemPropId, because the actual database leaves may have
|
|
// less properties, and because we must not clear the leaf INFO_VERSION.
|
|
// NOTE: For example, only player BAG inventory has WORNED leaf.
|
|
CCDBNodeLeaf *leafNode = type_cast<CCDBNodeLeaf*>(slotNode->find( string(INVENTORIES::CItemSlot::ItemPropStr[i]) ));
|
|
SKIP_IF( !leafNode, "Inventory slot property missing in database", continue );
|
|
leafNode->setPropCheckGC( serverTick, 0 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
CInventoryManager::getInstance()->sortBag();
|
|
}
|
|
catch (const Exception &e)
|
|
{
|
|
nlwarning ("Problem while decoding a DB_UPD_INV msg, skipped: %s", e.what());
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseUpdateInventory:
|
|
//-----------------------------------------------
|
|
void impulseUpdateInventory (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
updateInventoryFromStream( impulse, (INVENTORIES::CInventoryCategoryForCharacter*)NULL, true );
|
|
};
|
|
|
|
//-----------------------------------------------
|
|
// impulseInitInventory:
|
|
//-----------------------------------------------
|
|
void impulseInitInventory (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
sint32 p = impulse.getPos();
|
|
impulseUpdateInventory( impulse );
|
|
IngameDbMngr.setInitPacketReceived();
|
|
nlinfo( "DB_INIT:INV done (%u bytes)", impulse.getPos()-p );
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseItemInfoSet:
|
|
//-----------------------------------------------
|
|
void impulseItemInfoSet (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CItemInfos itemInfos;
|
|
impulse.serial(itemInfos);
|
|
|
|
getInventory().onReceiveItemInfo(itemInfos);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseItemInfoRefreshVersion:
|
|
//-----------------------------------------------
|
|
void impulseItemInfoRefreshVersion (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint16 slotId;
|
|
uint8 infoVersion;
|
|
impulse.serial(slotId);
|
|
impulse.serial(infoVersion);
|
|
|
|
getInventory().onRefreshItemInfoVersion(slotId, infoVersion);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulsePrereqInfoSet:
|
|
//-----------------------------------------------
|
|
void impulsePrereqInfoSet (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CPrerequisitInfos prereqInfos;
|
|
uint8 index;
|
|
impulse.serial(prereqInfos);
|
|
impulse.serial(index);
|
|
|
|
//write infos in interface
|
|
CBotChatManager::getInstance()->onReceiveMissionInfo(index, prereqInfos);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
//-----------------------------------------------
|
|
void impulseDeathRespawnPoint (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CRespawnPointsMsg msg;
|
|
impulse.serial(msg);
|
|
if (PermanentlyBanned) return;
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CGroupMap *pMap = dynamic_cast<CGroupMap*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:respawn_map:content:map_content:actual_map"));
|
|
if (pMap == NULL)
|
|
{
|
|
nlwarning("problem cannot find ui:interface:respawn_map:content:map_content:actual_map");
|
|
return;
|
|
}
|
|
pMap->addRespawnPoints(msg);
|
|
|
|
|
|
pMap = dynamic_cast<CGroupMap*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:map:content:map_content:actual_map"));
|
|
if (pMap == NULL)
|
|
{
|
|
nlwarning("problem cannot find ui:interface:map:content:map_content:actual_map");
|
|
return;
|
|
}
|
|
pMap->addRespawnPoints(msg);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
//-----------------------------------------------
|
|
void impulseDeathRespawn (NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// TODO : Bring me to life !!!
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// impulseDuelInvitation :
|
|
//-----------------------------------------------
|
|
void impulseDuelInvitation(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 textID;
|
|
impulse.serial(textID);
|
|
|
|
//nlinfo("impulseCallback : Received DUEL:INVITATION %d", textID);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
//activate the pop up window
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:join_duel_proposal"));
|
|
if (pGC == NULL) return;
|
|
CViewTextID *pVTID = dynamic_cast<CViewTextID *>(pGC->getView("invitor_name"));
|
|
if (pVTID == NULL) return;
|
|
pVTID->setTextId(textID);
|
|
pGC->setActive(true);
|
|
CWidgetManager::getInstance()->setTopWindow(pGC);
|
|
pGC->updateCoords();
|
|
pGC->center();
|
|
pGC->enableBlink(2);
|
|
|
|
}// impulseDuelInvitation //
|
|
|
|
//-----------------------------------------------
|
|
// impulseDuelCancelInvitation:
|
|
//-----------------------------------------------
|
|
void impulseDuelCancelInvitation(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
//nlinfo("impulseCallback : Received DUEL:CANCEL_INVITATION");
|
|
|
|
//activate the pop up window
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:join_duel_proposal"));
|
|
if (pGC == NULL) return;
|
|
pGC->setActive(false);
|
|
|
|
}// impulseDuelCancelInvitation //
|
|
|
|
//-----------------------------------------------
|
|
// impulsePVPChallengeInvitation :
|
|
//-----------------------------------------------
|
|
void impulsePVPChallengeInvitation(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 textID;
|
|
impulse.serial(textID);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
//nlinfo("impulseCallback : Received PVP_CHALLENGE:INVITATION %d", textID);
|
|
|
|
//activate the pop up window
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:join_pvp_challenge_proposal"));
|
|
if (pGC == NULL) return;
|
|
CViewTextID *pVTID = dynamic_cast<CViewTextID *>(pGC->getView("invitor_name"));
|
|
if (pVTID == NULL) return;
|
|
pVTID->setTextId(textID);
|
|
pGC->setActive(true);
|
|
CWidgetManager::getInstance()->setTopWindow(pGC);
|
|
pGC->updateCoords();
|
|
pGC->center();
|
|
pGC->enableBlink(2);
|
|
|
|
}// impulsePVPChallengeInvitation //
|
|
|
|
//-----------------------------------------------
|
|
// impulsePVPChallengeCancelInvitation:
|
|
//-----------------------------------------------
|
|
void impulsePVPChallengeCancelInvitation(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//nlinfo("impulseCallback : Received PVP_CHALLENGE:CANCEL_INVITATION");
|
|
|
|
//activate the pop up window
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:join_pvp_challenge_proposal"));
|
|
if (pGC == NULL) return;
|
|
pGC->setActive(false);
|
|
|
|
}// impulsePVPChallengeCancelInvitation //
|
|
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulsePVPFactionPushFactionWar:
|
|
//-----------------------------------------------
|
|
void impulsePVPFactionPushFactionWar(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//nlinfo("impulseCallback : Received PVP_FACTION:PUSH_FACTION_WAR");
|
|
|
|
PVP_CLAN::CFactionWar factionWar;
|
|
impulse.serialEnum(factionWar.Clan1);
|
|
impulse.serialEnum(factionWar.Clan2);
|
|
|
|
CFactionWarManager::getInstance()->addFactionWar(factionWar);
|
|
}
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulsePVPFactionPopFactionWar:
|
|
//-----------------------------------------------
|
|
void impulsePVPFactionPopFactionWar(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//nlinfo("impulseCallback : Received PVP_FACTION:POP_FACTION_WAR");
|
|
|
|
PVP_CLAN::CFactionWar factionWar;
|
|
impulse.serialEnum(factionWar.Clan1);
|
|
impulse.serialEnum(factionWar.Clan2);
|
|
|
|
CFactionWarManager::getInstance()->stopFactionWar(factionWar);
|
|
}
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulsePVPFactionFactionWars:
|
|
//-----------------------------------------------
|
|
void impulsePVPFactionFactionWars(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//nlinfo("impulseCallback : Received PVP_FACTION:FACTION_WARS");
|
|
|
|
CFactionWarsMsg factionWars;
|
|
impulse.serial(factionWars);
|
|
|
|
for( uint i=0; i<factionWars.FactionWarOccurs.size(); ++i )
|
|
{
|
|
CFactionWarManager::getInstance()->addFactionWar(factionWars.FactionWarOccurs[i]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulsePVPChooseClan
|
|
//-----------------------------------------------
|
|
/*
|
|
void impulsePVPChooseClan(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
nlinfo("impulsePVPChooseClan : Received PVP_CLAN:CHOOSE_CLAN");
|
|
|
|
EGSPD::CPeople::TPeople clan1= EGSPD::CPeople::Unknown, clan2= EGSPD::CPeople::Unknown;
|
|
impulse.serialEnum( clan1 );
|
|
impulse.serialEnum( clan2 );
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
//activate the pop up window
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:join_pvp_clan_proposal"));
|
|
if (pGC == NULL) return;
|
|
pGC->setActive(true);
|
|
|
|
CCtrlTextButton * butClan1 = dynamic_cast<CCtrlTextButton*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:join_pvp_clan_proposal:content:clan1"));
|
|
if( butClan1 == NULL )
|
|
return;
|
|
butClan1->setText( ucstring(EGSPD::CPeople::toString( clan1 )) );
|
|
|
|
CCtrlTextButton * butClan2 = dynamic_cast<CCtrlTextButton*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:join_pvp_clan_proposal:content:clan2"));
|
|
if( butClan2 == NULL )
|
|
return;
|
|
butClan2->setText( ucstring(EGSPD::CPeople::toString( clan2 )) );
|
|
}
|
|
*/
|
|
|
|
//-----------------------------------------------
|
|
// impulseEncyclopediaUpdate
|
|
//-----------------------------------------------
|
|
void impulseEncyclopediaUpdate(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//nlinfo("impulseCallback : Received ENCYCLOPEDIA:UPDATE");
|
|
|
|
CEncyclopediaUpdateMsg msg;
|
|
impulse.serial(msg);
|
|
if (PermanentlyBanned) return;
|
|
CEncyclopediaManager::getInstance()->update(msg);
|
|
}// impulseEncyclopediaUpdate //
|
|
|
|
//-----------------------------------------------
|
|
// impulseEncyclopediaInit
|
|
//-----------------------------------------------
|
|
void impulseEncyclopediaInit(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
//nlinfo("impulseCallback : Received ENCYCLOPEDIA:INIT");
|
|
|
|
CEncyclopediaUpdateMsg msg;
|
|
impulse.serial(msg);
|
|
if (PermanentlyBanned) return;
|
|
CEncyclopediaManager::getInstance()->update(msg);
|
|
}// impulseEncyclopediaInit //
|
|
|
|
//-----------------------------------------------
|
|
//-----------------------------------------------
|
|
void impulseItemOpenRoomInventory(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
// This is a message because we may do other things there
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:INVENTORY_ROOM_OPENED")->setValue32(1);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
//-----------------------------------------------
|
|
void impulseItemCloseRoomInventory(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
if (PermanentlyBanned) return;
|
|
// This is a message because we may do other things there
|
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:INVENTORY_ROOM_OPENED")->setValue32(0);
|
|
|
|
// deactivate the pop up window
|
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:inv_room"));
|
|
if (pGC == NULL) return;
|
|
pGC->setActive(false);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
//-----------------------------------------------
|
|
void impulseUserBars(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint8 msgNumber;
|
|
sint32 ChaScore1, ChaScore3, ChaScore2, ChaScore4;
|
|
impulse.serial(msgNumber);
|
|
impulse.serial(ChaScore1);
|
|
impulse.serial(ChaScore3);
|
|
impulse.serial(ChaScore2);
|
|
impulse.serial(ChaScore4);
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
// Setup the user Bars
|
|
CBarManager::CBarInfo bi;
|
|
CBarManager::getInstance()->setupUserBarInfo(msgNumber, ChaScore1, ChaScore3, ChaScore2, ChaScore4);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
//-----------------------------------------------
|
|
void impulseOutpostChooseSide(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
// read message
|
|
bool playerGuildInConflict;
|
|
bool playerGuildIsAttacker;
|
|
impulse.serial(playerGuildInConflict);
|
|
impulse.serial(playerGuildIsAttacker);
|
|
uint32 ownerGuildNameId;
|
|
impulse.serial( ownerGuildNameId );
|
|
uint32 attackerGuildNameId;
|
|
impulse.serial( attackerGuildNameId );
|
|
uint32 declTimer;
|
|
impulse.serial( declTimer );
|
|
|
|
// start
|
|
OutpostManager.startPvpJoinProposal(playerGuildInConflict, playerGuildIsAttacker,
|
|
ownerGuildNameId, attackerGuildNameId, declTimer);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
//-----------------------------------------------
|
|
void impulseOutpostDeclareWarAck(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
bool canValidate;
|
|
uint32 docTextId;
|
|
uint32 timeStartAttack;
|
|
|
|
impulse.serial(canValidate);
|
|
impulse.serial(docTextId);
|
|
impulse.serial(timeStartAttack);
|
|
|
|
// write result in Local DB.
|
|
CInterfaceManager *pIM= CInterfaceManager::getInstance();
|
|
|
|
// ack reception
|
|
CCDBNodeLeaf *node= NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:OUTPOST:DECLARE_WAR_ACK_RECEIVED");
|
|
if(node)
|
|
node->setValueBool(true);
|
|
// set result of ACK
|
|
node= NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:OUTPOST:DECLARE_WAR_ACK_OK");
|
|
if(node)
|
|
node->setValueBool(canValidate);
|
|
node= NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:OUTPOST:DECLARE_WAR_ACK_TEXTID");
|
|
if(node)
|
|
node->setValue32(docTextId);
|
|
node= NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:OUTPOST:DECLARE_WAR_ACK_TIME_RANGE_ATT");
|
|
if(node)
|
|
node->setValue32(timeStartAttack);
|
|
}
|
|
|
|
extern void addWebIGParams(string &url, bool trustedDomain);
|
|
|
|
//-----------------------------------------------
|
|
//-----------------------------------------------
|
|
class CServerMessageBoxOnReceiveTextId : public STRING_MANAGER::IStringWaitCallback
|
|
{
|
|
private:
|
|
enum TTextType {TitleType= 0, ContentType, NumTextType};
|
|
uint32 _TextId[NumTextType];
|
|
bool _TextReceived[NumTextType];
|
|
bool _AlreadyDisplayed;
|
|
|
|
// show the window
|
|
void activateMsgBoxWindow()
|
|
{
|
|
STRING_MANAGER::CStringManagerClient *pSMC= STRING_MANAGER::CStringManagerClient::instance();
|
|
|
|
// get the content string (should have been received!)
|
|
ucstring contentStr;
|
|
ucstring titleStr;
|
|
if(!pSMC->getDynString(_TextId[ContentType], contentStr))
|
|
return;
|
|
|
|
if(!pSMC->getDynString(_TextId[TitleType], titleStr))
|
|
return;
|
|
|
|
// if the string start with a @{Wxxxx} code, remove it and get the wanted window size
|
|
sint w = 256; // default size to 256 !!
|
|
bool is_webig = false;
|
|
|
|
if(contentStr.size()>=6 && contentStr[0]=='W' && contentStr[1]=='E' && contentStr[2]=='B'
|
|
&& contentStr[3]==' ' && contentStr[4]==':' && contentStr[5]==' ' )
|
|
{
|
|
uint i;
|
|
const uint digitStart= 6;
|
|
const uint digitMaxEnd= (uint)contentStr.size();
|
|
|
|
is_webig = true;
|
|
|
|
for(i = digitStart; i < digitMaxEnd; i++)
|
|
{
|
|
if(contentStr[i] == ' ')
|
|
break;
|
|
}
|
|
if(i != digitMaxEnd)
|
|
{
|
|
ucstring web_app = contentStr.substr(digitStart, i-digitStart);
|
|
contentStr = ucstring("http://"+ClientCfg.WebIgMainDomain+"/")+web_app+ucstring("/index.php?")+contentStr.substr(i+1);
|
|
}
|
|
else
|
|
{
|
|
contentStr.clear();
|
|
i = digitStart;
|
|
}
|
|
}
|
|
else if(contentStr.size()>=5 && contentStr[0]=='@' && contentStr[1]=='{' && contentStr[2]=='W')
|
|
{
|
|
uint i;
|
|
const uint digitStart= 3;
|
|
const uint digitMaxEnd= 8;
|
|
for(i=digitStart;i<contentStr.size() && i<digitMaxEnd;i++)
|
|
{
|
|
if(contentStr[i]=='}')
|
|
break;
|
|
}
|
|
if(i!=digitMaxEnd)
|
|
{
|
|
// get the width
|
|
ucstring digitStr= contentStr.substr(digitStart, i-digitStart);
|
|
fromString(digitStr.toString(), w);
|
|
// remove the first tag
|
|
contentStr= contentStr.substr(i+1);
|
|
}
|
|
}
|
|
|
|
// open the message box window or web ig
|
|
CInterfaceManager *pIM= CInterfaceManager::getInstance();
|
|
|
|
if (is_webig)
|
|
{
|
|
CGroupHTML *groupHtml;
|
|
string group = titleStr.toString();
|
|
// <missing:XXX>
|
|
group = group.substr(9, group.size()-10);
|
|
groupHtml = dynamic_cast<CGroupHTML*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:"+group+":content:html"));
|
|
if (!groupHtml)
|
|
{
|
|
groupHtml = dynamic_cast<CGroupHTML*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:webig:content:html"));
|
|
group = "webig";
|
|
}
|
|
|
|
if (groupHtml)
|
|
{
|
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:"+group));
|
|
if (pGC)
|
|
{
|
|
if (contentStr.empty())
|
|
{
|
|
pGC->setActive(false);
|
|
}
|
|
else
|
|
{
|
|
if (group == "webig")
|
|
pGC->setActive(true);
|
|
string url = contentStr.toString();
|
|
addWebIGParams(url, true);
|
|
groupHtml->browse(url.c_str());
|
|
CWidgetManager::getInstance()->setTopWindow(pGC);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:server_message_box"));
|
|
if (pGC)
|
|
{
|
|
// show the window with correct width
|
|
pGC->setW(w);
|
|
pGC->setActive(true);
|
|
|
|
// must set the text by hand
|
|
CViewText *vt= dynamic_cast<CViewText*>(CWidgetManager::getInstance()->getElementFromId(CWidgetManager::getInstance()->getParser()->getDefine("server_message_box_content_view_text")));
|
|
if(vt)
|
|
vt->setTextFormatTaged(contentStr);
|
|
|
|
// open
|
|
CWidgetManager::getInstance()->setTopWindow(pGC);
|
|
pGC->invalidateCoords();
|
|
// Yoyo: because of buggued group container, I found that 6 times is a good number....
|
|
for(uint i=0;i<6;i++)
|
|
pGC->updateCoords();
|
|
pGC->center();
|
|
pGC->enableBlink(2);
|
|
}
|
|
}
|
|
}
|
|
|
|
public:
|
|
// called when the string is available
|
|
virtual void onDynStringAvailable(uint stringId, const ucstring &value)
|
|
{
|
|
// don't care if already displayed
|
|
if(_AlreadyDisplayed)
|
|
return;
|
|
|
|
// check if one of waited text
|
|
for(uint i=0;i<NumTextType;i++)
|
|
{
|
|
if(stringId==_TextId[i])
|
|
{
|
|
_TextReceived[i]= true;
|
|
}
|
|
}
|
|
|
|
// all received?
|
|
for(uint i=0;i<NumTextType;i++)
|
|
{
|
|
if(!_TextReceived[i])
|
|
return;
|
|
}
|
|
// Yes => display window
|
|
_AlreadyDisplayed= true;
|
|
activateMsgBoxWindow();
|
|
}
|
|
|
|
// start the waiter
|
|
void startWaitTexts(uint32 titleTextId, uint32 docTextId)
|
|
{
|
|
// reset
|
|
_TextId[TitleType]= titleTextId;
|
|
_TextId[ContentType]= docTextId;
|
|
_TextReceived[TitleType]= false;
|
|
_TextReceived[ContentType]= false;
|
|
_AlreadyDisplayed= false;
|
|
|
|
// start to wait receive of those string (NB: they may be already here, but waitDynStrings calls directly the callback in this case)
|
|
STRING_MANAGER::CStringManagerClient *pSMC= STRING_MANAGER::CStringManagerClient::instance();
|
|
pSMC->waitDynString(titleTextId, this);
|
|
pSMC->waitDynString(docTextId, this);
|
|
}
|
|
};
|
|
CServerMessageBoxOnReceiveTextId ServerMessageBoxOnReceiveTextId;
|
|
|
|
|
|
void impulseUserPopup(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 titleTextId;
|
|
uint32 docTextId;
|
|
impulse.serial(titleTextId);
|
|
impulse.serial(docTextId);
|
|
|
|
// setup TEMP DB for title
|
|
CInterfaceManager *pIM= CInterfaceManager::getInstance();
|
|
CCDBNodeLeaf *node= NLGUI::CDBManager::getInstance()->getDbProp("UI:TEMP:SERVER_POPUP:TITLE");
|
|
if(node) node->setValue32(titleTextId);
|
|
|
|
// Open the Popup only when the 2 dyn strings are available
|
|
ServerMessageBoxOnReceiveTextId.startWaitTexts(titleTextId, docTextId);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
//-----------------------------------------------
|
|
//extern void impulseCombatFlyingChaScore1Delta(NLMISC::CBitMemStream &impulse);
|
|
void impulseCombatFlyingChaScore1Delta(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 entityID;
|
|
uint32 rgba;
|
|
sint16 ChaScore1Delta;
|
|
impulse.serial(entityID);
|
|
impulse.serial(rgba);
|
|
impulse.serial(ChaScore1Delta);
|
|
CRGBA color((uint8)(rgba>>24&255), (uint8)(rgba>>16&255), (uint8)(rgba>>8&255), (uint8)(rgba&255));
|
|
CEntityCL *entity = EntitiesMngr.getEntityByCompressedIndex(entityID);
|
|
if (entity)
|
|
entity->addChaScore1Output(ucstring(toString("%d", ChaScore1Delta)), color);
|
|
}
|
|
|
|
void impulseCombatFlyingTextItemSpecialEffectProc(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 entityID;
|
|
uint32 rgba;
|
|
uint8 effect;
|
|
sint32 param;
|
|
impulse.serial(entityID);
|
|
impulse.serial(rgba);
|
|
impulse.serial(effect);
|
|
impulse.serial(param);
|
|
CRGBA color((uint8)(rgba>>24&255), (uint8)(rgba>>16&255), (uint8)(rgba>>8&255), (uint8)(rgba&255));
|
|
ucstring text = CI18N::get(toString("uiItemSpecialEffectFlyingText%s", ITEM_SPECIAL_EFFECT::toString((ITEM_SPECIAL_EFFECT::TItemSpecialEffect)effect).c_str()));
|
|
strFindReplace(text, "%param", toString("%d", param));
|
|
CEntityCL *entity = EntitiesMngr.getEntityByCompressedIndex(entityID);
|
|
if (entity)
|
|
entity->addChaScore1Output(text, color);
|
|
}
|
|
|
|
void impulseCombatFlyingText(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint32 entityID;
|
|
uint8 tmp;
|
|
impulse.serial(entityID);
|
|
impulse.serial(tmp);
|
|
COMBAT_FLYING_TEXT::TCombatFlyingText type = (COMBAT_FLYING_TEXT::TCombatFlyingText)tmp;
|
|
|
|
CRGBA color(255, 255, 255);
|
|
ucstring text("");
|
|
float dt = 0.0f;
|
|
|
|
switch (type)
|
|
{
|
|
case COMBAT_FLYING_TEXT::TargetDodge: // The target dodged
|
|
color = CRGBA(255, 128, 64);
|
|
text = CI18N::get("uiDodge");
|
|
break;
|
|
|
|
case COMBAT_FLYING_TEXT::TargetParry: // The target parried
|
|
color = CRGBA(255, 128, 64);
|
|
text = CI18N::get("uiParry");
|
|
break;
|
|
|
|
case COMBAT_FLYING_TEXT::TargetEvade: // Actually the user miss his hit
|
|
color = CRGBA(255, 128, 64);
|
|
text = CI18N::get("uiEvade");
|
|
break;
|
|
|
|
case COMBAT_FLYING_TEXT::SelfEvade: // Actually the target miss his hit
|
|
color = CRGBA(255, 255, 0);
|
|
text = CI18N::get("uiEvade");
|
|
break;
|
|
|
|
case COMBAT_FLYING_TEXT::TargetResist: // The target resisted magic
|
|
color = CRGBA(255, 128, 64);
|
|
text = CI18N::get("uiResist");
|
|
break;
|
|
|
|
case COMBAT_FLYING_TEXT::SelfResist: // The user resisted magic
|
|
color = CRGBA(255, 255, 0);
|
|
text = CI18N::get("uiResist");
|
|
break;
|
|
|
|
case COMBAT_FLYING_TEXT::SelfInterrupt: // the user cast was interupted
|
|
color = CRGBA(200, 0, 0);
|
|
text = CI18N::get("uiInterrupt");
|
|
dt = 0.4f;
|
|
break;
|
|
|
|
case COMBAT_FLYING_TEXT::SelfFailure: // The user failed to cast
|
|
color = CRGBA(200, 0, 0);
|
|
text = CI18N::get("uiFailure");
|
|
break;
|
|
|
|
default: // bad type
|
|
nlwarning("Bad type for COMBAT_FLYING_TEXT:TCombatFlyingText enum");
|
|
break;
|
|
}
|
|
|
|
CEntityCL *entity = EntitiesMngr.getEntityByCompressedIndex(entityID);
|
|
if (entity)
|
|
entity->addChaScore1Output(text, color, dt);
|
|
}
|
|
|
|
void impulseSetSeason(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
extern uint8 ServerSeasonValue;
|
|
extern bool ServerSeasonReceived;
|
|
impulse.serial(ServerSeasonValue);
|
|
ServerSeasonReceived = true;
|
|
}
|
|
|
|
void impulseDssDown(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
FarTP.onDssDown();
|
|
}
|
|
|
|
void impulseSetNpcIconDesc(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
uint8 nb8;
|
|
impulse.serial(nb8);
|
|
bool hasChanged = false;
|
|
for (uint i=0; i!=(uint)nb8; ++i)
|
|
{
|
|
TNPCIconCacheKey npcIconCacheKey;
|
|
impulse.serial(npcIconCacheKey);
|
|
uint32 state;
|
|
impulse.serial(state);
|
|
hasChanged = CNPCIconCache::getInstance().onReceiveMissionAvailabilityForThisChar(npcIconCacheKey, (NPC_ICON::TNPCMissionGiverState)state) || hasChanged; // mind the order to avoid partial evaluation
|
|
}
|
|
if (hasChanged)
|
|
CNPCIconCache::getInstance().refreshIconsOfScene();
|
|
}
|
|
|
|
void impulseServerEventForMissionAvailability(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
CNPCIconCache::getInstance().onEventForMissionAvailabilityForThisChar();
|
|
}
|
|
|
|
void impulseSetNpcIconTimer(NLMISC::CBitMemStream &impulse)
|
|
{
|
|
NLMISC::TGameCycle delay;
|
|
impulse.serial(delay);
|
|
CNPCIconCache::getInstance().setMissionGiverTimer(delay);
|
|
}
|
|
|
|
//-----------------------------------------------
|
|
// initializeNetwork :
|
|
//-----------------------------------------------
|
|
void initializeNetwork()
|
|
{
|
|
GenericMsgHeaderMngr.setCallback("DB_UPD_PLR", impulseDatabaseUpdatePlayer);
|
|
GenericMsgHeaderMngr.setCallback("DB_INIT:PLR", impulseDatabaseInitPlayer);
|
|
GenericMsgHeaderMngr.setCallback("DB_UPD_INV", impulseUpdateInventory);
|
|
GenericMsgHeaderMngr.setCallback("DB_INIT:INV", impulseInitInventory);
|
|
GenericMsgHeaderMngr.setCallback("DB_GROUP:UPDATE_BANK", impulseDatabaseUpdateBank);
|
|
GenericMsgHeaderMngr.setCallback("DB_GROUP:INIT_BANK", impulseDatabaseInitBank);
|
|
GenericMsgHeaderMngr.setCallback("DB_GROUP:RESET_BANK", impulseDatabaseResetBank);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:NO_USER_CHAR", impulseNoUserChar);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:USER_CHARS", impulseUserChars);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:USER_CHAR", impulseUserChar);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:FAR_TP", impulseFarTP);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:READY", impulseServerReady);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:VALID_NAME", impulseCharNameValid);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:SHARD_ID", impulseShardId);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:SERVER_QUIT_OK", impulseServerQuitOk);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:SERVER_QUIT_ABORT", impulseServerQuitAbort);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:MAIL_AVAILABLE", impulseMailNotification);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:GUILD_MESSAGE_AVAILABLE", impulseForumNotification);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:PERMANENT_BAN", impulsePermanentBan);
|
|
GenericMsgHeaderMngr.setCallback("CONNECTION:UNBAN", impulsePermanentUnban);
|
|
|
|
GenericMsgHeaderMngr.setCallback("STRING:CHAT", impulseChat);
|
|
GenericMsgHeaderMngr.setCallback("STRING:TELL", impulseTell);
|
|
GenericMsgHeaderMngr.setCallback("STRING:FAR_TELL", impulseFarTell);
|
|
GenericMsgHeaderMngr.setCallback("STRING:CHAT2", impulseChat2);
|
|
GenericMsgHeaderMngr.setCallback("STRING:DYN_STRING", impulseDynString);
|
|
GenericMsgHeaderMngr.setCallback("STRING:DYN_STRING_GROUP", inpulseDynStringInChatGroup);
|
|
GenericMsgHeaderMngr.setCallback("STRING:TELL2", impulseTell2);
|
|
// GenericMsgHeaderMngr.setCallback("STRING:ADD_DYN_STR", impulseAddDynStr);
|
|
GenericMsgHeaderMngr.setCallback("TP:DEST", impulseTP);
|
|
GenericMsgHeaderMngr.setCallback("TP:DEST_WITH_SEASON", impulseTPWithSeason);
|
|
GenericMsgHeaderMngr.setCallback("TP:CORRECT", impulseCorrectPos);
|
|
GenericMsgHeaderMngr.setCallback("COMBAT:ENGAGE_FAILED", impulseCombatEngageFailed);
|
|
GenericMsgHeaderMngr.setCallback("BOTCHAT:DYNCHAT_OPEN", impulseDynChatOpen);
|
|
GenericMsgHeaderMngr.setCallback("BOTCHAT:DYNCHAT_CLOSE", impulseDynChatClose);
|
|
|
|
GenericMsgHeaderMngr.setCallback("CASTING:BEGIN", impulseBeginCast);
|
|
GenericMsgHeaderMngr.setCallback("TEAM:INVITATION", impulseTeamInvitation);
|
|
GenericMsgHeaderMngr.setCallback("TEAM:SHARE_OPEN", impulseTeamShareOpen);
|
|
GenericMsgHeaderMngr.setCallback("TEAM:SHARE_INVALID", impulseTeamShareInvalid);
|
|
GenericMsgHeaderMngr.setCallback("TEAM:SHARE_CLOSE", impulseTeamShareClose);
|
|
GenericMsgHeaderMngr.setCallback("TEAM:CONTACT_INIT", impulseTeamContactInit);
|
|
GenericMsgHeaderMngr.setCallback("TEAM:CONTACT_CREATE", impulseTeamContactCreate);
|
|
GenericMsgHeaderMngr.setCallback("TEAM:CONTACT_STATUS", impulseTeamContactStatus);
|
|
GenericMsgHeaderMngr.setCallback("TEAM:CONTACT_REMOVE", impulseTeamContactRemove);
|
|
|
|
GenericMsgHeaderMngr.setCallback("EXCHANGE:INVITATION", impulseExchangeInvitation);
|
|
GenericMsgHeaderMngr.setCallback("EXCHANGE:CLOSE_INVITATION", impulseExchangeCloseInvitation);
|
|
GenericMsgHeaderMngr.setCallback("ANIMALS:MOUNT_ABORT", impulseMountAbort);
|
|
|
|
GenericMsgHeaderMngr.setCallback("DEBUG:REPLY_WHERE", impulseWhere);
|
|
GenericMsgHeaderMngr.setCallback("DEBUG:COUNTER", impulseCounter);
|
|
|
|
//
|
|
GenericMsgHeaderMngr.setCallback("STRING_MANAGER:PHRASE_SEND", impulsePhraseSend);
|
|
GenericMsgHeaderMngr.setCallback("STRING_MANAGER:STRING_RESP", impulseStringResp);
|
|
GenericMsgHeaderMngr.setCallback("STRING_MANAGER:RELOAD_CACHE", impulseReloadCache);
|
|
//
|
|
GenericMsgHeaderMngr.setCallback("BOTCHAT:FORCE_END", impulseBotChatForceEnd);
|
|
|
|
GenericMsgHeaderMngr.setCallback("JOURNAL:INIT_COMPLETED_MISSIONS", impulseJournalInitCompletedMissions);
|
|
GenericMsgHeaderMngr.setCallback("JOURNAL:UPDATE_COMPLETED_MISSIONS", impulseJournalUpdateCompletedMissions);
|
|
// GenericMsgHeaderMngr.setCallback("JOURNAL:CANT_ABANDON", impulseJournalCantAbandon);
|
|
|
|
GenericMsgHeaderMngr.setCallback("JOURNAL:ADD_COMPASS", impulseJournalAddCompass);
|
|
GenericMsgHeaderMngr.setCallback("JOURNAL:REMOVE_COMPASS", impulseJournalRemoveCompass);
|
|
|
|
|
|
//GenericMsgHeaderMngr.setCallback("GUILD:SET_MEMBER_INFO", impulseGuildSetMemberInfo);
|
|
//GenericMsgHeaderMngr.setCallback("GUILD:INIT_MEMBER_INFO", impulseGuildInitMemberInfo);
|
|
|
|
GenericMsgHeaderMngr.setCallback("GUILD:JOIN_PROPOSAL", impulseGuildJoinProposal);
|
|
|
|
GenericMsgHeaderMngr.setCallback("GUILD:ASCENSOR", impulseGuildAscensor);
|
|
GenericMsgHeaderMngr.setCallback("GUILD:LEAVE_ASCENSOR", impulseGuildLeaveAscensor);
|
|
GenericMsgHeaderMngr.setCallback("GUILD:ABORT_CREATION", impulseGuildAbortCreation);
|
|
GenericMsgHeaderMngr.setCallback("GUILD:OPEN_GUILD_WINDOW", impulseGuildOpenGuildWindow);
|
|
|
|
GenericMsgHeaderMngr.setCallback("GUILD:OPEN_INVENTORY", impulseGuildOpenInventory);
|
|
GenericMsgHeaderMngr.setCallback("GUILD:CLOSE_INVENTORY", impulseGuildCloseInventory);
|
|
|
|
GenericMsgHeaderMngr.setCallback("GUILD:UPDATE_PLAYER_TITLE", impulseGuildUpdatePlayerTitle);
|
|
GenericMsgHeaderMngr.setCallback("GUILD:USE_FEMALE_TITLES", impulseGuildUseFemaleTitles);
|
|
//GenericMsgHeaderMngr.setCallback("GUILD:INVITATION", impulseGuildInvitation);
|
|
|
|
GenericMsgHeaderMngr.setCallback("HARVEST:CLOSE_TEMP_INVENTORY", impulseCloseTempInv);
|
|
|
|
GenericMsgHeaderMngr.setCallback("COMMAND:REMOTE_ADMIN", impulseRemoteAdmin);
|
|
|
|
GenericMsgHeaderMngr.setCallback("PHRASE:DOWNLOAD", impulsePhraseDownLoad);
|
|
GenericMsgHeaderMngr.setCallback("PHRASE:CONFIRM_BUY", impulsePhraseConfirmBuy);
|
|
GenericMsgHeaderMngr.setCallback("PHRASE:EXEC_CYCLIC_ACK", impulsePhraseAckExecuteCyclic);
|
|
GenericMsgHeaderMngr.setCallback("PHRASE:EXEC_NEXT_ACK", impulsePhraseAckExecuteNext);
|
|
|
|
GenericMsgHeaderMngr.setCallback("ITEM_INFO:SET", impulseItemInfoSet);
|
|
GenericMsgHeaderMngr.setCallback("ITEM_INFO:REFRESH_VERSION", impulseItemInfoRefreshVersion);
|
|
GenericMsgHeaderMngr.setCallback("MISSION_PREREQ:SET", impulsePrereqInfoSet);
|
|
GenericMsgHeaderMngr.setCallback("ITEM:OPEN_ROOM_INVENTORY", impulseItemOpenRoomInventory);
|
|
GenericMsgHeaderMngr.setCallback("ITEM:CLOSE_ROOM_INVENTORY", impulseItemCloseRoomInventory);
|
|
|
|
GenericMsgHeaderMngr.setCallback("DEATH:RESPAWN_POINT", impulseDeathRespawnPoint);
|
|
GenericMsgHeaderMngr.setCallback("DEATH:RESPAWN", impulseDeathRespawn);
|
|
|
|
GenericMsgHeaderMngr.setCallback("DUEL:INVITATION", impulseDuelInvitation);
|
|
GenericMsgHeaderMngr.setCallback("DUEL:CANCEL_INVITATION", impulseDuelCancelInvitation);
|
|
|
|
GenericMsgHeaderMngr.setCallback("PVP_CHALLENGE:INVITATION", impulsePVPChallengeInvitation);
|
|
GenericMsgHeaderMngr.setCallback("PVP_CHALLENGE:CANCEL_INVITATION", impulsePVPChallengeCancelInvitation);
|
|
|
|
GenericMsgHeaderMngr.setCallback("PVP_FACTION:PUSH_FACTION_WAR", impulsePVPFactionPushFactionWar);
|
|
GenericMsgHeaderMngr.setCallback("PVP_FACTION:POP_FACTION_WAR", impulsePVPFactionPopFactionWar);
|
|
GenericMsgHeaderMngr.setCallback("PVP_FACTION:FACTION_WARS", impulsePVPFactionFactionWars);
|
|
|
|
|
|
// GenericMsgHeaderMngr.setCallback("PVP_VERSUS:CHOOSE_CLAN", impulsePVPChooseClan);
|
|
|
|
GenericMsgHeaderMngr.setCallback("ENCYCLOPEDIA:UPDATE", impulseEncyclopediaUpdate);
|
|
GenericMsgHeaderMngr.setCallback("ENCYCLOPEDIA:INIT", impulseEncyclopediaInit);
|
|
|
|
GenericMsgHeaderMngr.setCallback("USER:BARS", impulseUserBars);
|
|
GenericMsgHeaderMngr.setCallback("USER:POPUP", impulseUserPopup);
|
|
|
|
|
|
GenericMsgHeaderMngr.setCallback("MISSION:ASK_ENTER_CRITICAL", impulseEnterCrZoneProposal);
|
|
GenericMsgHeaderMngr.setCallback("MISSION:CLOSE_ENTER_CRITICAL", impulseCloseEnterCrZoneProposal);
|
|
|
|
// Module gateway message
|
|
GenericMsgHeaderMngr.setCallback( "MODULE_GATEWAY:FEOPEN", cbImpulsionGatewayOpen);
|
|
GenericMsgHeaderMngr.setCallback( "MODULE_GATEWAY:GATEWAY_MSG", cbImpulsionGatewayMessage );
|
|
GenericMsgHeaderMngr.setCallback( "MODULE_GATEWAY:FECLOSE", cbImpulsionGatewayClose );
|
|
|
|
GenericMsgHeaderMngr.setCallback( "OUTPOST:CHOOSE_SIDE", impulseOutpostChooseSide );
|
|
GenericMsgHeaderMngr.setCallback( "OUTPOST:DECLARE_WAR_ACK", impulseOutpostDeclareWarAck );
|
|
|
|
GenericMsgHeaderMngr.setCallback( "COMBAT:FLYING_ChaScore1_DELTA", impulseCombatFlyingChaScore1Delta );
|
|
GenericMsgHeaderMngr.setCallback( "COMBAT:FLYING_TEXT_ISE", impulseCombatFlyingTextItemSpecialEffectProc );
|
|
GenericMsgHeaderMngr.setCallback( "COMBAT:FLYING_TEXT", impulseCombatFlyingText );
|
|
|
|
GenericMsgHeaderMngr.setCallback( "SEASON:SET", impulseSetSeason );
|
|
GenericMsgHeaderMngr.setCallback( "RING_MISSION:DSS_DOWN", impulseDssDown );
|
|
|
|
GenericMsgHeaderMngr.setCallback( "NPC_ICON:SET_DESC", impulseSetNpcIconDesc );
|
|
GenericMsgHeaderMngr.setCallback( "NPC_ICON:SVR_EVENT_MIS_AVL", impulseServerEventForMissionAvailability );
|
|
GenericMsgHeaderMngr.setCallback( "NPC_ICON:SET_TIMER", impulseSetNpcIconTimer );
|
|
}
|
|
|
|
|
|
//-----------------------------------------------
|
|
// impulseCallBack :
|
|
// The impulse callback to receive all msg from the frontend.
|
|
//-----------------------------------------------
|
|
void impulseCallBack(NLMISC::CBitMemStream &impulse, sint32 packet, void *arg)
|
|
{
|
|
GenericMsgHeaderMngr.execute(impulse);
|
|
}
|
|
|
|
|
|
////////////
|
|
// METHOD //
|
|
////////////
|
|
//-----------------------------------------------
|
|
// CNetManager :
|
|
// Constructor.
|
|
//-----------------------------------------------
|
|
CNetManager::CNetManager() : CNetworkConnection()
|
|
{
|
|
#ifdef ENABLE_INCOMING_MSG_RECORDER
|
|
_IsReplayStarting = false;
|
|
#endif
|
|
}// CNetManager //
|
|
|
|
//-----------------------------------------------
|
|
// update :
|
|
// Updates the whole connection with the frontend.
|
|
// Call this method evently.
|
|
// \return bool : 'true' if data were sent/received.
|
|
//-----------------------------------------------
|
|
bool CNetManager::update()
|
|
{
|
|
H_AUTO_USE ( RZ_Client_Net_Mngr_Update )
|
|
|
|
#ifdef ENABLE_INCOMING_MSG_RECORDER
|
|
if(_IsReplayStarting)
|
|
return;
|
|
#endif
|
|
|
|
// If the client is in Local Mode -> no network.
|
|
if(ClientCfg.Local)
|
|
{
|
|
// Init
|
|
if(_CurrentServerTick == 0)
|
|
{
|
|
if(T1 >= _LCT)
|
|
{
|
|
_MachineTimeAtTick = T1;
|
|
_CurrentClientTime = _MachineTimeAtTick - _LCT;
|
|
_CurrentClientTick = 0;
|
|
_CurrentServerTick = 10;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
if((T1 - _MachineTimeAtTick) >= _MsPerTick)
|
|
{
|
|
NLMISC::TGameCycle nbTick = (NLMISC::TGameCycle)((T1 - _MachineTimeAtTick)/_MsPerTick);
|
|
_CurrentClientTick += nbTick;
|
|
_CurrentServerTick += nbTick;
|
|
_MachineTimeAtTick += nbTick*_MsPerTick;
|
|
}
|
|
|
|
// update the smooth server tick for debug
|
|
CNetworkConnection::updateSmoothServerTick();
|
|
|
|
// emulation done
|
|
#ifdef ENABLE_INCOMING_MSG_RECORDER
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
// Update the base class.
|
|
bool result = CNetworkConnection::update();
|
|
// Get changes with the update.
|
|
const vector<CChange> &changes = NetMngr.getChanges();
|
|
|
|
// Manage changes
|
|
vector<CChange>::const_iterator it;
|
|
for(it = changes.begin(); it < changes.end(); ++it)
|
|
{
|
|
const CChange &change = *it;
|
|
// Update a property.
|
|
if(change.Property < AddNewEntity)
|
|
{
|
|
if (!IgnoreEntityDbUpdates || change.ShortId == 0)
|
|
{
|
|
// Update the visual property for the slot.
|
|
EntitiesMngr.updateVisualProperty(change.GameCycle, change.ShortId, change.Property, change.PositionInfo.PredictedInterval);
|
|
}
|
|
else
|
|
{
|
|
nlwarning("CNetManager::update : Skipping EntitiesMngr.updateVisualProperty() because IgnoreEntityDbUpdates=%s and change.ShortId=%d", (IgnoreEntityDbUpdates?"true":"false"), change.ShortId);
|
|
}
|
|
}
|
|
// Add New Entity (and remove the old one in the slot).
|
|
else if(change.Property == AddNewEntity)
|
|
{
|
|
if (!IgnoreEntityDbUpdates || change.ShortId == 0)
|
|
{
|
|
// Remove the old entity.
|
|
EntitiesMngr.remove(change.ShortId, false);
|
|
// Create the new entity.
|
|
if(EntitiesMngr.create(change.ShortId, get(change.ShortId), change.NewEntityInfo) == 0)
|
|
nlwarning("CNetManager::update : entity in the slot '%u' has not been created.", change.ShortId);
|
|
}
|
|
else
|
|
{
|
|
nlwarning("CNetManager::update : Skipping EntitiesMngr.create() because IgnoreEntityDbUpdates=%s and change.ShortId=%d", (IgnoreEntityDbUpdates?"true":"false"), change.ShortId);
|
|
}
|
|
}
|
|
// Delete an entity
|
|
else if(change.Property == RemoveOldEntity)
|
|
{
|
|
if (!IgnoreEntityDbUpdates || change.ShortId == 0)
|
|
{
|
|
// Remove the old entity.
|
|
EntitiesMngr.remove(change.ShortId, true);
|
|
}
|
|
else
|
|
{
|
|
nlwarning("CNetManager::update : Skipping EntitiesMngr.remove() because IgnoreEntityDbUpdates=%s and change.ShortId=%d", (IgnoreEntityDbUpdates?"true":"false"), change.ShortId);
|
|
}
|
|
}
|
|
// Lag detected.
|
|
else if(change.Property == LagDetected)
|
|
{
|
|
nldebug("CNetManager::update : Lag detected.");
|
|
}
|
|
// Probe received.
|
|
else if(change.Property == ProbeReceived)
|
|
{
|
|
nldebug("CNetManager::update : Probe Received.");
|
|
}
|
|
// Connection ready.
|
|
else if(change.Property == ConnectionReady)
|
|
{
|
|
nldebug("CNetManager::update : Connection Ready.");
|
|
}
|
|
// Property unknown.
|
|
else
|
|
nlwarning("CNetManager::update : The property '%d' is unknown.", change.Property);
|
|
}
|
|
ChatMngr.flushBuffer(InterfaceChatDisplayer);
|
|
// Clear all changes.
|
|
clearChanges();
|
|
|
|
// Update data base server state
|
|
if (IngameDbMngr.getNodePtr())
|
|
{
|
|
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
if (im)
|
|
{
|
|
CCDBNodeLeaf *node = NULL;
|
|
|
|
if (!m_PingLeaf)
|
|
m_PingLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:PING", false);
|
|
|
|
if (m_PingLeaf)
|
|
{
|
|
node = &*m_PingLeaf;
|
|
if (node)
|
|
node->setValue32(getPing());
|
|
}
|
|
|
|
if (!m_UploadLeaf)
|
|
m_UploadLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:UPLOAD", false);
|
|
|
|
if (m_UploadLeaf)
|
|
{
|
|
node = &*m_UploadLeaf;
|
|
if (node)
|
|
node->setValue32((sint32)(getMeanUpload()*1024.f/8.f));
|
|
}
|
|
|
|
if (!m_DownloadLeaf)
|
|
m_DownloadLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:DOWNLOAD", false);
|
|
|
|
if (m_DownloadLeaf)
|
|
{
|
|
node = &*m_DownloadLeaf;
|
|
if (node)
|
|
node->setValue32((sint32)(getMeanDownload()*1024.f/8.f));
|
|
}
|
|
|
|
if (!m_PacketLostLeaf)
|
|
m_PacketLostLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:PACKETLOST", false);
|
|
|
|
if (m_PacketLostLeaf)
|
|
{
|
|
node = &*m_PacketLostLeaf;
|
|
if (node)
|
|
node->setValue32((sint32)getMeanPacketLoss());
|
|
}
|
|
|
|
if (!m_ServerStateLeaf)
|
|
m_ServerStateLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:SERVERSTATE", false);
|
|
|
|
if (m_ServerStateLeaf)
|
|
{
|
|
node = &*m_ServerStateLeaf;
|
|
if (node)
|
|
node->setValue32((sint32)getConnectionState());
|
|
}
|
|
|
|
if (!m_ConnectionQualityLeaf)
|
|
m_ConnectionQualityLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:CONNECTION_QUALITY", false);
|
|
|
|
if (m_ConnectionQualityLeaf)
|
|
{
|
|
node = &*m_ConnectionQualityLeaf;
|
|
if (node)
|
|
node->setValue32((sint32)getConnectionQuality());
|
|
}
|
|
}
|
|
}
|
|
|
|
// Return 'true' if data were sent/received.
|
|
return result;
|
|
|
|
|
|
}// update //
|
|
|
|
//-----------------------------------------------
|
|
// getConnectionQuality :
|
|
//-----------------------------------------------
|
|
bool CNetManager::getConnectionQuality()
|
|
{
|
|
// If the client is in Local Mode -> no network.
|
|
if(ClientCfg.Local)
|
|
return true;
|
|
|
|
return CNetworkConnection::getConnectionQuality();
|
|
}// getConnectionQuality //
|
|
|
|
|
|
/**
|
|
* Buffers a bitmemstream, that will be converted into a generic action, to be sent later to the server (at next update).
|
|
*/
|
|
void CNetManager::push(NLMISC::CBitMemStream &msg)
|
|
{
|
|
// If the client is in Local Mode -> no network.
|
|
if(ClientCfg.Local)
|
|
return;
|
|
|
|
if (PermanentlyBanned) return;
|
|
|
|
CNetworkConnection::push(msg);
|
|
}
|
|
|
|
/**
|
|
* Buffers a target action
|
|
*/
|
|
void CNetManager::pushTarget(CLFECOMMON::TCLEntityId slot)
|
|
{
|
|
// If the client is in Local Mode -> no network.
|
|
if(ClientCfg.Local)
|
|
{
|
|
if(UserEntity->mode() != MBEHAV::COMBAT
|
|
&& UserEntity->mode() != MBEHAV::COMBAT_FLOAT)
|
|
{
|
|
UserEntity->targetSlot(slot);
|
|
}
|
|
return;
|
|
}
|
|
|
|
CNetworkConnection::pushTarget(slot, LHSTATE::NONE);
|
|
}
|
|
|
|
|
|
/**
|
|
* Buffers a pick-up action
|
|
*/
|
|
void CNetManager::pushPickup(CLFECOMMON::TCLEntityId slot, LHSTATE::TLHState lootOrHarvest)
|
|
{
|
|
// If the client is in Local Mode -> no network.
|
|
if(ClientCfg.Local)
|
|
{
|
|
return;
|
|
}
|
|
|
|
CNetworkConnection::pushTarget(slot, lootOrHarvest);
|
|
}
|
|
|
|
|
|
/**
|
|
* Send
|
|
*/
|
|
void CNetManager::send(NLMISC::TGameCycle gameCycle)
|
|
{
|
|
// If the client is in Local Mode -> no network.
|
|
if(ClientCfg.Local)
|
|
return;
|
|
|
|
// wait till next server is received
|
|
if (_LastSentCycle >= gameCycle)
|
|
{
|
|
//nlinfo ("Try to CNetManager::send(%d) _LastSentCycle=%d more than one time with the same game cycle, so we wait new game cycle to send", gameCycle, _LastSentCycle);
|
|
while (_LastSentCycle >= gameCycle)
|
|
{
|
|
// Update network.
|
|
update();
|
|
// Send dummy info
|
|
send();
|
|
// Do not take all the CPU.
|
|
nlSleep(100);
|
|
|
|
gameCycle = getCurrentServerTick();
|
|
}
|
|
}
|
|
|
|
CNetworkConnection::send(gameCycle);
|
|
}
|
|
|
|
/**
|
|
* Send
|
|
*/
|
|
void CNetManager::send()
|
|
{
|
|
// If the client is in Local Mode -> no network.
|
|
if(ClientCfg.Local)
|
|
return;
|
|
|
|
CNetworkConnection::send();
|
|
}
|
|
|
|
/**
|
|
* Disconnects the current connection
|
|
*/
|
|
void CNetManager::disconnect()
|
|
{
|
|
// If the client is in Local Mode -> no need to disconnect.
|
|
if(ClientCfg.Local)
|
|
return;
|
|
|
|
CNetworkConnection::disconnect();
|
|
}// disconnect //
|
|
|
|
|
|
/**
|
|
* Reset data and init the socket
|
|
*/
|
|
void CNetManager::reinit()
|
|
{
|
|
if(ClientCfg.Local)
|
|
return;
|
|
|
|
IngameDbMngr.resetInitState();
|
|
CNetworkConnection::reinit();
|
|
}
|
|
|
|
void CNetManager::waitForServer()
|
|
{
|
|
sint LastGameCycle = getCurrentServerTick();
|
|
|
|
for(;;)
|
|
{
|
|
// Event server get events
|
|
CInputHandlerManager::getInstance()->pumpEventsNoIM();
|
|
// Update Network.
|
|
update();
|
|
|
|
if (LastGameCycle != (sint) getCurrentServerTick())
|
|
break;
|
|
|
|
nlSleep(100);
|
|
send();
|
|
}
|
|
|
|
}// waitForServer //
|
|
|
|
|
|
#ifdef ENABLE_INCOMING_MSG_RECORDER
|
|
//-----------------------------------------------
|
|
// setReplayingMode :
|
|
//-----------------------------------------------
|
|
void CNetManager::setReplayingMode( bool onOff, const std::string& filename )
|
|
{
|
|
CNetworkConnection::setReplayingMode(onOff, filename);
|
|
_IsReplayStarting = onOff;
|
|
}// setReplayingMode //
|
|
|
|
//-----------------------------------------------
|
|
// startReplay :
|
|
//-----------------------------------------------
|
|
void CNetManager::startReplay()
|
|
{
|
|
// Init Replay
|
|
_MachineTimeAtTick = T1;
|
|
if(_MachineTimeAtTick >= _LCT)
|
|
_CurrentClientTime = _MachineTimeAtTick - _LCT;
|
|
else
|
|
_CurrentClientTime = 0;
|
|
// Replay now in progress.
|
|
_IsReplayStarting = false;
|
|
}// startReplay //
|
|
#endif
|
|
|
|
|
|
/*
|
|
* Create the net managers in CLIENT_MULTI mode
|
|
*/
|
|
void CNetManagerMulti::init( const std::string& cookie, const std::string& addr )
|
|
{
|
|
uint nb, baseCookie;
|
|
NLMISC::CConfigFile::CVar *var = ClientCfg.ConfigFile.getVarPtr( "NbConnections" );
|
|
if ( var )
|
|
nb = var->asInt();
|
|
else
|
|
nb = 1;
|
|
var = ClientCfg.ConfigFile.getVarPtr( "UserId" );
|
|
if ( var )
|
|
baseCookie = var->asInt();
|
|
else
|
|
baseCookie = 0;
|
|
std::vector<std::string> fsAddrs;
|
|
fsAddrs.push_back( addr );
|
|
string portString = addr.substr( addr.find( ':' ) );
|
|
var = ClientCfg.ConfigFile.getVarPtr( "AdditionalFSList" );
|
|
if ( var )
|
|
{
|
|
for ( uint i=0; i!=var->size(); ++i )
|
|
fsAddrs.push_back( var->asString( i ) + portString );
|
|
}
|
|
nlinfo( "CNetManagerMulti: Creating %u connections to %u front-ends, baseCookie=%u...", nb, fsAddrs.size(), baseCookie );
|
|
|
|
for ( uint i=0; i!=nb; ++i )
|
|
{
|
|
CNetManager *nm = new CNetManager();
|
|
string multicook = NLMISC::toString( "%8x|%8x|%8x", 0, 0, baseCookie + i );
|
|
nm->init( multicook, fsAddrs[i % fsAddrs.size()] );
|
|
_NetManagers.push_back( nm );
|
|
}
|
|
}
|
|
|
|
//
|
|
uint32 ShardId = 0;
|
|
std::string WebServer;
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////// COMMANDS after should NOT appear IN the FINAL VERSION ///////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#if !FINAL_VERSION
|
|
|
|
// temp : simulate a team msg in local mode
|
|
NLMISC_COMMAND(localTellTeam, "Temp : simulate a tell in local mode", "<people_name> <msg>")
|
|
{
|
|
if (args.empty()) return false;
|
|
ucstring player = args[0];
|
|
std::string msg;
|
|
if (args.size() >= 2)
|
|
{
|
|
msg = args[1];
|
|
for(uint k = 2; k < args.size(); ++k)
|
|
{
|
|
msg += " " + args[k];
|
|
}
|
|
}
|
|
TDataSetIndex dsi = INVALID_DATASET_INDEX;
|
|
InterfaceChatDisplayer.displayChat(dsi, ucstring(msg), ucstring(msg), CChatGroup::team, NLMISC::CEntityId::Unknown, player);
|
|
return true;
|
|
}
|
|
|
|
// temp : simulate a tell in local mode
|
|
NLMISC_COMMAND(localTell, "Temp : simulate a tell in local mode", "<people_name> <msg>")
|
|
{
|
|
if (args.empty()) return false;
|
|
ucstring player = args[0];
|
|
std::string msg;
|
|
if (args.size() >= 2)
|
|
{
|
|
msg = args[1];
|
|
for(uint k = 2; k < args.size(); ++k)
|
|
{
|
|
msg += " " + args[k];
|
|
}
|
|
}
|
|
// TDataSetIndex dsi = INVALID_DATASET_ROW;
|
|
InterfaceChatDisplayer.displayTell(/*dsi, */ucstring(msg), player);
|
|
return true;
|
|
}
|
|
|
|
NLMISC_COMMAND(testDynChatOpen, "", "")
|
|
{
|
|
NLMISC::CBitMemStream bm;
|
|
if (bm.isReading()) bm.invert();
|
|
uint32 BotUID = 22; // Compressed Index
|
|
uint32 BotName = 654; // Server string
|
|
vector<uint32> DynStrs; // 0 - Desc, 1 - Option0, 2 - Option1, etc....
|
|
DynStrs.push_back(16540);
|
|
DynStrs.push_back(11465);
|
|
DynStrs.push_back(12654);
|
|
bm.serial(BotUID);
|
|
bm.serial(BotName);
|
|
bm.serialCont(DynStrs);
|
|
bm.invert();
|
|
bm.seek(0, NLMISC::IStream::begin);
|
|
impulseDynChatOpen(bm);
|
|
return true;
|
|
}
|
|
|
|
NLMISC_COMMAND(testDynChatClose, "", "")
|
|
{
|
|
NLMISC::CBitMemStream bm;
|
|
if (bm.isReading()) bm.invert();
|
|
uint32 BotUID = 22; // Compressed Index
|
|
bm.serial(BotUID);
|
|
bm.invert();
|
|
bm.seek(0, NLMISC::IStream::begin);
|
|
impulseDynChatClose(bm);
|
|
return true;
|
|
}
|
|
|
|
|
|
NLMISC_COMMAND(testCloseTempInv, "","")
|
|
{
|
|
NLMISC::CBitMemStream bm;
|
|
impulseCloseTempInv(bm);
|
|
return true;
|
|
}
|
|
|
|
NLMISC_COMMAND(testTeamInvite, "","")
|
|
{
|
|
NLMISC::CBitMemStream bm;
|
|
if (bm.isReading()) bm.invert();
|
|
uint32 index = 10;
|
|
bm.serial(index);
|
|
bm.invert();
|
|
bm.seek(0, NLMISC::IStream::begin);
|
|
impulseTeamInvitation(bm);
|
|
return true;
|
|
}
|
|
NLMISC_COMMAND(testGuildInvite, "","")
|
|
{
|
|
NLMISC::CBitMemStream bm;
|
|
if (bm.isReading()) bm.invert();
|
|
uint32 index = 10;
|
|
bm.serial(index);
|
|
bm.serial(index);
|
|
bm.invert();
|
|
bm.seek(0, NLMISC::IStream::begin);
|
|
impulseGuildJoinProposal(bm);
|
|
return true;
|
|
}
|
|
|
|
NLMISC_COMMAND( testExchangeInvitation, "Test the modal window for invitation exchange", "" )
|
|
{
|
|
CBitMemStream impulse;
|
|
uint32 nameIndex = 0;
|
|
impulse.serial(nameIndex);
|
|
impulse.invert();
|
|
impulseExchangeInvitation(impulse);
|
|
return true;
|
|
}
|
|
|
|
|
|
NLMISC_COMMAND(testAscensor, "Temp : Simulate a GUILD:ASCENSOR message coming from server","")
|
|
{
|
|
NLMISC::CBitMemStream bm;
|
|
if (bm.isReading()) bm.invert();
|
|
uint32 index = 10;
|
|
bm.serial(index);
|
|
bm.invert();
|
|
bm.seek(0, NLMISC::IStream::begin);
|
|
impulseGuildAscensor(bm);
|
|
return true;
|
|
}
|
|
|
|
NLMISC_COMMAND(testDuelInvite, "","")
|
|
{
|
|
NLMISC::CBitMemStream bm;
|
|
if (bm.isReading()) bm.invert();
|
|
uint32 index = 10;
|
|
bm.serial(index);
|
|
bm.invert();
|
|
bm.seek(0, NLMISC::IStream::begin);
|
|
impulseDuelInvitation(bm);
|
|
return true;
|
|
}
|
|
|
|
//NLMISC_COMMAND(receiveId, "","<num> <name>")
|
|
//{
|
|
// uint32 index;
|
|
// fromString(args[0], index);
|
|
// ucstring ucstr = args[1];
|
|
//
|
|
// vector<bool> code;
|
|
//
|
|
//#ifdef OLD_STRING_SYSTEM
|
|
// ChatMngr.getDynamicDB().add( index, ucstr, code );
|
|
//#else
|
|
// // TRAP // WE MUST NEVER CALL THIS COMMAND ANYMORE : ALL IS HANDLED BY STRING_MANAGER NOW !!!
|
|
// nlstop;
|
|
//#endif
|
|
//
|
|
// return true;
|
|
//}
|
|
|
|
NLMISC_COMMAND(testOutpostChooseSide, "","b b u32 u32")
|
|
{
|
|
if(args.size()<4)
|
|
return false;
|
|
NLMISC::CBitMemStream bm;
|
|
if (bm.isReading()) bm.invert();
|
|
bool playerGuildInConflict;
|
|
fromString(args[0], playerGuildInConflict);
|
|
bool playerGuildIsAttacker;
|
|
fromString(args[1], playerGuildIsAttacker);
|
|
bm.serial(playerGuildInConflict);
|
|
bm.serial(playerGuildIsAttacker);
|
|
uint32 ownerGuildNameId;
|
|
fromString(args[2], ownerGuildNameId);
|
|
bm.serial( ownerGuildNameId );
|
|
uint32 attackerGuildNameId;
|
|
fromString(args[3], attackerGuildNameId);
|
|
bm.serial( attackerGuildNameId );
|
|
uint32 declTimer= 100;
|
|
bm.serial( declTimer );
|
|
|
|
bm.invert();
|
|
bm.seek(0, NLMISC::IStream::begin);
|
|
impulseOutpostChooseSide(bm);
|
|
return true;
|
|
}
|
|
|
|
NLMISC_COMMAND(testUserPopup, "","u32 u32")
|
|
{
|
|
if(args.size()<2)
|
|
return false;
|
|
NLMISC::CBitMemStream bm;
|
|
if (bm.isReading()) bm.invert();
|
|
uint32 titleId;
|
|
fromString(args[0], titleId);
|
|
bm.serial( titleId );
|
|
uint32 textId;
|
|
fromString(args[1], textId);
|
|
bm.serial( textId );
|
|
|
|
bm.invert();
|
|
bm.seek(0, NLMISC::IStream::begin);
|
|
impulseUserPopup(bm);
|
|
return true;
|
|
}
|
|
|
|
|
|
#endif
|
|
|