create or replace package body loader as procedure get_version_number(current_version in out number, min_version in out number) as begin select version_number, min_version_number into current_version, min_version from version_number; end; function locate_player (p_object_id number) return number as begin insert into object_list (object_id, container_level) select object_id, level+100 from objects start with object_id = p_object_id connect by prior object_id = contained_by and deleted = 0 and prior load_contents='Y'; return sql%rowcount; end; procedure locate_universe as begin insert into object_list (object_id) select o.object_id from objects o, universe_objects u where o.object_id = u.object_id and o.deleted=0; end; procedure locate_contained_object (p_container_id number, p_object_id number) as begin insert into object_list (object_id, container_level) select object_id, level from objects start with object_id = p_object_id and contained_by = p_container_id and deleted = 0 connect by prior object_id = contained_by and deleted = 0 and prior load_contents='Y'; end; procedure locate_contents (p_container_id number) as begin insert into object_list (object_id) select object_id from objects start with contained_by = p_container_id and deleted = 0 connect by prior object_id = contained_by and deleted = 0 and prior load_contents='Y'; end; function get_characters (p_station_id number) return cursortype as result_cursor cursortype; begin open result_cursor for select character_object, object_template_id, scene_id, object_name, container, x, y, z from character_view where station_id = p_station_id; return result_cursor; end; function load_chunk_object_list (p_scene_id varchar, p_node_x float, p_node_z float) return number as num number; begin select count(*) into num from objects where node_x = p_node_x and node_z = p_node_z and scene_id = p_scene_id and deleted = 0; if (num > 0) then insert into object_list (object_id, container_level) select object_id, level from objects start with node_x = p_node_x and node_z = p_node_z and scene_id = p_scene_id and deleted = 0 and contained_by = 0 and player_controlled = 'N' connect by prior object_id = contained_by and deleted = 0 and player_controlled='N' and prior load_contents='Y'; return sql%rowcount; else return 0; end if; end; function load_attributes return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.type, t.value from object_list l, attributes t where t.object_id = l.object_id; return result_cursor; end; function load_manf_schematic_attributes return cursortype as result_cursor cursortype; begin open result_cursor for select t.object_id, t.attribute_type, t.value /*+ ORDERED USE_NL(T) */ from object_list l, manf_schematic_attributes t where t.object_id = l.object_id; return result_cursor; end; function load_armor return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.layer, t.object_template, t.effectiveness, t.integrity, t.special_protections, t.encumberance_0, t.encumberance_1, t.encumberance_2, t.encumberance_3, t.encumberance_4, t.encumberance_5, t.encumberance_6, t.encumberance_7, t.encumberance_8 from object_list l, armor t where t.object_id = l.object_id; return result_cursor; end; function load_scripts return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T)*/ t.object_id, t.script, t.sequence_no from object_list l, scripts t where t.object_id = l.object_id; return result_cursor; end; function load_object_variables return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) USE_NL(N)*/ t.object_id, n.name, t.type, t.value from object_list l, object_variables t, object_variable_names n where l.object_id = t.object_id and t.name_id = n.id and nvl(t.detached,0) = 0; return result_cursor; end; function load_property_lists return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.list_id, t.value from object_list l, property_lists t where t.object_id = l.object_id; return result_cursor; end; function load_experience return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.experience_type, t.points from object_list l, experience_points t where t.object_id = l.object_id; return result_cursor; end; function load_battlefield_participants return cursortype as result_cursor cursortype; begin open result_cursor for select t.region_object_id, t.character_object_id, t.faction_id /*+ ORDERED USE_NL(T) */ from object_list l, battlefield_participants t where t.region_object_id = l.object_id; -- order does not matter return result_cursor; end; function load_player_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) USE_NL(A)*/ t.object_id, t.station_id, house_id, num_lots account_num_lots, is_outcast account_is_outcast, cheater_level account_cheater_level, max_lots_adjustment account_max_lots_adjustment, personal_profile_id, character_profile_id, skill_title, born_date, played_time from object_list l, player_objects t, accounts a where t.station_id = a.station_id and t.object_id = l.object_id; return result_cursor; end; function load_messages return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(MESSAGES) */ target, message_id, method, data, call_time, guaranteed, delivery_type from object_list, messages where target =object_list.object_id; return result_cursor; end; function load_location return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.list_id, t.sequence_number, t.name, t.scene, t.x, t.y, t.z, t.radius from object_list l, location_lists t where t.object_id = l.object_id; return result_cursor; end; function load_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, x, y, z, quaternion_w, quaternion_x, quaternion_y, quaternion_z, node_x, node_y, node_z, object_template_id, type_id, scene_id, controller_type, deleted, object_name, volume, contained_by, slot_arrangement, player_controlled, cache_version, load_contents, cash_balance, bank_balance, complexity, name_string_table, name_string_text, load_with, l.container_level from object_list l, objects t where t.object_id=l.object_id; return result_cursor; end; procedure verify_character (p_station_id in number, p_character_id in number, p_approved out varchar2, p_character_name out varchar2, p_scene_id out varchar2, p_container_id out number, p_x out number, p_y out number, p_z out number) as begin select object_name, scene_id, contained_by, x, y, z into p_character_name, p_scene_id, p_container_id, p_x, p_y, p_z from players p, objects o where p.station_id = p_station_id and p.character_object = p_character_id and o.object_id = p.character_object and o.deleted = 0; if (p_container_id = 0) then begin p_container_id := p_character_id; p_approved := 'Y'; end; else begin select scene_id, object_id, x,y,z,'Y' into p_scene_id, p_container_id, p_x, p_y, p_z, p_approved from objects where contained_by=0 start with object_id = p_character_id connect by prior contained_by=object_id; exception when no_data_found then select scene_id, object_id, x,y,z,'Y' into p_scene_id, p_container_id, p_x, p_y, p_z, p_approved from objects where object_id = p_character_id; end; end if; exception when no_data_found then select 'N' into p_approved from dual; when too_many_rows then select 'N' into p_approved from dual; end; function load_waypoint return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.waypoint_id, t.appearance_name_crc, t.location_x, t.location_y, t.location_z, t.location_cell, t.location_scene, t.name, t.color, t.active from object_list l, waypoints t where t.object_id=l.object_id; return result_cursor; end; -- GENERATED FUNCTIONS FOLLOW: function load_battlefield_marker_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.region_name from object_list l, battlefield_marker_objects t where t.object_id=l.object_id; return result_cursor; end; function load_building_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.maintenance_cost, t.time_last_checked, t.is_public, t.city_id from object_list l, building_objects t where t.object_id=l.object_id; return result_cursor; end; function load_cell_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.cell_number, t.is_public from object_list l, cell_objects t where t.object_id=l.object_id; return result_cursor; end; function load_city_object return cursortype as result_cursor cursortype; begin open result_cursor for select t.object_id from city_objects t, object_list l where t.object_id=l.object_id; return result_cursor; end; function load_creature_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.scale_factor, t.states, t.posture, t.shock_wounds, t.master_id, t.max_force_power, t.force_power, t.rank, t.base_walk_speed, t.base_run_speed from object_list l, creature_objects t where t.object_id=l.object_id; return result_cursor; end; function load_guild_object return cursortype as result_cursor cursortype; begin open result_cursor for select t.object_id from guild_objects t, object_list l where t.object_id=l.object_id; return result_cursor; end; function load_harvester_inst_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.installed_efficiency, t.resource_pool, t.max_extraction_rate, t.current_extraction_rate, t.max_hopper_amount from object_list l, harvester_installation_objects t where t.object_id=l.object_id; return result_cursor; end; function load_installation_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.installation_type, t.activated, t.tick_count, t.activate_start_time, t.power, t.power_rate from object_list l, installation_objects t where t.object_id=l.object_id; return result_cursor; end; function load_intangible_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.count from object_list l, intangible_objects t where t.object_id=l.object_id; return result_cursor; end; function load_manufacture_inst_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id from object_list l, manufacture_inst_objects t where t.object_id=l.object_id; return result_cursor; end; function load_manf_schematic_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.creator_id, t.creator_name, t.items_per_container, t.manufacture_time, t.draft_schematic from object_list l, manf_schematic_objects t where t.object_id=l.object_id; return result_cursor; end; function load_mission_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.difficulty, t.end_x, t.end_y, t.end_z, t.end_cell, t.end_scene, t.mission_creator, t.reward, t.root_script_name, t.start_x, t.start_y, t.start_z, t.start_cell, t.start_scene, t.description_table, t.description_text, t.title_table, t.title_text, t.mission_holder_id, t.status, t.mission_type, t.target_appearance, t.target_name from object_list l, mission_objects t where t.object_id=l.object_id; return result_cursor; end; function load_planet_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.planet_name from object_list l, planet_objects t where t.object_id=l.object_id; return result_cursor; end; function load_resource_container_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.resource_type, t.quantity, t.source from object_list l, resource_container_objects t where t.object_id=l.object_id; return result_cursor; end; function load_resource_pool_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.map_seed, t.depleted_timestamp, t.resource_type, t.planet from object_list l, resource_pool_objects t where t.object_id=l.object_id; return result_cursor; end; function load_resource_type_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.resource_name, t.resource_class, t.min_pools from object_list l, resource_type_objects t where t.object_id=l.object_id; return result_cursor; end; function load_ship_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id from object_list l, ship_objects t where t.object_id=l.object_id; return result_cursor; end; function load_static_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id from object_list l, static_objects t where t.object_id=l.object_id; return result_cursor; end; function load_tangible_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.armor_effectiveness, t.decay_time, t.hit_points, t.is_frozen, t.is_squelched, t.max_hit_points, t.owner_id, t.popup_help_id, t.quality_rating, t.visible, t.weight, t.appearance_data, t.pvp_type, t.pvp_faction, t.damage_taken, t.custom_appearance, t.count, t.condition from object_list l, tangible_objects t where t.object_id=l.object_id; return result_cursor; end; function load_token_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.reference, t.target_server_template_name, t.target_shared_template_name, t.waypoint from object_list l, token_objects t where t.object_id=l.object_id; return result_cursor; end; function load_universe_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id from object_list l, universe_objects t where t.object_id=l.object_id; return result_cursor; end; function load_vehicle_object return cursortype as result_cursor cursortype; begin open result_cursor for select t.object_id, t.bogus from vehicle_objects t, object_list l where t.object_id=l.object_id; return result_cursor; end; function load_weapon_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.attack_mode, t.min_damage, t.max_damage, t.attack_speed, t.wound_chance, t.zero_range_mod, t.max_range_mod, t.mid_range_mod, t.mid_range, t.attack_health_cost, t.attack_action_cost, t.attack_mind_cost, t.damage_radius from object_list l, weapon_objects t where t.object_id=l.object_id; return result_cursor; end; function load_factory_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id from object_list l, factory_objects t where t.object_id=l.object_id; return result_cursor; end; function load_player_quest_object return cursortype as result_cursor cursortype; begin open result_cursor for select /*+ ORDERED USE_NL(T) */ t.object_id, t.title, t.description, t.creator, t.total_tasks, t.difficulty, t.task_title1, t.task_description1, t.task_title2, t.task_description2, t.task_title3, t.task_description3, t.task_title4, t.task_description4, t.task_title5, t.task_description5, t.task_title6, t.task_description6, t.task_title7, t.task_description7, t.task_title8, t.task_description8, t.task_title9, t.task_description9, t.task_title10, t.task_description10, t.task_title11, t.task_description11, t.task_title12, t.task_description12 from object_list l, player_quest_objects t where t.object_id=l.object_id; return result_cursor; end; end; /