mirror of
https://github.com/SWG-Source/src.git
synced 2026-07-13 21:01:08 -04:00
Added database/sql
This commit is contained in:
@@ -0,0 +1,314 @@
|
||||
PROMPT CREATE OR REPLACE PACKAGE asset.asset_exporter
|
||||
|
||||
CREATE OR REPLACE PACKAGE asset.ASSET_EXPORTER
|
||||
as
|
||||
function update_shader (p_pathname varchar2, p_filename varchar2, p_effect varchar2)
|
||||
return number;
|
||||
function update_mesh (
|
||||
p_pathname varchar2,
|
||||
p_filename varchar2,
|
||||
p_type varchar2,
|
||||
p_num_polygons number,
|
||||
p_num_verts number,
|
||||
p_num_uv_sets number,
|
||||
p_extent_center_x float,
|
||||
p_extent_center_y float,
|
||||
p_extent_center_z float,
|
||||
p_extent_radius float,
|
||||
p_extent_box_min_x float,
|
||||
p_extent_box_min_y float,
|
||||
p_extent_box_min_z float,
|
||||
p_extent_box_max_x float,
|
||||
p_extent_box_max_y float,
|
||||
p_extent_box_max_z float,
|
||||
p_num_hardpoints number)
|
||||
return number;
|
||||
function update_texture (p_pathname varchar2, p_filename varchar2, p_texture_size number, p_depth number, p_num_mips number)
|
||||
return number;
|
||||
function update_lod (p_pathname varchar2, p_filename varchar2)
|
||||
return number;
|
||||
function update_component (p_pathname varchar2, p_filename varchar2)
|
||||
return number;
|
||||
function update_sprite (p_pathname varchar2, p_filename varchar2, p_radius float, p_center_x float,
|
||||
p_center_y float, p_center_z float)
|
||||
return number;
|
||||
function update_skeleton (p_pathname varchar2, p_filename varchar2, p_num_bones number)
|
||||
return number;
|
||||
function update_animation (p_pathname varchar2, p_filename varchar2, p_num_frames number, p_type varchar2, p_gender number)
|
||||
return number;
|
||||
function find_art_item(p_pathname varchar2, p_filename varchar2, p_type number)
|
||||
return number;
|
||||
|
||||
procedure wipe_tree(p_appearance_id number);
|
||||
procedure add_tree_node(p_appearance_id number, p_item_id number, p_entry_index number, p_exit_index number, p_parent_entry number);
|
||||
|
||||
procedure set_appearance_property(p_appearance_id number, p_name varchar2, p_value varchar2);
|
||||
procedure update_appearance(p_appearance_id number, p_author varchar2);
|
||||
procedure update_appearance2(p_appearance_id number, p_author varchar2, p_status number);
|
||||
end;
|
||||
|
||||
/
|
||||
|
||||
PROMPT CREATE OR REPLACE PACKAGE BODY asset.asset_exporter
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY asset.ASSET_EXPORTER as
|
||||
|
||||
function update_shader (p_pathname varchar2, p_filename varchar2, p_effect varchar2)
|
||||
return number
|
||||
as
|
||||
item_id number;
|
||||
begin
|
||||
item_id := find_art_item(p_pathname, p_filename,1);
|
||||
|
||||
update shaders
|
||||
set effect=p_effect
|
||||
where id=item_id;
|
||||
|
||||
if sql%rowcount = 0 then
|
||||
insert into shaders (id,effect)
|
||||
values (item_id,p_effect);
|
||||
end if;
|
||||
|
||||
return item_id;
|
||||
end;
|
||||
|
||||
function update_mesh (
|
||||
p_pathname varchar2,
|
||||
p_filename varchar2,
|
||||
p_type varchar2,
|
||||
p_num_polygons number,
|
||||
p_num_verts number,
|
||||
p_num_uv_sets number,
|
||||
p_extent_center_x float,
|
||||
p_extent_center_y float,
|
||||
p_extent_center_z float,
|
||||
p_extent_radius float,
|
||||
p_extent_box_min_x float,
|
||||
p_extent_box_min_y float,
|
||||
p_extent_box_min_z float,
|
||||
p_extent_box_max_x float,
|
||||
p_extent_box_max_y float,
|
||||
p_extent_box_max_z float,
|
||||
p_num_hardpoints number)
|
||||
return number
|
||||
as
|
||||
item_id number;
|
||||
begin
|
||||
item_id := find_art_item(p_pathname, p_filename,2);
|
||||
|
||||
update meshes
|
||||
set
|
||||
type=p_type,
|
||||
num_verts=p_num_verts,
|
||||
num_uv_sets=p_num_uv_sets,
|
||||
extent_center_x=p_extent_center_x,
|
||||
extent_center_y=p_extent_center_y,
|
||||
extent_center_z=p_extent_center_z,
|
||||
extent_radius=p_extent_radius,
|
||||
extent_box_min_x=p_extent_box_min_x,
|
||||
extent_box_min_y=p_extent_box_min_y,
|
||||
extent_box_min_z=p_extent_box_min_z,
|
||||
extent_box_max_x=p_extent_box_max_x,
|
||||
extent_box_max_y=p_extent_box_max_y,
|
||||
extent_box_max_z=p_extent_box_max_z
|
||||
where id=item_id;
|
||||
|
||||
if sql%rowcount = 0 then
|
||||
insert into meshes (id,type,num_polygons,num_verts,num_uv_sets,extent_center_x,extent_center_y,
|
||||
extent_center_z,extent_radius,extent_box_min_x,extent_box_min_y,extent_box_min_z,
|
||||
extent_box_max_x,extent_box_max_y,extent_box_max_z)
|
||||
values (item_id,p_type,p_num_polygons,p_num_verts,p_num_uv_sets,p_extent_center_x,p_extent_center_y,
|
||||
p_extent_center_z,p_extent_radius,p_extent_box_min_x,p_extent_box_min_y,p_extent_box_min_z,
|
||||
p_extent_box_max_x,p_extent_box_max_y,p_extent_box_max_z);
|
||||
end if;
|
||||
|
||||
return item_id;
|
||||
end;
|
||||
|
||||
function update_texture (p_pathname varchar2, p_filename varchar2, p_texture_size number, p_depth number, p_num_mips number)
|
||||
return number
|
||||
as
|
||||
item_id number;
|
||||
begin
|
||||
item_id := find_art_item(p_pathname, p_filename,3);
|
||||
|
||||
update textures
|
||||
set texture_size=p_texture_size, depth=p_depth, num_mips=p_num_mips
|
||||
where id=item_id;
|
||||
|
||||
if sql%rowcount = 0 then
|
||||
insert into textures (id,texture_size,depth,num_mips)
|
||||
values (item_id,p_texture_size,p_depth,p_num_mips);
|
||||
end if;
|
||||
|
||||
return item_id;
|
||||
end;
|
||||
|
||||
function update_lod (p_pathname varchar2, p_filename varchar2)
|
||||
return number
|
||||
as
|
||||
item_id number;
|
||||
begin
|
||||
item_id := find_art_item(p_pathname, p_filename,4);
|
||||
|
||||
insert into lods (id)
|
||||
select item_id
|
||||
from dual
|
||||
where not exists (
|
||||
select * from lods
|
||||
where id=item_id);
|
||||
|
||||
return item_id;
|
||||
end;
|
||||
|
||||
function update_component (p_pathname varchar2, p_filename varchar2)
|
||||
return number
|
||||
as
|
||||
item_id number;
|
||||
begin
|
||||
item_id := find_art_item(p_pathname, p_filename,5);
|
||||
|
||||
insert into components (id)
|
||||
select item_id
|
||||
from dual
|
||||
where not exists (
|
||||
select * from components
|
||||
where id=item_id);
|
||||
|
||||
return item_id;
|
||||
end;
|
||||
|
||||
function update_sprite (p_pathname varchar2, p_filename varchar2, p_radius float, p_center_x float,
|
||||
p_center_y float, p_center_z float)
|
||||
return number
|
||||
as
|
||||
item_id number;
|
||||
begin
|
||||
item_id := find_art_item(p_pathname, p_filename,6);
|
||||
|
||||
update sprites
|
||||
set radius=p_radius, center_x=p_center_x, center_y=p_center_y, center_z=p_center_z
|
||||
where id=item_id;
|
||||
|
||||
if sql%rowcount = 0 then
|
||||
insert into sprites (id,radius,center_x,center_y,center_z)
|
||||
values (item_id, p_radius, p_center_x, p_center_y, p_center_z);
|
||||
end if;
|
||||
|
||||
return item_id;
|
||||
end;
|
||||
|
||||
function update_skeleton (p_pathname varchar2, p_filename varchar2, p_num_bones number)
|
||||
return number
|
||||
as
|
||||
item_id number;
|
||||
begin
|
||||
item_id := find_art_item(p_pathname, p_filename,7);
|
||||
|
||||
update skeletons
|
||||
set num_bones=p_num_bones
|
||||
where id=item_id;
|
||||
|
||||
if sql%rowcount = 0 then
|
||||
insert into skeletons (id,num_bones)
|
||||
values (item_id, p_num_bones);
|
||||
end if;
|
||||
|
||||
return item_id;
|
||||
end;
|
||||
|
||||
function update_animation (p_pathname varchar2, p_filename varchar2, p_num_frames number, p_type varchar2, p_gender number)
|
||||
return number
|
||||
as
|
||||
item_id number;
|
||||
begin
|
||||
item_id := find_art_item(p_pathname, p_filename,8);
|
||||
|
||||
update animations
|
||||
set num_frames=p_num_frames, type=p_type, gender=p_gender
|
||||
where id=item_id;
|
||||
|
||||
if sql%rowcount = 0 then
|
||||
insert into animations (id, num_frames, type, gender)
|
||||
values (item_id, p_num_frames, p_type, p_gender);
|
||||
end if;
|
||||
|
||||
return item_id;
|
||||
end;
|
||||
|
||||
function find_art_item(p_pathname varchar2, p_filename varchar2, p_type number)
|
||||
return number
|
||||
as
|
||||
item_id number;
|
||||
begin
|
||||
select id
|
||||
into item_id
|
||||
from art_items
|
||||
where pathname = p_pathname
|
||||
and filename = p_filename;
|
||||
|
||||
return item_id;
|
||||
|
||||
exception
|
||||
when NO_DATA_FOUND then
|
||||
select art_item_ids.nextval
|
||||
into item_id
|
||||
from dual;
|
||||
|
||||
insert into art_items (id, pathname, filename, type_id)
|
||||
values (item_id, p_pathname, p_filename, p_type);
|
||||
|
||||
return item_id;
|
||||
end;
|
||||
|
||||
procedure wipe_tree(p_appearance_id number)
|
||||
as
|
||||
begin
|
||||
delete from art_asset_tree where appearance_id=p_appearance_id;
|
||||
end;
|
||||
|
||||
|
||||
procedure add_tree_node(p_appearance_id number, p_item_id number, p_entry_index number, p_exit_index number, p_parent_entry number)
|
||||
as
|
||||
begin
|
||||
insert into art_asset_tree (appearance_id,parent_entry,entry_index,exit_index,item_id)
|
||||
values (p_appearance_id, p_parent_entry, p_entry_index, p_exit_index, p_item_id);
|
||||
end;
|
||||
|
||||
procedure set_appearance_property(p_appearance_id number, p_name varchar2, p_value varchar2)
|
||||
as
|
||||
begin
|
||||
update appearance_properties
|
||||
set property_value=p_value
|
||||
where appearance_id = p_appearance_id
|
||||
and property_name = p_name;
|
||||
|
||||
if sql%rowcount = 0 then
|
||||
insert into appearance_properties (appearance_id, property_name, property_value)
|
||||
values (p_appearance_id, p_name, p_value);
|
||||
end if;
|
||||
end;
|
||||
|
||||
procedure update_appearance(p_appearance_id number, p_author varchar2)
|
||||
as
|
||||
begin
|
||||
update appearances
|
||||
set author=p_author,
|
||||
exported_date = sysdate
|
||||
where id = p_appearance_id;
|
||||
end;
|
||||
|
||||
procedure update_appearance2(p_appearance_id number, p_author varchar2, p_status number)
|
||||
as
|
||||
begin
|
||||
update appearances
|
||||
set author=p_author,
|
||||
status_id=p_status,
|
||||
exported_date = sysdate
|
||||
where id = p_appearance_id;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
/
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
create table script_log
|
||||
(
|
||||
UPDATE_TIME DATE,
|
||||
OBJECT_ID NUMBER,
|
||||
SEQUENCE_NO NUMBER,
|
||||
SCRIPT VARCHAR2(100),
|
||||
UPDATE_TYPE CHAR(1)
|
||||
);
|
||||
|
||||
create or replace trigger audit_script_insert
|
||||
before insert on scripts
|
||||
for each row
|
||||
begin
|
||||
insert into script_log values(sysdate, :new.object_id, :new.sequence_no, :new.script,'A');
|
||||
end;
|
||||
/
|
||||
|
||||
create or replace trigger audit_script_delete
|
||||
before delete on scripts
|
||||
for each row
|
||||
begin
|
||||
insert into script_log values(sysdate, :old.object_id, :old.sequence_no, :old.script,'D');
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,10 @@
|
||||
CREATE TABLE "LOG_TYPE" (
|
||||
"LOG_TYPE_ID" VARCHAR2(10) NOT NULL,
|
||||
"LOG_TYPE_DESC" VARCHAR2(255) NOT NULL );
|
||||
|
||||
CREATE TABLE LOGGER (
|
||||
LOGTIME DATE DEFAULT SYSDATE NOT NULL,
|
||||
LOG_TYPE_ID VARCHAR2 (10) NOT NULL,
|
||||
MSG_ID NUMBER (10) NOT NULL,
|
||||
MSG_TEXT VARCHAR2 (255) NOT NULL);
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
CREATE OR REPLACE PACKAGE BODY "LOGGING" as
|
||||
procedure LOGGER(v_log_type_id IN varchar2, v_should_commit IN INTEGER, v_msg_id IN NUMBER, v_msg_text IN varchar2)
|
||||
as
|
||||
begin
|
||||
insert into logger ( log_type_id, msg_id, msg_text ) values ( v_log_type_id, v_msg_id, v_msg_text );
|
||||
if v_should_commit = 1 then
|
||||
commit;
|
||||
end if;
|
||||
end logger;
|
||||
|
||||
procedure LOG_STATUS(v_msg_id IN NUMBER, v_msg_text IN varchar2)
|
||||
as
|
||||
begin
|
||||
LOGGING.LOGGER('STATUS', 1, v_msg_id, v_msg_text );
|
||||
end log_status;
|
||||
|
||||
procedure LOG_ERROR(v_msg_id IN NUMBER, v_msg_text IN varchar2)
|
||||
as
|
||||
begin
|
||||
LOGGING.LOGGER('ERROR', 1, v_msg_id, v_msg_text );
|
||||
end log_error;
|
||||
|
||||
end logging;
|
||||
@@ -0,0 +1,5 @@
|
||||
CREATE OR REPLACE PACKAGE "LOGGING" as
|
||||
procedure LOGGER(v_log_type_id IN varchar2, v_should_commit IN INTEGER, v_msg_id IN NUMBER, v_msg_text IN varchar2);
|
||||
procedure LOG_STATUS(v_msg_id IN NUMBER, v_msg_text IN varchar2);
|
||||
procedure LOG_ERROR(v_msg_id IN NUMBER, v_msg_text IN varchar2);
|
||||
end logging;
|
||||
@@ -0,0 +1,443 @@
|
||||
CREATE OR REPLACE PACKAGE BODY "PURGE_METHODS" is
|
||||
/**********************************************************************/
|
||||
/*** Purge Objects ***/
|
||||
/*** ***/
|
||||
/*** Deletes objects marked for deletion in child object tables and ***/
|
||||
/*** then the master objects table based on date value ***/
|
||||
/**********************************************************************/
|
||||
|
||||
FUNCTION Purge_objects
|
||||
(date_in in objects.deleted_date%type)
|
||||
RETURN PLS_INTEGER
|
||||
IS
|
||||
v_count PLS_INTEGER := 0;
|
||||
|
||||
Obj_list Obj_list_t; -- VARRAY object to hold ids to bulk delete for child objects
|
||||
Obj_rowid_list Obj_rowid_list_t; -- VARRAY object to hold ids to bulk delete for parent objects
|
||||
Obj_list_index PLS_INTEGER; -- index into VARRAY object
|
||||
|
||||
BEGIN
|
||||
|
||||
Obj_list := Obj_list_t(); -- initialize VARRAY object
|
||||
Obj_list.extend(chunk_size); -- allocate VARRAY object memory to chunk size
|
||||
|
||||
LOGGING.LOG_STATUS(1,'Starting child object deletions.');
|
||||
|
||||
--open the cursor for the object ids we want to purge.
|
||||
--we will use these ids to delete child records from other tables
|
||||
FOR x IN (SELECT /*+ INDEX (OBJECTS DELETED_OBJECT_IDX) */ object_id
|
||||
FROM objects
|
||||
WHERE deleted_date < date_in) LOOP
|
||||
|
||||
v_count := v_count + 1;
|
||||
Obj_list_index := MOD(v_count, chunk_size); -- what obj index for this batch
|
||||
|
||||
If Obj_list_index = 0 then
|
||||
Obj_list(chunk_size) := x.object_id; -- make sure we fill last VARRAY element
|
||||
Purge_objects_work(Obj_list); -- bulk delete object ids in VARRAY list
|
||||
COMMIT;
|
||||
LOGGING.LOG_STATUS(v_count,'batch purged');
|
||||
Else
|
||||
Obj_list(Obj_list_index) := x.object_id; -- fill VARRAY with ids
|
||||
End If;
|
||||
|
||||
END LOOP;
|
||||
|
||||
LOGGING.LOG_STATUS(v_count,'Child object main loop exited.');
|
||||
|
||||
--Now delete remaining partially full object list for child objects
|
||||
If Obj_list_index != 0 then
|
||||
Obj_list.trim(chunk_size - Obj_list_index);
|
||||
Purge_objects_work(Obj_list);
|
||||
COMMIT;
|
||||
LOGGING.LOG_STATUS(v_count,'Deleting chunk remainder.');
|
||||
End If;
|
||||
|
||||
Obj_list.delete; -- cleanup - delete VARRAY list
|
||||
|
||||
LOGGING.LOG_STATUS(v_count,'Finished deleting '|| to_char(v_count) ||' references to child objects.');
|
||||
|
||||
--Now delete parent objects
|
||||
v_count := 0; -- reinitialize
|
||||
Obj_rowid_list := Obj_rowid_list_t(); -- initialize VARRAY object
|
||||
Obj_rowid_list.extend(chunk_size); -- allocate VARRAY memory at chunk size
|
||||
|
||||
LOGGING.LOG_STATUS(1,'Starting parent object deletions.');
|
||||
|
||||
FOR x IN (SELECT /*+ INDEX (OBJECTS DELETED_OBJECT_IDX) */ ROWID
|
||||
FROM objects
|
||||
WHERE deleted_date < date_in) LOOP
|
||||
|
||||
v_count := v_count + 1;
|
||||
Obj_list_index := MOD(v_count, chunk_size); -- what obj index for this batch
|
||||
|
||||
If Obj_list_index = 0 then
|
||||
Obj_rowid_list(chunk_size) := x.ROWID; -- make sure we fill last VARRAY element
|
||||
FORALL i IN Obj_rowid_list.First..Obj_rowid_list.Last DELETE FROM objects WHERE ROWID = Obj_rowid_list(i); --bulk delete
|
||||
COMMIT;
|
||||
Else
|
||||
Obj_rowid_list(Obj_list_index) := x.ROWID; -- fill VARRAY with ids
|
||||
End If;
|
||||
|
||||
END LOOP;
|
||||
|
||||
LOGGING.LOG_STATUS(v_count,'Parent object main loop exited.');
|
||||
|
||||
--Now delete remaining partially full object list for parent objects
|
||||
If Obj_list_index != 0 then
|
||||
Obj_rowid_list.trim(chunk_size - Obj_list_index);
|
||||
FORALL i IN Obj_rowid_list.First..Obj_rowid_list.Last DELETE FROM objects WHERE ROWID = Obj_rowid_list(i);
|
||||
COMMIT;
|
||||
LOGGING.LOG_STATUS(v_count,'Deleting chunk remainder.');
|
||||
End If;
|
||||
|
||||
Obj_rowid_list.delete; -- cleanup - delete VARRAY list
|
||||
|
||||
LOGGING.LOG_STATUS(v_count,'Finished deleting '|| to_char(v_count) ||' parent objects.');
|
||||
RETURN 0;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
ROLLBACK;
|
||||
|
||||
IF v_count = 0 THEN
|
||||
dbms_output.put_line ('never deleted');
|
||||
LOGGING.LOG_ERROR(SQLCODE, SQLERRM);
|
||||
END IF;
|
||||
dbms_output.put_line (v_count||': iterations');
|
||||
LOGGING.LOG_ERROR(SQLCODE, SQLERRM);
|
||||
RETURN SQLCODE;
|
||||
END Purge_objects;
|
||||
|
||||
/**********************************************************************/
|
||||
/*** Purge Objects Work ***/
|
||||
/*** ***/
|
||||
/*** Bulk delete objects marked for deletion in child object tables ***/
|
||||
/*** given a list of object ids passed in from a VARRAY. Called ***/
|
||||
/*** purge objects function. ***/
|
||||
/**********************************************************************/
|
||||
|
||||
PROCEDURE Purge_objects_work
|
||||
(Obj_list IN Obj_list_t) IS
|
||||
|
||||
BEGIN
|
||||
|
||||
--delete all children
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM armor WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM attributes WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM battlefield_marker_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM battlefield_participants WHERE region_object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM battlefield_participants WHERE character_object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM biographies WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM building_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM cell_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM city_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM creature_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM experience_points WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM factory_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM guild_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM harvester_installation_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM installation_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM intangible_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM location_lists WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM manf_schematic_attributes WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM manf_schematic_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM manufacture_inst_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM mission_objects WHERE object_id = Obj_list(i);
|
||||
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM object_variables WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM planet_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM player_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM property_lists WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM resource_container_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM resource_pool_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM resource_type_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM scripts WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM static_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM tangible_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM token_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM universe_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM vehicle_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM waypoints WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM weapon_objects WHERE object_id = Obj_list(i);
|
||||
--delete messages target(object_id)
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM messages WHERE target = Obj_list(i);
|
||||
|
||||
END Purge_objects_work;
|
||||
--
|
||||
--
|
||||
--
|
||||
FUNCTION time_purge
|
||||
(date_in IN VARCHAR2)
|
||||
RETURN PLS_INTEGER IS
|
||||
v_retval PLS_INTEGER := 0;
|
||||
v_date VARCHAR2(20) := date_in;
|
||||
v_time NUMBER := 1;
|
||||
BEGIN
|
||||
|
||||
FOR i IN 1..24 LOOP
|
||||
dbms_output.put_line(to_char(to_date(v_date, 'dd-mon-yy hh24:mi:ss') + v_time/24, 'DD-MON-YY hh24:mi:ss'));
|
||||
v_retval := purge_objects(to_date(v_date, 'dd-mon-yy hh24:mi:ss') + v_time/24);
|
||||
EXIT WHEN v_retval <> 0;
|
||||
|
||||
IF v_time = 23 THEN
|
||||
v_time := v_time + (59/60);
|
||||
ELSE
|
||||
v_time := v_time + 1;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
RETURN 0;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
ROLLBACK;
|
||||
dbms_output.put_line('Purge return values: '||v_retval);
|
||||
dbms_output.put_line('Time it failed at: '||v_time);
|
||||
RETURN SQLCODE;
|
||||
END time_purge;
|
||||
|
||||
/**********************************************************************/
|
||||
/*** Purge Consumables ***/
|
||||
/*** ***/
|
||||
/*** Deletes consumable objects marked for deletion in child object ***/
|
||||
/*** tables and then the master objects table based on date value ***/
|
||||
/**********************************************************************/
|
||||
|
||||
FUNCTION Purge_consumables
|
||||
(start_date_in in objects.deleted_date%type,
|
||||
end_date_in in objects.deleted_date%type)
|
||||
RETURN PLS_INTEGER
|
||||
IS
|
||||
v_count PLS_INTEGER := 0;
|
||||
|
||||
Obj_list Obj_list_t; -- VARRAY object to hold ids to bulk delete for child objects
|
||||
Obj_rowid_list Obj_rowid_list_t; -- VARRAY object to hold ids to bulk delete for parent objects
|
||||
Obj_list_index PLS_INTEGER; -- index into VARRAY object
|
||||
|
||||
BEGIN
|
||||
|
||||
Obj_list := Obj_list_t(); -- initialize VARRAY object
|
||||
Obj_list.extend(chunk_size); -- allocate VARRAY object memory to chunk size
|
||||
|
||||
LOGGING.LOG_STATUS(1,'Starting child object deletions for consumables.');
|
||||
|
||||
--open the cursor for the object ids we want to purge.
|
||||
--we will use these ids to delete child records from other tables
|
||||
FOR x IN (SELECT object_id
|
||||
FROM objects
|
||||
WHERE deleted_date is not NULL
|
||||
AND deleted_date BETWEEN start_date_in AND end_date_in
|
||||
and object_template_id in (
|
||||
300281711,
|
||||
352903310,
|
||||
1006954225,
|
||||
9343642,
|
||||
35614291,
|
||||
339194814,
|
||||
1001781097,
|
||||
1632911215,
|
||||
1139268412,
|
||||
2059421636,
|
||||
1349101341,
|
||||
-1657672270,
|
||||
1931602976,
|
||||
-1440714292,
|
||||
-1436615854,
|
||||
-1614624973,
|
||||
-1556205486,
|
||||
-679440489,
|
||||
-1397391672,
|
||||
-541746271,
|
||||
-718648728,
|
||||
-789429729,
|
||||
-786663538,
|
||||
-610128810,
|
||||
-132487792,
|
||||
-1129945606,
|
||||
-104858180,
|
||||
-82570045)) LOOP
|
||||
|
||||
v_count := v_count + 1;
|
||||
Obj_list_index := MOD(v_count, chunk_size); -- what obj index for this batch
|
||||
|
||||
If Obj_list_index = 0 then
|
||||
Obj_list(chunk_size) := x.object_id; -- make sure we fill last VARRAY element
|
||||
Purge_consumables_work(Obj_list); -- bulk delete object ids in VARRAY list
|
||||
COMMIT;
|
||||
LOGGING.LOG_STATUS(v_count,'batch purged');
|
||||
Else
|
||||
Obj_list(Obj_list_index) := x.object_id; -- fill VARRAY with ids
|
||||
End If;
|
||||
|
||||
END LOOP;
|
||||
|
||||
LOGGING.LOG_STATUS(v_count,'Child consumables object main loop exited.');
|
||||
|
||||
--Now delete remaining partially full object list for child objects
|
||||
If Obj_list_index != 0 then
|
||||
Obj_list.trim(chunk_size - Obj_list_index);
|
||||
Purge_consumables_work(Obj_list);
|
||||
COMMIT;
|
||||
LOGGING.LOG_STATUS(v_count,'Deleting chunk remainder.');
|
||||
End If;
|
||||
|
||||
Obj_list.delete; -- cleanup - delete VARRAY list
|
||||
|
||||
LOGGING.LOG_STATUS(v_count,'Finished deleting '|| to_char(v_count) ||' references to consumable child objects.');
|
||||
|
||||
--Now delete parent objects
|
||||
v_count := 0; -- reinitialize
|
||||
Obj_rowid_list := Obj_rowid_list_t(); -- initialize VARRAY object
|
||||
Obj_rowid_list.extend(chunk_size); -- allocate VARRAY memory at chunk size
|
||||
|
||||
LOGGING.LOG_STATUS(1,'Starting parent consumable object deletions.');
|
||||
|
||||
FOR x IN (SELECT ROWID
|
||||
FROM objects
|
||||
WHERE deleted_date is not NULL
|
||||
AND deleted_date BETWEEN start_date_in AND end_date_in
|
||||
and object_template_id in (
|
||||
300281711,
|
||||
352903310,
|
||||
1006954225,
|
||||
9343642,
|
||||
35614291,
|
||||
339194814,
|
||||
1001781097,
|
||||
1632911215,
|
||||
1139268412,
|
||||
2059421636,
|
||||
1349101341,
|
||||
-1657672270,
|
||||
1931602976,
|
||||
-1440714292,
|
||||
-1436615854,
|
||||
-1614624973,
|
||||
-1556205486,
|
||||
-679440489,
|
||||
-1397391672,
|
||||
-541746271,
|
||||
-718648728,
|
||||
-789429729,
|
||||
-786663538,
|
||||
-610128810,
|
||||
-132487792,
|
||||
-1129945606,
|
||||
-104858180,
|
||||
-82570045)) LOOP
|
||||
|
||||
v_count := v_count + 1;
|
||||
Obj_list_index := MOD(v_count, chunk_size); -- what obj index for this batch
|
||||
|
||||
If Obj_list_index = 0 then
|
||||
Obj_rowid_list(chunk_size) := x.ROWID; -- make sure we fill last VARRAY element
|
||||
FORALL i IN Obj_rowid_list.First..Obj_rowid_list.Last DELETE FROM objects WHERE ROWID = Obj_rowid_list(i); -- bulk delete
|
||||
COMMIT;
|
||||
LOGGING.LOG_STATUS(v_count,'batch purged');
|
||||
Else
|
||||
Obj_rowid_list(Obj_list_index) := x.ROWID; -- fill VARRAY with ids
|
||||
End If;
|
||||
|
||||
END LOOP;
|
||||
|
||||
LOGGING.LOG_STATUS(v_count,'Parent consumable object main loop exited.');
|
||||
|
||||
--Now delete remaining partially full object list for child objects
|
||||
If Obj_list_index != 0 then
|
||||
Obj_rowid_list.trim(chunk_size - Obj_list_index);
|
||||
FORALL i IN Obj_rowid_list.First..Obj_rowid_list.Last DELETE FROM objects WHERE rowid = Obj_rowid_list(i);
|
||||
COMMIT;
|
||||
LOGGING.LOG_STATUS(v_count,'Deleting chunk remainder.');
|
||||
End If;
|
||||
|
||||
Obj_rowid_list.delete; -- cleanup - delete VARRAY list
|
||||
|
||||
LOGGING.LOG_STATUS(v_count,'Finished deleting '|| to_char(v_count) ||' consumable parent objects.');
|
||||
RETURN 0;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
ROLLBACK;
|
||||
IF v_count = 0 THEN
|
||||
dbms_output.put_line ('never deleted');
|
||||
LOGGING.LOG_ERROR(SQLCODE, SQLERRM);
|
||||
END IF;
|
||||
dbms_output.put_line (v_count||': iterations');
|
||||
LOGGING.LOG_ERROR(SQLCODE, SQLERRM);
|
||||
RETURN SQLCODE;
|
||||
END Purge_consumables;
|
||||
|
||||
/**********************************************************************/
|
||||
/*** Purge Consumables Work ***/
|
||||
/*** ***/
|
||||
/*** Bulk delete consumable objects marked for deletion in child ***/
|
||||
/*** object tables given a list of object ids passed in from a ***/
|
||||
/*** VARRAY. Called purge consumables function. ***/
|
||||
/**********************************************************************/
|
||||
|
||||
PROCEDURE Purge_consumables_work
|
||||
(Obj_list IN Obj_list_t)
|
||||
IS
|
||||
|
||||
BEGIN
|
||||
|
||||
--delete all children
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM armor WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM attributes WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM battlefield_marker_objects WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM biographies nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM creature_objects nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM experience_points nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM factory_objects nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM intangible_objects nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM location_lists nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM mission_objects nologging WHERE object_id = Obj_list(i);
|
||||
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM object_variables nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM property_lists nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM resource_container_objects nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM scripts nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM tangible_objects nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM token_objects nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM vehicle_objects nologging WHERE object_id = Obj_list(i);
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM weapon_objects nologging WHERE object_id = Obj_list(i);
|
||||
--delete messages target(object_id)
|
||||
FORALL i IN Obj_list.First..Obj_list.Last DELETE FROM messages nologging WHERE target = Obj_list(i);
|
||||
|
||||
END Purge_consumables_work;
|
||||
|
||||
|
||||
--
|
||||
--
|
||||
--
|
||||
FUNCTION time_purge_consumables
|
||||
(start_date_in in objects.deleted_date%type,
|
||||
end_date_in in objects.deleted_date%type)
|
||||
RETURN PLS_INTEGER IS
|
||||
v_retval PLS_INTEGER := 0;
|
||||
v_start_date DATE := start_date_in;
|
||||
v_end_date DATE := end_date_in;
|
||||
v_hours NUMBER := (v_end_date - v_start_date) * 24;
|
||||
v_time NUMBER := 1;
|
||||
BEGIN
|
||||
dbms_output.put_line('Hours between dates: '||v_hours);
|
||||
FOR i IN 1..v_hours LOOP
|
||||
v_end_date := v_start_date + v_time/24;
|
||||
dbms_output.put_line ('Calling proc with Start Date: '||to_char(v_start_date, 'dd-mon-yy hh24:mi:ss')||'-'||'End Date: '||to_char(v_end_date, 'dd-mon-yy hh24:mi:ss'));
|
||||
v_retval := purge_consumables(v_start_date, v_end_date);
|
||||
v_start_date := v_start_date + v_time/24;
|
||||
|
||||
EXIT WHEN v_retval <> 0;
|
||||
|
||||
END LOOP;
|
||||
RETURN 0;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
ROLLBACK;
|
||||
dbms_output.put_line('Purge return value: '||v_retval);
|
||||
RETURN SQLCODE;
|
||||
END time_purge_consumables;
|
||||
|
||||
end purge_methods;
|
||||
@@ -0,0 +1,58 @@
|
||||
CREATE OR REPLACE PACKAGE "PURGE_METHODS" is
|
||||
|
||||
-- Author : AVALDES
|
||||
-- Created : 19-Jun-03 4:59:49 PM
|
||||
|
||||
-- Modified: 07/23/2003, DDM - changed to use bulk deleting and variable chunk size
|
||||
|
||||
-- Notes: 07/29/2003 testing completed against a copy of SDKSWG04 on sdk-devdb
|
||||
-- Tested running purge_objects from SYSDATE back on ~675k parent objects
|
||||
-- -test run 1: ~40 min to delete all child and parent obj in batches of 10K
|
||||
-- -test run 2: ~2.5 hours to do the same with rman running
|
||||
-- Tested run purge_consumables from SYSDATE back on ~300k parent objects
|
||||
-- -test run 1: ~50 min to delete all child and parent obj in batches of 10K
|
||||
-- -test run 2: crashed with snap to old error - restarted and it finished the rest
|
||||
--
|
||||
-- Progress can be gauged by looking in the Logger table. There is a logging system being
|
||||
-- used to track deletion progress. It can be disabled pro commentting out references to
|
||||
-- the 'LOGGING' package. This package is not necessary for the purge program to run but is
|
||||
-- nice to be able to monitor progress. If used, the logger table should be cleared periodically.
|
||||
|
||||
|
||||
-- number of records to delete in a bulk chunk
|
||||
chunk_size CONSTANT PLS_INTEGER := 10000;
|
||||
|
||||
-- collections for bulk deleting, # elements must be the same as chunk_size
|
||||
TYPE Obj_list_t IS VARRAY(10000) of objects.object_id%type; -- for child table with object ids
|
||||
TYPE Obj_rowid_list_t IS VARRAY(10000) of ROWID; -- for parent table (rowid lookups are faster)
|
||||
|
||||
FUNCTION Purge_objects
|
||||
(date_in in objects.deleted_date%type)
|
||||
RETURN PLS_INTEGER;
|
||||
|
||||
PROCEDURE Purge_objects_work
|
||||
(Obj_list IN Obj_list_t);
|
||||
--
|
||||
--
|
||||
--
|
||||
FUNCTION time_purge
|
||||
(date_in IN VARCHAR2)
|
||||
RETURN PLS_INTEGER;
|
||||
|
||||
FUNCTION Purge_consumables
|
||||
(start_date_in in objects.deleted_date%type,
|
||||
end_date_in in objects.deleted_date%type)
|
||||
RETURN PLS_INTEGER;
|
||||
|
||||
PROCEDURE Purge_consumables_work
|
||||
(Obj_list IN Obj_list_t);
|
||||
--
|
||||
--
|
||||
--
|
||||
FUNCTION time_purge_consumables
|
||||
(start_date_in in objects.deleted_date%type,
|
||||
end_date_in in objects.deleted_date%type)
|
||||
RETURN PLS_INTEGER;
|
||||
|
||||
|
||||
end purge_methods;
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
while (<>)
|
||||
{
|
||||
chop;
|
||||
if (/procedure/ || /function/)
|
||||
{
|
||||
$print = 1;
|
||||
}
|
||||
if (/begin/ || /\s+as/)
|
||||
{
|
||||
if ($print)
|
||||
{
|
||||
$print = 0;
|
||||
print ";\n";
|
||||
}
|
||||
}
|
||||
s/\t/ /;
|
||||
s/(\s)\s+/$1/g;
|
||||
s/\(\s+/\(/g;
|
||||
s/\s+\)/\)/g;
|
||||
print if ($print)
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# This script helps create loader.plsql.
|
||||
|
||||
$header = "N";
|
||||
|
||||
print "-- GENERATED PLSQL FOLLOWS\n";
|
||||
print "-- generated by makeloader.pl\n\n";
|
||||
|
||||
while (<>)
|
||||
{
|
||||
if (/create table (\w+)_objects/)
|
||||
{
|
||||
$tablename = $1;
|
||||
|
||||
|
||||
&parseTable($tablename);
|
||||
|
||||
$procname = $tablename;
|
||||
$procname =~ s/harvester\_installation/harvester\_inst/g;
|
||||
$procname =~ s/manufacture\_installation/manufacture\_inst/g;
|
||||
$procname =~ s/manufacture\_schematic/manf\_schematic/g;
|
||||
|
||||
if ($header eq "Y")
|
||||
{
|
||||
&printLoadFuncHeader($tablename);
|
||||
}
|
||||
else
|
||||
{
|
||||
&printLoadFuncBody($tablename);
|
||||
}
|
||||
|
||||
reset columns;
|
||||
}
|
||||
|
||||
if (/create table objects/)
|
||||
{
|
||||
$tablename = "object";
|
||||
&parseTable($tablename);
|
||||
reset columns;
|
||||
}
|
||||
}
|
||||
|
||||
sub parseTable
|
||||
{
|
||||
|
||||
my ($line);
|
||||
|
||||
while (!/\;/)
|
||||
{
|
||||
|
||||
if ((!/key/) && (!/object_id/) && (/^\s+(\w+\s+\w.*)/) && (!/\-\-\s*NO_BIND/))
|
||||
{
|
||||
$line = $1;
|
||||
/(\w+\s+\w+)/;
|
||||
push(@columns,$1);
|
||||
|
||||
}
|
||||
$_=<>;
|
||||
}
|
||||
}
|
||||
|
||||
sub printLoadFuncBody
|
||||
{
|
||||
my($tablename)=@_;
|
||||
my($notfirst, $name, $type);
|
||||
|
||||
print "\tfunction load_${procname}_object\treturn cursortype\n\tas\n\t\tresult_cursor cursortype;\n\tbegin\n";
|
||||
print "\t\topen result_cursor for\n\t\t\tselect ";
|
||||
|
||||
if ($tablename eq "player")
|
||||
{ print "/*+ ORDERED USE_NL(T) USE_NL(A)*/\n"; }
|
||||
else
|
||||
{ print "/*+ ORDERED USE_NL(T) */\n"; }
|
||||
|
||||
print "\t\t\t\tt.object_id";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
if (!($tablename eq "player" and $name eq "num_lots"))
|
||||
{ print ",\n";
|
||||
print "\t\t\t\tt.$name";
|
||||
}
|
||||
|
||||
if ($tablename eq "player" and $name eq "station_id")
|
||||
{
|
||||
print ",\n\t\t\t\ta.house_id,\n ";
|
||||
print "\t\t\t\ta.num_lots,\n ";
|
||||
print "\t\t\t\ta.is_outcast,\n ";
|
||||
print "\t\t\t\ta.cheater_level,\n ";
|
||||
print "\t\t\t\ta.max_lots_adjustment";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
print "\n\t\t\tfrom\n\t\t\t\tobject_list l,\n";
|
||||
print "\t\t\t\t${tablename}_objects t";
|
||||
|
||||
if ($tablename eq "player")
|
||||
{ print ",\n\t\t\t\taccounts a\n";
|
||||
print "\t\t\twhere t.station_id = a.station_id and\n";
|
||||
}
|
||||
else
|
||||
{ print "\n\t\t\twhere\n";
|
||||
|
||||
}
|
||||
print "\t\t\t\tt.object_id=l.object_id;\n\n";
|
||||
print "\t\treturn result_cursor;\n\tend;\n\n";
|
||||
|
||||
}
|
||||
|
||||
|
||||
sub printLoadFuncHeader
|
||||
{
|
||||
my($tablename)=@_;
|
||||
my($notfirst,$name,$type, $i);
|
||||
|
||||
print "\tfunction\tload_${procname}_object\t\t\treturn cursortype;\n";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,450 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# This script helps create persister.plsql.
|
||||
|
||||
$header = "N";
|
||||
|
||||
print "-- GENERATED PLSQL FOLLOWS\n";
|
||||
print "-- generated by makepersister.pl\n\n";
|
||||
|
||||
|
||||
while (<>)
|
||||
{
|
||||
if (/create table (\w+)_objects/)
|
||||
{
|
||||
$tablename = $1;
|
||||
|
||||
|
||||
&parseTable($tablename);
|
||||
|
||||
$procname = $tablename;
|
||||
$procname =~ s/harvester\_installation/harvester\_inst/g;
|
||||
$procname =~ s/manufacture\_installation/manufacture\_inst/g;
|
||||
$procname =~ s/manufacture\_schematic/manf\_schematic/g;
|
||||
|
||||
if ($tablename ne "player")
|
||||
{
|
||||
if ($header eq "Y")
|
||||
{
|
||||
&printSaveProcHeader($tablename);
|
||||
&printCreateProcHeader($tablename);
|
||||
&printRemoveProcHeader($tablename);
|
||||
}
|
||||
else
|
||||
{
|
||||
&printSaveProcBody($tablename);
|
||||
&printCreateProcBody($tablename);
|
||||
&printRemoveProcBody($tablename);
|
||||
}
|
||||
}
|
||||
|
||||
reset columns;
|
||||
reset tags;
|
||||
}
|
||||
|
||||
if (/create table objects/)
|
||||
{
|
||||
$tablename = "object";
|
||||
&parseTable($tablename);
|
||||
# &printSaveProc($tablename);
|
||||
# &printCreateProc($tablename);
|
||||
reset columns;
|
||||
reset tags;
|
||||
}
|
||||
}
|
||||
|
||||
sub parseTable
|
||||
{
|
||||
|
||||
my ($line);
|
||||
|
||||
while (!/\;/)
|
||||
{
|
||||
|
||||
if ((!/key/) && (!/object_id/) && (/^\s+(\w+\s+\w.*)/) && (!/\-\-\s*NO_BIND/))
|
||||
{
|
||||
$line = $1;
|
||||
/(\w+\s+\w+)/;
|
||||
push(@columns,$1);
|
||||
|
||||
if ($line =~ /BindableNetworkId/)
|
||||
{ push(@tags, 1); }
|
||||
else
|
||||
{ push(@tags, 0); }
|
||||
|
||||
}
|
||||
$_=<>;
|
||||
}
|
||||
}
|
||||
|
||||
sub printSaveProcBody
|
||||
{
|
||||
my($tablename)=@_;
|
||||
my($notfirst,$name,$type, $i);
|
||||
|
||||
print "\tprocedure save_${procname}_obj( ";
|
||||
$i=0;
|
||||
print "p_object_id VAOFSTRING, ";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
if (!($tablename eq "player" and $name eq "num_lots"))
|
||||
{ print "p_".VAType($column, $tags[$i]).", ";
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
print "p_chunk_size number )\n";
|
||||
print "\tas\n\n";
|
||||
print "\tm_enable_db_logging INTEGER := 0;\n";
|
||||
print "\tm_error_index INTEGER :=0;\n";
|
||||
|
||||
print "\tbegin\n";
|
||||
if (@columns == 0)
|
||||
{ print "\t\tnull;\n"; }
|
||||
else
|
||||
{
|
||||
print "\t\tFORALL i IN 1..p_chunk_size\n";
|
||||
print "\t\tupdate ${tablename}_objects set\n";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
if ($notfirst!=0)
|
||||
{ print ",\n"; }
|
||||
else
|
||||
{ $notfirst=1; }
|
||||
|
||||
print "\t\t\t${tablename}_objects.$name = nvl(p_$name(i),${tablename}_objects.$name)";
|
||||
|
||||
}
|
||||
print "\n";
|
||||
print "\t\twhere\n";
|
||||
print "\t\t\t${tablename}_objects.object_id=p_object_id(i);\n";
|
||||
|
||||
print "\texception\n";
|
||||
print "\t\twhen others then\n";
|
||||
print "\t\t\tbegin\n";\
|
||||
print "\t\t\t\tFOR i IN 1..p_chunk_size LOOP\n";
|
||||
print "\t\t\t\t\tm_error_index := i;\n";
|
||||
print "\t\t\t\t\tupdate ${tablename}_objects set\n";
|
||||
$notfirst =0;
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
if ($notfirst!=0)
|
||||
{ print ",\n"; }
|
||||
else
|
||||
{ $notfirst=1; }
|
||||
|
||||
print "\t\t\t\t\t${tablename}_objects.$name = nvl(p_$name(i),${tablename}_objects.$name)";
|
||||
|
||||
}
|
||||
print "\n";
|
||||
print "\t\t\t\t\twhere\n";
|
||||
print "\t\t\t\t\t${tablename}_objects.object_id=p_object_id(i);\n";
|
||||
print "\t\t\t\tend LOOP;\n";
|
||||
print "\t\t\texception\n";
|
||||
print "\t\t\t\twhen others then\n";
|
||||
print "\t\t\t\t\tbegin\n";
|
||||
print "\t\t\t\t\t\tm_enable_db_logging := db_error_logger.getLogLevel();\n";
|
||||
|
||||
print "\t\t\t\t\t\tIF (m_enable_db_logging > 0) THEN\n";
|
||||
print "\t\t\t\t\t\t\tdb_error_logger.dblogerror(SQLCODE,";
|
||||
print "'persister.save_${procname}_obj : update error.');\n";
|
||||
print "\t\t\t\t\t\t\tIF (m_enable_db_logging > 1) THEN\n";
|
||||
print "\t\t\t\t\t\t\t\tdb_error_logger.dblogerror_values('persister.save_${procname}_obj','object_id','number',p_object_id(m_error_index));\n";
|
||||
$i=0;
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
if (!($tablename eq "player" and $name eq "num_lots"))
|
||||
{ print "\t\t\t\t\t\t\t\tdb_error_logger.dblogerror_values('persister.save_${procname}_obj','$name','$type',".OracleValue($column, $tags[$i]).");\n";
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
print "\t\t\t\t\t\t\tEND IF;\n";
|
||||
print "\t\t\t\t\t\tEND IF;\n";
|
||||
print "\t\t\t\t\t\tIF (db_error_logger.reraisecheck('persister','save_${procname}_obj') = 1) THEN\n";
|
||||
print "\t\t\t\t\t\t\tRAISE;\n";
|
||||
print "\t\t\t\t\t\tEND IF;\n";
|
||||
|
||||
print "\t\t\t\t\tend;\n";
|
||||
print "\t\t\tend;\n";
|
||||
|
||||
}
|
||||
print "\tend;\n\n";
|
||||
}
|
||||
|
||||
sub printSaveProcHeader
|
||||
{
|
||||
my($tablename)=@_;
|
||||
my($notfirst,$name,$type, $i);
|
||||
|
||||
print "\tprocedure save_${procname}_obj( ";
|
||||
$i=0;
|
||||
print "p_object_id VAOFSTRING, ";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
print "p_".VAType($column, $tags[$i]).", ";
|
||||
$i++;
|
||||
}
|
||||
|
||||
print "p_chunk_size number );\n";
|
||||
}
|
||||
|
||||
sub printCreateProcBody
|
||||
{
|
||||
my($tablename)=@_;
|
||||
my($notfirst,$name,$type, $i);
|
||||
|
||||
print "\tprocedure add_${procname}_obj( ";
|
||||
$i=0;
|
||||
print "p_object_id VAOFSTRING, ";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
print "p_".VAType($column, $tags[$i]).", ";
|
||||
$i++;
|
||||
}
|
||||
|
||||
print "p_chunk_size number )\n";
|
||||
print "\tas\n";
|
||||
print "\tm_enable_db_logging INTEGER := 0;\n";
|
||||
print "\tm_error_index INTEGER :=0;\n";
|
||||
|
||||
print "\tbegin\n";
|
||||
|
||||
print "\t\tFORALL i IN 1..p_chunk_size\n";
|
||||
print "\t\tinsert into ${tablename}_objects\n";
|
||||
print "\t\t(\n";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
print "\t\t\t${tablename}_objects.$name,\n";
|
||||
}
|
||||
print "\t\t\t${tablename}_objects.object_id\n";
|
||||
print "\t\t)\n";
|
||||
print "\t\tVALUES\n";
|
||||
print "\t\t(\n";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
print "\t\t\tp_$name(i),\n";
|
||||
}
|
||||
print "\t\t\tp_object_id(i)\n";
|
||||
print "\t\t);\n";
|
||||
print "\n";
|
||||
|
||||
print "\texception\n\t\twhen dup_val_on_index then\n";
|
||||
print "\t\tbegin\n";
|
||||
|
||||
print "\t\t\tm_enable_db_logging := db_error_logger.getLogLevel();\n";
|
||||
|
||||
print "\t\t\tIF (m_enable_db_logging > 0) THEN\n";
|
||||
print "\t\t\t\tdb_error_logger.dblogerror(SQLCODE,";
|
||||
print "'persister.add_${procname}_obj : dup_val_on_index error.');\n";
|
||||
print "\t\t\tEND IF;\n";
|
||||
|
||||
if (@columns > 0)
|
||||
{
|
||||
|
||||
print "\t\t\tfor i in 1..p_chunk_size loop\n";
|
||||
print "\t\t\t\tm_error_index := i;\n";
|
||||
print "\t\t\t\tUPDATE ${tablename}_objects Set\n";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
if ($notfirst!=0)
|
||||
{ print ",\n"; }
|
||||
else
|
||||
{ $notfirst=1; }
|
||||
print "\t\t\t\t\t${tablename}_objects.$name = nvl(p_$name(i),${tablename}_objects.$name)";
|
||||
}
|
||||
print "\n";
|
||||
print "\t\t\t\twhere\n";
|
||||
print "\t\t\t\t\t${tablename}_objects.object_id=p_object_id(i);\n\n";
|
||||
print "\t\t\t\tif SQL%ROWCOUNT=0 then\n";
|
||||
print "\t\t\t\t\tinsert into ${tablename}_objects\n";
|
||||
print "\t\t\t\t\t(\n";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
print "\t\t\t\t\t${tablename}_objects.$name,\n";
|
||||
}
|
||||
print "\t\t\t\t\t${tablename}_objects.object_id\n";
|
||||
print "\t\t\t\t\t)\n";
|
||||
print "\t\t\t\t\tVALUES\n";
|
||||
print "\t\t\t\t\t(\n";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
print "\t\t\t\t\tp_$name(i),\n";
|
||||
}
|
||||
print "\t\t\t\t\tp_object_id(i)\n";
|
||||
print "\t\t\t\t\t);\n";
|
||||
print "\t\t\t\tend if;\n";
|
||||
print "\t\t\tend loop;\n";
|
||||
}
|
||||
|
||||
print "\t\tend;\n";
|
||||
|
||||
print "\t\twhen others then\n";
|
||||
print "\t\tbegin\n";
|
||||
|
||||
print "\t\t\tfor i in 1..p_chunk_size loop\n";
|
||||
print "\t\t\tm_error_index := i;\n";
|
||||
print "\t\t\tinsert into ${tablename}_objects\n";
|
||||
print "\t\t\t(\n";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
print "\t\t\t\t${tablename}_objects.$name,\n";
|
||||
}
|
||||
print "\t\t\t\t${tablename}_objects.object_id\n";
|
||||
print "\t\t\t)\n";
|
||||
print "\t\t\tVALUES\n";
|
||||
print "\t\t\t(\n";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
print "\t\t\t\tp_$name(i),\n";
|
||||
}
|
||||
print "\t\t\t\tp_object_id(i)\n";
|
||||
print "\t\t\t);\n";
|
||||
print "\n";
|
||||
print "\t\t\tend loop;\n";
|
||||
|
||||
print "\t\texception\n";
|
||||
print "\t\t\twhen others then\n";
|
||||
print "\t\t\tbegin\n";
|
||||
|
||||
print "\t\t\t\tm_enable_db_logging := db_error_logger.getLogLevel();\n";
|
||||
|
||||
print "\t\t\t\tIF (m_enable_db_logging > 0) THEN\n";
|
||||
print "\t\t\t\t\tdb_error_logger.dblogerror(SQLCODE,";
|
||||
print "'persister.add_${procname}_obj : error.');\n";
|
||||
print "\t\t\t\t\tIF (m_enable_db_logging > 1) THEN\n";
|
||||
print "\t\t\t\t\t\tdb_error_logger.dblogerror_values('persister.add_${procname}_obj','object_id','number',p_object_id(m_error_index));\n";
|
||||
$i=0;
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
if (!($tablename eq "player" and $name eq "num_lots"))
|
||||
{ print "\t\t\t\t\t\tdb_error_logger.dblogerror_values('persister.add_${procname}_obj','$name','$type',".OracleValue($column, $tags[$i]).");\n";
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
print "\t\t\t\t\tEND IF;\n";
|
||||
print "\t\t\t\tEND IF;\n";
|
||||
print "\t\t\t\tIF (db_error_logger.reraisecheck('persister','add_${procname}_obj') = 1) THEN\n";
|
||||
print "\t\t\t\t\tRAISE;\n";
|
||||
print "\t\t\t\tEND IF;\n";
|
||||
|
||||
print "\t\t\tend;\n";
|
||||
print "\t\tend;\n";
|
||||
|
||||
print "\tend;\n\n";
|
||||
}
|
||||
|
||||
sub printCreateProcHeader
|
||||
{
|
||||
my($tablename)=@_;
|
||||
my($notfirst,$name,$type, $i);
|
||||
|
||||
print "\tprocedure add_${procname}_obj( ";
|
||||
$i=0;
|
||||
print "p_object_id VAOFSTRING, ";
|
||||
foreach $column (@columns)
|
||||
{
|
||||
($name,$type)=split(" ",$column);
|
||||
print "p_".VAType($column, $tags[$i]).", ";
|
||||
$i++;
|
||||
}
|
||||
|
||||
print "p_chunk_size number );\n";
|
||||
}
|
||||
|
||||
sub printRemoveProcBody
|
||||
{
|
||||
my($tablename)=@_;
|
||||
my($notfirst,$name,$type);
|
||||
|
||||
print "\tprocedure remove_${procname}_obj( ";
|
||||
print "p_object_id VAOFSTRING, ";
|
||||
print "p_chunk_size number )\n";
|
||||
print "\tas\n";
|
||||
print "\tbegin\n";
|
||||
if (@columns == 0)
|
||||
{
|
||||
print "\t\tnull;\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "\t\tFORALL i IN 1..p_chunk_size\n";
|
||||
print "\t\tdelete ${tablename}_objects\n";
|
||||
print "\t\twhere\n";
|
||||
print "\t\t\tobject_id=p_object_id(i);\n";
|
||||
}
|
||||
print "\tend;\n\n";
|
||||
}
|
||||
|
||||
sub printRemoveProcHeader
|
||||
{
|
||||
my($tablename)=@_;
|
||||
my($notfirst,$name,$type);
|
||||
|
||||
print "\tprocedure remove_${procname}_obj( ";
|
||||
print "p_object_id VAOFSTRING, ";
|
||||
print "p_chunk_size number );\n";
|
||||
}
|
||||
|
||||
sub VAType
|
||||
{
|
||||
my ($param, $tag)=@_;
|
||||
my ($name,$type);
|
||||
|
||||
($name,$type)=split(" ",$param);
|
||||
|
||||
SWITCH: {
|
||||
|
||||
if ($tag == 1) {return $name." VAOFSTRING"; last SWITCH; }
|
||||
if ($type eq "number") {return $name." VAOFNUMBER"; last SWITCH; }
|
||||
if ($type eq "int") {return $name." VAOFNUMBER"; last SWITCH; }
|
||||
if ($type eq "float") {return $name." VAOFNUMBER"; last SWITCH; }
|
||||
if ($type eq "char") {return $name." VAOFSTRING"; last SWITCH; }
|
||||
if ($type eq "varchar2") {return $name." VAOFSTRING"; last SWITCH; }
|
||||
if ($type eq "varchar") {return $name." VAOFSTRING"; last SWITCH; }
|
||||
if ($type eq "objectid") {return $name." VAOFSTRING"; last SWITCH; }
|
||||
print "Warning unknown type: ".$type."\n";
|
||||
return "VAUNKNOWN";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sub OracleValue
|
||||
{
|
||||
my ($param, $tag)=@_;
|
||||
my ($name,$type);
|
||||
|
||||
($name,$type)=split(" ",$param);
|
||||
|
||||
SWITCH: {
|
||||
|
||||
if ($tag == 1) {return "p_".$name."(m_error_index)"; last SWITCH; }
|
||||
if ($type eq "number") {return "to_char(p_".$name."(m_error_index))"; last SWITCH; }
|
||||
if ($type eq "int") {return "to_char(p_".$name."(m_error_index))"; last SWITCH; }
|
||||
if ($type eq "float") {return "to_char(p_".$name."(m_error_index))"; last SWITCH; }
|
||||
if ($type eq "char") {return "p_".$name."(m_error_index)"; last SWITCH; }
|
||||
if ($type eq "varchar2") {return "p_".$name."(m_error_index)"; last SWITCH; }
|
||||
if ($type eq "varchar") {return "p_".$name."(m_error_index)"; last SWITCH; }
|
||||
if ($type eq "objectid") {return "p_".$name."(m_error_index)"; last SWITCH; }
|
||||
print "Warning unknown type: ".$type."\n";
|
||||
return "VAUNKNOWN";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
This directory is for scripts to create the initial data in the database.
|
||||
The scripts should be written to run correctly even if there is already
|
||||
data in the database.
|
||||
@@ -0,0 +1,5 @@
|
||||
delete character_types;
|
||||
|
||||
insert into character_types values (1,'Normal');
|
||||
insert into character_types values (2,'Jedi');
|
||||
insert into character_types values (3,'Spectral');
|
||||
@@ -0,0 +1,4 @@
|
||||
insert into clock (last_save_time)
|
||||
select 0
|
||||
from dual
|
||||
where not exists (select * from clock);
|
||||
@@ -0,0 +1,3 @@
|
||||
delete default_char_limits;
|
||||
|
||||
insert into default_char_limits values (30,10000);
|
||||
@@ -0,0 +1,5 @@
|
||||
delete default_character_slots;
|
||||
|
||||
insert into default_character_slots values (1,5);
|
||||
insert into default_character_slots values (2,0);
|
||||
insert into default_character_slots values (3,8);
|
||||
@@ -0,0 +1,17 @@
|
||||
delete from delete_reasons;
|
||||
|
||||
insert into delete_reasons values (0,'NotDeleted','not deleted');
|
||||
insert into delete_reasons values (1,'Unknown','unknown');
|
||||
insert into delete_reasons values (2,'Decay','deleted by decay');
|
||||
insert into delete_reasons values (3,'God','deleted by a god client or console command');
|
||||
insert into delete_reasons values (4,'Player','deleted by a player action');
|
||||
insert into delete_reasons values (5,'Script','deleted by a script');
|
||||
insert into delete_reasons values (6,'CharacterDeleted','deleted because the player deleted the character');
|
||||
insert into delete_reasons values (7,'ContainerDeleted','deleted because the container was deleted');
|
||||
insert into delete_reasons values (8,'Publish','deleted by the publish process');
|
||||
insert into delete_reasons values (9,'BadContainerTransfer','deleted because the object could not be placed in a particular container');
|
||||
insert into delete_reasons values (10,'Consumed','deleted because the object was used up or consumed by the game');
|
||||
insert into delete_reasons values (11,'SetupFailed','deleted because an initialization step related to the object failed');
|
||||
insert into delete_reasons values (12,'Replaced','deleted because the object was replaced by another with newer data');
|
||||
insert into delete_reasons values (13,'House','deleted house from script');
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
delete from free_object_ids;
|
||||
|
||||
insert into free_object_ids (start_id)
|
||||
select nvl(max(object_id)+1,10000001)
|
||||
from objects;
|
||||
@@ -0,0 +1,16 @@
|
||||
delete loadbeacon_server_map;
|
||||
|
||||
insert into loadbeacon_server_map (object_template,server_id,secondary_server_id)
|
||||
values ('object/tangible/loadbeacon/loadbeacon_large.iff',1,0);
|
||||
insert into loadbeacon_server_map (object_template,server_id,secondary_server_id)
|
||||
values ('object/tangible/loadbeacon/loadbeacon_medium.iff',1,0);
|
||||
insert into loadbeacon_server_map (object_template,server_id,secondary_server_id)
|
||||
values ('object/tangible/loadbeacon/loadbeacon_server_a.iff',1,0);
|
||||
insert into loadbeacon_server_map (object_template,server_id,secondary_server_id)
|
||||
values ('object/tangible/loadbeacon/loadbeacon_server_b.iff',2,1);
|
||||
insert into loadbeacon_server_map (object_template,server_id,secondary_server_id)
|
||||
values ('object/tangible/loadbeacon/loadbeacon_server_c.iff',3,2);
|
||||
insert into loadbeacon_server_map (object_template,server_id,secondary_server_id)
|
||||
values ('object/tangible/loadbeacon/loadbeacon_server_d.iff',4,3);
|
||||
insert into loadbeacon_server_map (object_template,server_id,secondary_server_id)
|
||||
values ('object/tangible/loadbeacon/loadbeacon_server_e.iff',5,4);
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
||||
Ever wondered how you can put resource data in your own database? Wonder no more!
|
||||
|
||||
This can be done from Windows or from Linux:
|
||||
|
||||
1) Run sqlplus and log into your database.
|
||||
2) Run the file "src/game/server/database/import/resources/data1.sql". (To run a file in SQL/Plus, type "@" and the filename.)
|
||||
3) Run the file "src/game/server/database/import/resources/data2.sql".
|
||||
4) Run "exec resource_importer.import_resources;"
|
||||
5) Run "commit;" or exit SQL/Plus.
|
||||
|
||||
Voila!
|
||||
|
||||
This gives you the data from the most recent version of the spreadsheet that I have imported. If you want to generate data1 and data2 from the spreadsheet yourself, this is what to do:
|
||||
|
||||
1) Export the resource data page to a tab-delimited text file, data1.txt, in the directory listed above
|
||||
2) Export the fractal data page to a tab-delimited text file, data2.txt.
|
||||
3) Edit these files to remove the headers and any stray lines.
|
||||
4) Run "perl resource_import_delta.txt < data1.txt > data1.sql"
|
||||
5) Run "perl resource_fractal_import.txt < data2.txt > data2.sql"
|
||||
6) Contiue with step #1 above.
|
||||
@@ -0,0 +1,9 @@
|
||||
create table res_imp_object_variables
|
||||
(
|
||||
id number(20),
|
||||
name varchar(500),
|
||||
type int,
|
||||
value varchar(1000),
|
||||
constraint pk_res_imp_object_variables primary key (id,name)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
create table res_imp_oid_map
|
||||
(
|
||||
object_id number ,
|
||||
reference_id number,
|
||||
new number,
|
||||
constraint pk_res_imp_oid_map primary key (object_id)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$parent="";
|
||||
|
||||
$fractalParamName[0]="type";
|
||||
$fractalParamName[1]="x";
|
||||
$fractalParamName[2]="y";
|
||||
$fractalParamName[3]="bias";
|
||||
$fractalParamName[4]="gain";
|
||||
$fractalParamName[5]="combinationRule";
|
||||
$fractalParamName[6]="frequency";
|
||||
$fractalParamName[7]="amplitude";
|
||||
$fractalParamName[8]="octaves";
|
||||
|
||||
while (<>)
|
||||
{
|
||||
chop;
|
||||
|
||||
@data=split("\t");
|
||||
$id=shift (@data);
|
||||
|
||||
$planet = $data[0];
|
||||
$min_pool_size = $data[1] + 0;
|
||||
$max_pool_size = $data[2] + 0;
|
||||
|
||||
$planet =~ tr/A-Z/a-z/;
|
||||
|
||||
#### output:
|
||||
|
||||
print "insert into res_imp_object_variables values ($id,'planets.$planet.minpoolsize',0,'".($min_pool_size)."');\n";
|
||||
print "insert into res_imp_object_variables values ($id,'planets.$planet.maxpoolsize',0,'".($max_pool_size)."');\n";
|
||||
|
||||
for ($i=0; $i!=9; ++$i)
|
||||
{
|
||||
if ($data[$i+3] ne "")
|
||||
{
|
||||
print "insert into res_imp_object_variables values ($id,'planets.$planet.fractal.$fractalParamName[$i]',0,'".($data[$i+3])."');\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
create table resource_import
|
||||
(
|
||||
id number ,
|
||||
parent_id number,
|
||||
name varchar2(500),
|
||||
max_types number,
|
||||
min_types number,
|
||||
min_pools number,
|
||||
max_pools number,
|
||||
constraint pk_resource_import primary key (id)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$parent="";
|
||||
|
||||
while (<>)
|
||||
{
|
||||
chop;
|
||||
@data=split("\t");
|
||||
$id=shift (@data);
|
||||
$shortname=shift (@data);
|
||||
|
||||
$fullname="";
|
||||
$found = 0;
|
||||
for ($i=0; $i<8; ++$i)
|
||||
{
|
||||
if ($found)
|
||||
{
|
||||
$previousname[$i]="";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($data[$i] eq "")
|
||||
{
|
||||
$data[$i]=$previousname[$i];
|
||||
}
|
||||
else
|
||||
{
|
||||
$found = 1;
|
||||
$classname=$data[$i];
|
||||
$previousname[$i]=$data[$i];
|
||||
}
|
||||
$fullname.=".".$data[$i];
|
||||
}
|
||||
}
|
||||
$class_id{$fullname}=$id;
|
||||
$parentname=$fullname;
|
||||
$parentname =~ s/\.[^\.]+$//;
|
||||
$parent_id=$class_id{$parentname} + 0;
|
||||
|
||||
# print join("\t",@data)."\n";
|
||||
$max_types = $data[8] + 0;
|
||||
$min_types = $data[9] + 0;
|
||||
$min_pools = $data[10] + 0;
|
||||
$max_pools = $data[11] + 0;
|
||||
# $min_pool_size = $data[11] + 0;
|
||||
# $max_pool_size = $data[12] + 0;
|
||||
|
||||
# $fractal_type = $data[13] + 0;
|
||||
# $fractal_x_scale = $data[14] + 0;
|
||||
# $fractal_y_scale = $data[15] + 0;
|
||||
# $fractal_bias = $data[16] + 0;
|
||||
# $fractal_gain = $data[17] + 0;
|
||||
# $fractal_combo_rule = $data[18] + 0;
|
||||
# $fractal_frequency = $data[19] + 0;
|
||||
# $fractal_amplitude = $data[20] + 0;
|
||||
# $fractal_octaves = $data[21] + 0;
|
||||
|
||||
for ($i=0; $i!=11; ++$i)
|
||||
{
|
||||
$attribute_name[$i] = $data[$i+12];
|
||||
$attribute_min[$i] = $data[$i*2+23];
|
||||
$attribute_max[$i] = $data[$i*2+24];
|
||||
}
|
||||
|
||||
$resource_container_type = $data[45];
|
||||
$random_name_class = $data[46];
|
||||
|
||||
#### output:
|
||||
|
||||
$classname =~ s/'/''/g;
|
||||
print "insert into resource_import values ($id,$parent_id,'$shortname','$classname',$max_types,$min_types,$min_pools,$max_pools,'$resource_container_type','$random_name_class');\n";
|
||||
|
||||
for ($i=0; $i!=11; ++$i)
|
||||
{
|
||||
last unless ($attribute_name[$i] ne "");
|
||||
print "insert into res_imp_object_variables values ($id,'attributes.$attribute_name[$i]',1,'$attribute_min[$i]:$attribute_max[$i]:');\n"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
-- PL/SQL Package for importing resource data
|
||||
|
||||
create or replace package resource_importer
|
||||
as
|
||||
procedure import_resources;
|
||||
procedure clear_import_tables;
|
||||
end;
|
||||
/
|
||||
|
||||
create or replace package body resource_importer
|
||||
as
|
||||
procedure import_resources
|
||||
as
|
||||
begin
|
||||
delete from res_imp_oid_map;
|
||||
|
||||
insert into res_imp_oid_map (object_id, reference_id, new)
|
||||
select rco.object_id, import_reference_id, 0
|
||||
from resource_class_objects rco, objects o
|
||||
where rco.object_id = o.object_id
|
||||
and o.deleted = 0;
|
||||
|
||||
insert into res_imp_oid_map (object_id, reference_id, new)
|
||||
select objectidmanager.get_single_id, id, 1
|
||||
from resource_import
|
||||
where not exists (
|
||||
select * from res_imp_oid_map
|
||||
where res_imp_oid_map.reference_id = resource_import.id);
|
||||
|
||||
insert into universe_objects (object_id)
|
||||
select object_id
|
||||
from res_imp_oid_map
|
||||
where new=1;
|
||||
|
||||
insert into objects (object_id, x, y, z, quaternion_w, quaternion_x, quaternion_y, quaternion_z, node_x, node_y, node_z,
|
||||
object_template, type_id, scene_id, deleted,object_name,contained_by,slot_arrangement)
|
||||
select object_id, 0,0,0, 0,0,0,0, 0,0,0,
|
||||
'object/resource_class/resource_class.iff',1380270927,'universe',0,ri.name,0,-1
|
||||
from res_imp_oid_map m, resource_import ri
|
||||
where m.reference_id = ri.id
|
||||
and new=1;
|
||||
|
||||
delete from resource_class_objects
|
||||
where object_id in (select object_id from res_imp_oid_map);
|
||||
|
||||
insert into resource_class_objects (object_id,resource_class_name,min_types,max_types,parent_class,import_reference_id)
|
||||
select m.object_id,i.name,i.min_types,i.max_types,nvl(p.object_id,0),i.id
|
||||
from res_imp_oid_map m, resource_import i, res_imp_oid_map p
|
||||
where m.reference_id = i.id
|
||||
and p.reference_id (+) = i.parent_id;
|
||||
|
||||
delete from object_variables
|
||||
where object_id in (select object_id from res_imp_oid_map);
|
||||
|
||||
insert into object_variables (object_id, name, type, value)
|
||||
select m.object_id, i.name, i.type, i.value
|
||||
from res_imp_oid_map m, res_imp_object_variables i
|
||||
where m.reference_id = i.id;
|
||||
end;
|
||||
|
||||
procedure clear_import_tables
|
||||
as
|
||||
begin
|
||||
delete from res_imp_oid_map;
|
||||
delete from resource_import;
|
||||
delete from res_imp_object_variables;
|
||||
end;
|
||||
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,84 @@
|
||||
Object Template ID Object Template New Object Template New Template ID Script Remove Script Add Objvar Remove General Protection Condition "Layer, Value" Attribute Bonus Crate Script Create Schematic
|
||||
1875688539 object/tangible/component/armor/armor_layer_acid.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[6,0.700000]" systems.crafting.armor.component.crafting_new_armor_advanced_layer_1
|
||||
192857538 object/tangible/component/armor/armor_layer_blast.iff object/tangible/component/armor/armor_layer_kinetic.iff -983864428 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[0,0.700000]" systems.crafting.armor.component.crafting_new_armor_advanced_layer_1 -190320536
|
||||
-442303678 object/tangible/component/armor/armor_layer_cold.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[5,0.700000]" systems.crafting.armor.component.crafting_new_armor_advanced_layer_1
|
||||
-2072795932 object/tangible/component/armor/armor_layer_electrical.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[2,0.700000]" systems.crafting.armor.component.crafting_new_armor_advanced_layer_1
|
||||
983989372 object/tangible/component/armor/armor_layer_energy.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[1,0.700000]" systems.crafting.armor.component.crafting_new_armor_advanced_layer_1
|
||||
490845618 object/tangible/component/armor/armor_layer_heat.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[4,0.700000]" systems.crafting.armor.component.crafting_new_armor_advanced_layer_1
|
||||
-983864428 object/tangible/component/armor/armor_layer_kinetic.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[0,0.700000]" systems.crafting.armor.component.crafting_new_armor_advanced_layer_1
|
||||
2086609620 object/tangible/component/armor/armor_layer_nightsister.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:20.000000]
|
||||
110363758 object/tangible/component/armor/armor_layer_ris.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:25.000000]
|
||||
-1424880637 object/tangible/component/armor/armor_layer_stun.iff object/tangible/component/armor/armor_layer_kinetic.iff -983864428 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[0,0.700000]" systems.crafting.armor.component.crafting_new_armor_advanced_layer_1 -190320536
|
||||
-448030425 object/tangible/component/armor/armor_segment.iff object/tangible/component/armor/armor_segment_recon.iff 1594162622 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment 1861772866
|
||||
-786663538 object/tangible/component/armor/armor_segment_bone.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
-702291727 object/tangible/component/armor/armor_segment_bone_advanced.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
50152844 object/tangible/component/armor/armor_segment_bone_donkuwah.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.6 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
-132357748 object/tangible/component/armor/armor_segment_bone_kimogila.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.8 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
1590091204 object/tangible/component/armor/armor_segment_bone_voritor_lizard.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.6 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
-212848001 object/tangible/component/armor/armor_segment_chitin.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
1415954991 object/tangible/component/armor/armor_segment_chitin_advanced.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
1401689522 object/tangible/component/armor/armor_segment_chitin_brackaset.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
1656768558 object/tangible/component/armor/armor_segment_chitin_kliknick.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.6 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
944293988 object/tangible/component/armor/armor_segment_chitin_kliknick_adv.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.8 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
-1764803069 object/tangible/component/armor/armor_segment_chitin_sharnaff.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.5 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
2026707684 object/tangible/component/armor/armor_segment_composite.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
1741906969 object/tangible/component/armor/armor_segment_composite_advanced.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.7 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
1862066444 object/tangible/component/armor/armor_segment_composite_krayt.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.8 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
981227534 object/tangible/component/armor/armor_segment_enhancement_brackaset.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:5.000000]
|
||||
-613110139 object/tangible/component/armor/armor_segment_enhancement_fambaa.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:5.000000]
|
||||
188520444 object/tangible/component/armor/armor_segment_enhancement_janta.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:10.000000]
|
||||
-589817340 object/tangible/component/armor/armor_segment_enhancement_kimogila.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:10.000000]
|
||||
1740191859 object/tangible/component/armor/armor_segment_enhancement_krayt.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:15.000000]
|
||||
-1464343893 object/tangible/component/armor/armor_segment_enhancement_nightsister.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:15.000000]
|
||||
-2022305605 object/tangible/component/armor/armor_segment_enhancement_rancor.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:15.000000]
|
||||
810379093 object/tangible/component/armor/armor_segment_enhancement_sharnaff.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:5.000000]
|
||||
-965865145 object/tangible/component/armor/armor_segment_enhancement_voritor_lizard.iff systems.crafting.armor.component.crafting_armor_component_attribute item.component.component_attrib_mod armor* [0:5.000000]
|
||||
775748867 object/tangible/component/armor/armor_segment_kashyyykian_black_mtn.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
-1876464536 object/tangible/component/armor/armor_segment_kashyyykian_black_mtn_advanced.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
-483088632 object/tangible/component/armor/armor_segment_kashyyykian_ceremonial.iff object/tangible/component/armor/armor_segment_recon.iff 1594162622 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment 1861772866
|
||||
901906289 object/tangible/component/armor/armor_segment_kashyyykian_ceremonial_advanced.iff object/tangible/component/armor/armor_segment_recon.iff 1594162622 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment 1861772866
|
||||
-2134198239 object/tangible/component/armor/armor_segment_kashyyykian_hunting.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
-1655034745 object/tangible/component/armor/armor_segment_kashyyykian_hunting_advanced.iff object/tangible/component/armor/armor_segment_assault.iff 2042493214 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.7 0.2 systems.crafting.armor.component.crafting_new_armor_segment -1138822246
|
||||
1080722273 object/tangible/component/armor/armor_segment_padded.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
1220774872 object/tangible/component/armor/armor_segment_padded_acklay.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.8 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
1141198733 object/tangible/component/armor/armor_segment_padded_advanced.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.7 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
-309965447 object/tangible/component/armor/armor_segment_padded_fambaa.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.6 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
-1316687033 object/tangible/component/armor/armor_segment_padded_rancor.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.8 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
-1322827874 object/tangible/component/armor/armor_segment_ris.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.8 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
810339444 object/tangible/component/armor/armor_segment_ubese.iff object/tangible/component/armor/armor_segment_recon.iff 1594162622 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment 1861772866
|
||||
1102511316 object/tangible/component/armor/armor_segment_ubese_advanced.iff object/tangible/component/armor/armor_segment_recon.iff 1594162622 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.7 0.2 systems.crafting.armor.component.crafting_new_armor_segment 1861772866
|
||||
1804298795 object/tangible/component/armor/armor_segment_zam.iff object/tangible/component/armor/armor_segment_recon.iff 1594162622 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.3 0.2 systems.crafting.armor.component.crafting_new_armor_segment 1861772866
|
||||
1505456979 object/tangible/component/armor/armor_segment_zam_advanced.iff object/tangible/component/armor/armor_segment_recon.iff 1594162622 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.7 0.2 systems.crafting.armor.component.crafting_new_armor_segment 1861772866
|
||||
-90182809 object/tangible/component/armor/bone_fragment_woolamander_harrower.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-1915271095 object/tangible/component/armor/deflector_shield_emitter_assembly.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-1188519487 object/tangible/component/armor/deflector_shield_generator_energy_ray.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-1173568585 object/tangible/component/armor/deflector_shield_generator_particle.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
1906195493 object/tangible/component/armor/deflector_shield_projector_plate.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-1958737672 object/tangible/component/armor/feather_peko_albatross.iff systems.crafting.armor.component.crafting_armor_component_attribute armor* [0:20.000000]
|
||||
665098706 object/tangible/component/armor/hide_gurk_king.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-1170494820 object/tangible/component/armor/scale_giant_dune_kimogila.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
831150616 object/tangible/component/armor/heavy_armor_layer.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
1762601318 object/tangible/component/armor/heavy_armor_layer_acid.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-764562064 object/tangible/component/armor/heavy_armor_layer_blast.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-480153985 object/tangible/component/armor/heavy_armor_layer_cold.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-784284994 object/tangible/component/armor/heavy_armor_layer_electrical.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
444888474 object/tangible/component/armor/heavy_armor_layer_energy.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
1618598853 object/tangible/component/armor/heavy_armor_layer_environmental.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
461512847 object/tangible/component/armor/heavy_armor_layer_heat.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
2138127220 object/tangible/component/armor/heavy_armor_layer_kinetic.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
1938675644 object/tangible/component/armor/heavy_armor_layer_restraint.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-1378772674 object/tangible/component/armor/heavy_armor_layer_stun.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-1109531580 object/tangible/component/armor/shield_generator_facility.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
155551742 object/tangible/component/armor/deflector_shield_ion_feed_unit.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-623854688 object/tangible/component/armor/deflector_shield_overload_discharge_unit.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-617341983 object/tangible/component/armor/armor_module_heavy.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
443295551 object/tangible/component/armor/armor_module_light.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor*
|
||||
-1554492115 object/tangible/component/armor/armor_layer_environmental.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[0,0.700000]"
|
||||
201334650 object/tangible/component/armor/armor_layer_restraint.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* "[12,0.700000]"
|
||||
78081465 object/tangible/component/armor/armor_segment_advanced.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* systems.crafting.armor.component.crafting_new_armor_segment
|
||||
1261011254 object/tangible/component/armor/armor_segment_bone_acklay.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.8 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
227937004 object/tangible/component/armor/armor_segment_enhancement_dragonet.iff systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* [0:5.000000]
|
||||
-1185633502 object/tangible/component/armor/armor_segment_padded_dune_lizard.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.4 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
-1920361299 object/tangible/component/armor/armor_segment_ris_acklay.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.8 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
349677024 object/tangible/component/clothing/padding_segment.iff object/tangible/component/armor/armor_segment_battle.iff -1438161694 systems.crafting.armor.component.crafting_armor_component_attribute item.armor.new_armor armor* 0.7 0.2 systems.crafting.armor.component.crafting_new_armor_segment -2043680571
|
||||
1210744947 object/tangible/component/weapon/geonosian_power_cube_yellow.iff item.armor.new_armor 0.175
|
||||
@@ -0,0 +1,242 @@
|
||||
Object Template ID Object Template Script Add Script Remove Objvar Remove Effectiveness General Protection Condition Level Category Add Objvar New Template ID New Template Name Crate Script Add Crate Draft Schematic Crate Objvar
|
||||
1386184862 object/tangible/wearables/armor/bone/armor_bone_s01_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1324608047
|
||||
575325453 object/tangible/wearables/armor/bone/armor_bone_s01_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1042722750
|
||||
1652891098 object/tangible/wearables/armor/bone/armor_bone_s01_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats 1870545359
|
||||
1185807341 object/tangible/wearables/armor/bone/armor_bone_s01_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 500347981
|
||||
913882750 object/tangible/wearables/armor/bone/armor_bone_s01_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 1829237214
|
||||
1994709940 object/tangible/wearables/armor/bone/armor_bone_s01_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 1282818768
|
||||
-1489599533 object/tangible/wearables/armor/bone/armor_bone_s01_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats 1839665152
|
||||
301359835 object/tangible/wearables/armor/bone/armor_bone_s01_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -613945080
|
||||
-913758478 object/tangible/wearables/armor/bone/armor_bone_s01_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1829344942
|
||||
306929321 object/tangible/wearables/armor/bone/gp_armor_bone_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1324608047
|
||||
1654528826 object/tangible/wearables/armor/bone/gp_armor_bone_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1042722750
|
||||
-1981228116 object/tangible/wearables/armor/bone/gp_armor_bone_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats 1870545359
|
||||
-1493844838 object/tangible/wearables/armor/bone/gp_armor_bone_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 500347981
|
||||
-702482167 object/tangible/wearables/armor/bone/gp_armor_bone_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 1829237214
|
||||
1360182635 object/tangible/wearables/armor/bone/gp_armor_bone_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 1282818768
|
||||
605165771 object/tangible/wearables/armor/bone/gp_armor_bone_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats 1839665152
|
||||
-1831667261 object/tangible/wearables/armor/bone/gp_armor_bone_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -613945080
|
||||
701587845 object/tangible/wearables/armor/bone/gp_armor_bone_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1829344942
|
||||
-1634646786 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_belt.iff item.armor.new_armor armor.effectiveness 2099054288 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_belt.iff
|
||||
819427966 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_bicep_l.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" -852325331 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_bicep_l.iff
|
||||
1073889261 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_bicep_r.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" -1108883010 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_bicep_r.iff
|
||||
1449316778 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_boots.iff item.armor.new_armor armor.effectiveness 2 2 315293450 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_boots.iff
|
||||
-1418664428 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_bracer_l.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" -151793970 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_bracer_l.iff
|
||||
-609901689 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_bracer_r.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" -2044294307 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_bracer_r.iff
|
||||
-1782480140 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_chest_plate.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" 1649659380 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_chest_plate.iff
|
||||
-2016614241 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_gloves.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" 140529204 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_gloves.iff
|
||||
822872471 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_helmet.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" -1096765636 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_helmet.iff
|
||||
609499915 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_leggings.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" 2044138449 object/tangible/wearables/armor/bounty_hunter/armor_bounty_hunter_crafted_leggings.iff
|
||||
1026806068 object/tangible/wearables/armor/chitin/armor_chitin_s01_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1366672887 "('crafting_components.layer15',2,'0.454545')"
|
||||
1306956967 object/tangible/wearables/armor/chitin/armor_chitin_s01_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 564166756 "('crafting_components.layer15',2,'0.454545')"
|
||||
1503133620 object/tangible/wearables/armor/chitin/armor_chitin_s01_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 2 systems.crafting.armor.component.crafting_armor_nostats -1773284434
|
||||
2115381959 object/tangible/wearables/armor/chitin/armor_chitin_s01_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1582582732 "('crafting_components.layer15',2,'0.454545')"
|
||||
247689044 object/tangible/wearables/armor/chitin/armor_chitin_s01_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -780209753 "('crafting_components.layer15',2,'0.454545')"
|
||||
725211246 object/tangible/wearables/armor/chitin/armor_chitin_s01_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1253715791 "('crafting_components.layer15',2,'0.454545')"
|
||||
1252870946 object/tangible/wearables/armor/chitin/armor_chitin_s01_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 2 systems.crafting.armor.component.crafting_armor_nostats -180061178
|
||||
-59921878 object/tangible/wearables/armor/chitin/armor_chitin_s01_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1132764430 "('crafting_components.layer15',2,'0.454545')"
|
||||
-248317992 object/tangible/wearables/armor/chitin/armor_chitin_s01_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 781150507 "('crafting_components.layer15',2,'0.454545')"
|
||||
-171534277 object/tangible/wearables/armor/chitin/energy_armor_chitin_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1366672887 "('crafting_components.layer15',2,'0.454545')"
|
||||
-2062295640 object/tangible/wearables/armor/chitin/energy_armor_chitin_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 564166756 "('crafting_components.layer15',2,'0.454545')"
|
||||
-127140925 object/tangible/wearables/armor/chitin/energy_armor_chitin_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 2 systems.crafting.armor.component.crafting_armor_nostats -1773284434
|
||||
-253929242 object/tangible/wearables/armor/chitin/energy_armor_chitin_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1582582732 "('crafting_components.layer15',2,'0.454545')"
|
||||
-2146951819 object/tangible/wearables/armor/chitin/energy_armor_chitin_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -780209753 "('crafting_components.layer15',2,'0.454545')"
|
||||
1042717208 object/tangible/wearables/armor/chitin/energy_armor_chitin_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1253715791 "('crafting_components.layer15',2,'0.454545')"
|
||||
1128757147 object/tangible/wearables/armor/chitin/energy_armor_chitin_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 2 systems.crafting.armor.component.crafting_armor_nostats -180061178
|
||||
-175663469 object/tangible/wearables/armor/chitin/energy_armor_chitin_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1132764430 "('crafting_components.layer15',2,'0.454545')"
|
||||
2147059193 object/tangible/wearables/armor/chitin/energy_armor_chitin_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 781150507 "('crafting_components.layer15',2,'0.454545')"
|
||||
748768172 object/tangible/wearables/armor/composite/armor_composite_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" systems.armor_rehue.composite_rehue "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -293142117 "('crafting_components.layer15',2,'0.454545')"
|
||||
1551109695 object/tangible/wearables/armor/composite/armor_composite_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" systems.armor_rehue.composite_rehue "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1638775800 "('crafting_components.layer15',2,'0.454545')"
|
||||
1302427111 object/tangible/wearables/armor/composite/armor_composite_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" systems.armor_rehue.composite_rehue armor.effectiveness 2 2 systems.crafting.armor.component.crafting_armor_nostats 953524984
|
||||
-1537444864 object/tangible/wearables/armor/composite/armor_composite_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" systems.armor_rehue.composite_rehue "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -702617353 "('crafting_components.layer15',2,'0.454545')"
|
||||
-729206381 object/tangible/wearables/armor/composite/armor_composite_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" systems.armor_rehue.composite_rehue "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1496601244 "('crafting_components.layer15',2,'0.454545')"
|
||||
1231025524 object/tangible/wearables/armor/composite/armor_composite_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" systems.armor_rehue.composite_rehue "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 467509735 "('crafting_components.layer15',2,'0.454545')"
|
||||
590525838 object/tangible/wearables/armor/composite/armor_composite_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" systems.armor_rehue.composite_rehue armor.effectiveness 2 2 systems.crafting.armor.component.crafting_armor_nostats -1600857086
|
||||
-1779280762 object/tangible/wearables/armor/composite/armor_composite_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" systems.armor_rehue.composite_rehue "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 374619402 "('crafting_components.layer15',2,'0.454545')"
|
||||
729327903 object/tangible/wearables/armor/composite/armor_composite_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" systems.armor_rehue.composite_rehue "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1496987112 "('crafting_components.layer15',2,'0.454545')"
|
||||
-255400918 object/tangible/wearables/armor/ithorian_defender/ith_armor_s01_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 1735043340
|
||||
-2146197063 object/tangible/wearables/armor/ithorian_defender/ith_armor_s01_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 398453919
|
||||
-1390425255 object/tangible/wearables/armor/ithorian_defender/ith_armor_s01_boots.iff "item.armor.new_armor,item.conversion.armor_boots_ith_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats 985400715
|
||||
-412867955 object/tangible/wearables/armor/ithorian_defender/ith_armor_s01_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 1886613270
|
||||
-1749981410 object/tangible/wearables/armor/ithorian_defender/ith_armor_s01_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 10889861
|
||||
1756768751 object/tangible/wearables/armor/ithorian_defender/ith_armor_s01_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 431228564
|
||||
1478831607 object/tangible/wearables/armor/ithorian_defender/ith_armor_s01_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_ith_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats -1062103956
|
||||
-286929665 object/tangible/wearables/armor/ithorian_defender/ith_armor_s01_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 1987147108
|
||||
1749090194 object/tangible/wearables/armor/ithorian_defender/ith_armor_s01_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -11030007
|
||||
183123522 object/tangible/wearables/armor/ithorian_guardian/ith_armor_s02_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 647086555 "('crafting_components.layer14',2,'0.454545')"
|
||||
2050980817 object/tangible/wearables/armor/ithorian_guardian/ith_armor_s02_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1447330888 "('crafting_components.layer14',2,'0.454545')"
|
||||
2062241693 object/tangible/wearables/armor/ithorian_guardian/ith_armor_s02_boots.iff "item.armor.new_armor,item.conversion.armor_boots_ith_conversion" armor.effectiveness 2 0 systems.crafting.armor.component.crafting_armor_nostats -772711695
|
||||
1837916498 object/tangible/wearables/armor/ithorian_guardian/ith_armor_s02_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1151543850 "('crafting_components.layer14',2,'0.454545')"
|
||||
492381377 object/tangible/wearables/armor/ithorian_guardian/ith_armor_s02_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -880177083 "('crafting_components.layer14',2,'0.454545')"
|
||||
108052567 object/tangible/wearables/armor/ithorian_guardian/ith_armor_s02_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -218539538 "('crafting_components.layer14',2,'0.454545')"
|
||||
-1552027109 object/tangible/wearables/armor/ithorian_guardian/ith_armor_s02_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_ith_conversion" armor.effectiveness 2 0 systems.crafting.armor.component.crafting_armor_nostats 1661731700
|
||||
364712723 object/tangible/wearables/armor/ithorian_guardian/ith_armor_s02_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -707992964 "('crafting_components.layer14',2,'0.454545')"
|
||||
-492258227 object/tangible/wearables/armor/ithorian_guardian/ith_armor_s02_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 880281801 "('crafting_components.layer14',2,'0.454545')"
|
||||
1926737359 object/tangible/wearables/armor/ithorian_sentinel/ith_armor_s03_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -977049079 "('crafting_components.layer15',2,'0.454545')"
|
||||
33744988 object/tangible/wearables/armor/ithorian_sentinel/ith_armor_s03_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1256837222 "('crafting_components.layer15',2,'0.454545')"
|
||||
1205005532 object/tangible/wearables/armor/ithorian_sentinel/ith_armor_s03_boots.iff "item.armor.new_armor,item.conversion.armor_boots_ith_conversion" armor.effectiveness 2 2 systems.crafting.armor.component.crafting_armor_nostats -186991275
|
||||
-1767695347 object/tangible/wearables/armor/ithorian_sentinel/ith_armor_s03_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 555550582 "('crafting_components.layer15',2,'0.454545')"
|
||||
-428451426 object/tangible/wearables/armor/ithorian_sentinel/ith_armor_s03_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1372078821 "('crafting_components.layer15',2,'0.454545')"
|
||||
-1520174324 object/tangible/wearables/armor/ithorian_sentinel/ith_armor_s03_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -674054582 "('crafting_components.layer15',2,'0.454545')"
|
||||
2132891736 object/tangible/wearables/armor/ithorian_sentinel/ith_armor_s03_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_ith_conversion" armor.effectiveness 2 2 systems.crafting.armor.component.crafting_armor_nostats -955417857
|
||||
-907953840 object/tangible/wearables/armor/ithorian_sentinel/ith_armor_s03_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1909300215 "('crafting_components.layer15',2,'0.454545')"
|
||||
428327186 object/tangible/wearables/armor/ithorian_sentinel/ith_armor_s03_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_ith_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1371940247 "('crafting_components.layer15',2,'0.454545')"
|
||||
-1877836182 object/tangible/wearables/armor/kashyyykian_black_mtn/armor_kashyyykian_black_mtn_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1701039966
|
||||
-523813895 object/tangible/wearables/armor/kashyyykian_black_mtn/armor_kashyyykian_black_mtn_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -364284623
|
||||
66083222 object/tangible/wearables/armor/kashyyykian_black_mtn/armor_kashyyykian_black_mtn_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -937806356
|
||||
523674485 object/tangible/wearables/armor/kashyyykian_black_mtn/armor_kashyyykian_black_mtn_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 364441021
|
||||
1974187109 object/tangible/wearables/armor/kashyyykian_ceremonial/armor_kashyyykian_ceremonial_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -678680574 "('crafting_components.layer14',2,'0.454545')"
|
||||
92205558 object/tangible/wearables/armor/kashyyykian_ceremonial/armor_kashyyykian_ceremonial_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1487311471 "('crafting_components.layer14',2,'0.454545')"
|
||||
856491201 object/tangible/wearables/armor/kashyyykian_ceremonial/armor_kashyyykian_ceremonial_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 708645782 "('crafting_components.layer14',2,'0.454545')"
|
||||
-91264646 object/tangible/wearables/armor/kashyyykian_ceremonial/armor_kashyyykian_ceremonial_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1487467805 "('crafting_components.layer14',2,'0.454545')"
|
||||
811367898 object/tangible/wearables/armor/kashyyykian_hunting/armor_kashyyykian_hunting_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 2003645176 "('crafting_components.layer15',2,'0.454545')"
|
||||
1082734665 object/tangible/wearables/armor/kashyyykian_hunting/armor_kashyyykian_hunting_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 129529707 "('crafting_components.layer15',2,'0.454545')"
|
||||
1193819287 object/tangible/wearables/armor/kashyyykian_hunting/armor_kashyyykian_hunting_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -212755131 "('crafting_components.layer15',2,'0.454545')"
|
||||
-1082613563 object/tangible/wearables/armor/kashyyykian_hunting/armor_kashyyykian_hunting_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_wookie_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -129372185 "('crafting_components.layer15',2,'0.454545')"
|
||||
-1640376935 object/tangible/wearables/armor/mandalorian/armor_mandalorian_belt.iff item.conversion.armor_mand armor.effectiveness "('armor.mandDeconstruct',0,'1')"
|
||||
1584198075 object/tangible/wearables/armor/mandalorian/armor_mandalorian_bicep_l.iff "item.armor.new_armor,item.conversion.armor_mand" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.mandDeconstruct',0,'1')"
|
||||
783922216 object/tangible/wearables/armor/mandalorian/armor_mandalorian_bicep_r.iff "item.armor.new_armor,item.conversion.armor_mand" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.mandDeconstruct',0,'1')"
|
||||
-2133834359 object/tangible/wearables/armor/mandalorian/armor_mandalorian_bracer_l.iff "item.armor.new_armor,item.conversion.armor_mand" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.mandDeconstruct',0,'1')"
|
||||
-268107750 object/tangible/wearables/armor/mandalorian/armor_mandalorian_bracer_r.iff "item.armor.new_armor,item.conversion.armor_mand" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.mandDeconstruct',0,'1')"
|
||||
1631264204 object/tangible/wearables/armor/mandalorian/armor_mandalorian_chest_plate.iff "item.armor.new_armor,item.conversion.armor_mand" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.mandDeconstruct',0,'1')"
|
||||
-1047768279 object/tangible/wearables/armor/mandalorian/armor_mandalorian_gloves.iff "item.armor.new_armor,item.conversion.armor_mand" armor.effectiveness 2 2 "('armor.mandDeconstruct',0,'1')"
|
||||
2001515041 object/tangible/wearables/armor/mandalorian/armor_mandalorian_helmet.iff "item.armor.new_armor,item.conversion.armor_mand" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.mandDeconstruct',0,'1')"
|
||||
267688086 object/tangible/wearables/armor/mandalorian/armor_mandalorian_leggings.iff "item.armor.new_armor,item.conversion.armor_mand" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.mandDeconstruct',0,'1')"
|
||||
1065077663 object/tangible/wearables/armor/mandalorian/armor_mandalorian_shoes.iff "item.armor.new_armor,item.conversion.armor_mand" armor.effectiveness 2 2 "('armor.mandDeconstruct',0,'1')"
|
||||
57117299 object/tangible/wearables/armor/marauder/armor_marauder_s01_belt.iff armor.effectiveness
|
||||
866000377 object/tangible/wearables/armor/marauder/armor_marauder_s01_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
1129011306 object/tangible/wearables/armor/marauder/armor_marauder_s01_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
-279689267 object/tangible/wearables/armor/marauder/armor_marauder_s01_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
-1618935202 object/tangible/wearables/armor/marauder/armor_marauder_s01_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
-1377743586 object/tangible/wearables/armor/marauder/armor_marauder_s01_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
1440200840 object/tangible/wearables/armor/marauder/armor_marauder_s01_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 1
|
||||
-485009024 object/tangible/wearables/armor/marauder/armor_marauder_s01_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
1617992402 object/tangible/wearables/armor/marauder/armor_marauder_s01_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
246676033 object/tangible/wearables/armor/marauder/armor_marauder_s02_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')"
|
||||
2120662994 object/tangible/wearables/armor/marauder/armor_marauder_s02_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')"
|
||||
-1169656734 object/tangible/wearables/armor/marauder/armor_marauder_s02_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 0
|
||||
659297422 object/tangible/wearables/armor/marauder/armor_marauder_s02_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')"
|
||||
1469665565 object/tangible/wearables/armor/marauder/armor_marauder_s02_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')"
|
||||
-1785454855 object/tangible/wearables/armor/marauder/armor_marauder_s02_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')"
|
||||
522917746 object/tangible/wearables/armor/marauder/armor_marauder_s02_chest_plate_quest.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')"
|
||||
-1469527663 object/tangible/wearables/armor/marauder/armor_marauder_s02_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')"
|
||||
824817548 object/tangible/wearables/armor/marauder/armor_marauder_s03_bandolier_double.iff armor.effectiveness
|
||||
-434656188 object/tangible/wearables/armor/marauder/armor_marauder_s03_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')"
|
||||
-1765611049 object/tangible/wearables/armor/marauder/armor_marauder_s03_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')"
|
||||
1139078028 object/tangible/wearables/armor/marauder/armor_marauder_s03_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 2
|
||||
1622923855 object/tangible/wearables/armor/marauder/armor_marauder_s03_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')"
|
||||
275685340 object/tangible/wearables/armor/marauder/armor_marauder_s03_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')"
|
||||
-2109263964 object/tangible/wearables/armor/marauder/armor_marauder_s03_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')"
|
||||
1513782916 object/tangible/wearables/armor/marauder/armor_marauder_s03_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 2
|
||||
-319119476 object/tangible/wearables/armor/marauder/armor_marauder_s03_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')"
|
||||
-274790576 object/tangible/wearables/armor/marauder/armor_marauder_s03_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 2 "('armor.layer15',2,'0.454545')"
|
||||
-1751431536 object/tangible/wearables/armor/marauder/energy_armor_marauder_belt.iff armor.effectiveness
|
||||
1928484082 object/tangible/wearables/armor/marauder/energy_armor_marauder_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
36114785 object/tangible/wearables/armor/marauder/energy_armor_marauder_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
2125025189 object/tangible/wearables/armor/marauder/energy_armor_marauder_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 1
|
||||
-1285938931 object/tangible/wearables/armor/marauder/energy_armor_marauder_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
-1014012770 object/tangible/wearables/armor/marauder/energy_armor_marauder_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
-698743461 object/tangible/wearables/armor/marauder/energy_armor_marauder_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
-226902841 object/tangible/wearables/armor/marauder/energy_armor_marauder_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 1
|
||||
1152998863 object/tangible/wearables/armor/marauder/energy_armor_marauder_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
1014955026 object/tangible/wearables/armor/marauder/energy_armor_marauder_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1
|
||||
-1762554943 object/tangible/wearables/armor/marine/armor_marine_bicep_l.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545'):('biolink.faction_points',0,'5')"
|
||||
-433795502 object/tangible/wearables/armor/marine/armor_marine_bicep_r.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545'):('biolink.faction_points',0,'5')"
|
||||
1463740430 object/tangible/wearables/armor/marine/armor_marine_boots.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" armor.effectiveness 2 0 "('biolink.faction_points',0,'5')"
|
||||
-2101932344 object/tangible/wearables/armor/marine/armor_marine_chest_plate.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545'):('biolink.faction_points',0,'5')"
|
||||
-1721490790 object/tangible/wearables/armor/marine/armor_marine_chest_plate_rebel.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545'):('biolink.faction_points',0,'5')"
|
||||
1777643552 object/tangible/wearables/armor/marine/armor_marine_helmet.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545'):('biolink.faction_points',0,'5')"
|
||||
-385048649 object/tangible/wearables/armor/marine/armor_marine_leggings.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545'):('biolink.faction_points',0,'5')"
|
||||
-761139333 object/tangible/wearables/armor/nightsister/armor_nightsister_bicep_r_s01.iff
|
||||
-932988328 object/tangible/wearables/armor/padded/armor_padded_s01_belt.iff armor.effectiveness systems.crafting.armor.component.crafting_armor_nostats -1971625869
|
||||
525967921 object/tangible/wearables/armor/padded/armor_padded_s01_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -439640191
|
||||
1871505314 object/tangible/wearables/armor/padded/armor_padded_s01_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1793140206
|
||||
-963800801 object/tangible/wearables/armor/padded/armor_padded_s01_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats -481038074
|
||||
-2050710967 object/tangible/wearables/armor/padded/armor_padded_s01_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1312081514
|
||||
-183375910 object/tangible/wearables/armor/padded/armor_padded_s01_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1054966779
|
||||
689622929 object/tangible/wearables/armor/padded/armor_padded_s01_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1067716071
|
||||
1301374465 object/tangible/wearables/armor/padded/armor_padded_s01_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats 471310986
|
||||
-78543095 object/tangible/wearables/armor/padded/armor_padded_s01_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1428733054
|
||||
182484822 object/tangible/wearables/armor/padded/armor_padded_s01_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 1055909001
|
||||
1051253941 object/tangible/wearables/armor/padded/impact_armor_padded_belt.iff armor.effectiveness systems.crafting.armor.component.crafting_armor_nostats -1971625869
|
||||
-954052477 object/tangible/wearables/armor/padded/impact_armor_padded_bicep_l.iff "item.armor.new_armor,item.conversion.armor_bicep_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -439640191
|
||||
-1208543984 object/tangible/wearables/armor/padded/impact_armor_padded_bicep_r.iff "item.armor.new_armor,item.conversion.armor_bicep_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1793140206
|
||||
-1630155612 object/tangible/wearables/armor/padded/impact_armor_padded_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats -481038074
|
||||
-911886824 object/tangible/wearables/armor/padded/impact_armor_padded_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1312081514
|
||||
-1183779957 object/tangible/wearables/armor/padded/impact_armor_padded_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1054966779
|
||||
-343994769 object/tangible/wearables/armor/padded/impact_armor_padded_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1067716071
|
||||
1263770558 object/tangible/wearables/armor/padded/impact_armor_padded_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats 471310986
|
||||
-40666442 object/tangible/wearables/armor/padded/impact_armor_padded_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final -1428733054
|
||||
1182886663 object/tangible/wearables/armor/padded/impact_armor_padded_leggings.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 systems.crafting.armor.component.crafting_new_armor_final 1055909001
|
||||
774778471 object/tangible/wearables/armor/ris/armor_ris_bicep_l.iff "item.armor.new_armor,item.conversion.armor_ris" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('armor.risDeconstruct',0,'1')" systems.crafting.armor.component.crafting_new_armor_final -1388916234
|
||||
1593535476 object/tangible/wearables/armor/ris/armor_ris_bicep_r.iff "item.armor.new_armor,item.conversion.armor_ris" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('armor.risDeconstruct',0,'1')" systems.crafting.armor.component.crafting_new_armor_final -572287899
|
||||
-306804975 object/tangible/wearables/armor/ris/armor_ris_boots.iff item.armor.new_armor armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats -1862370746
|
||||
582714478 object/tangible/wearables/armor/ris/armor_ris_bracer_l.iff "item.armor.new_armor,item.conversion.armor_ris" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('armor.risDeconstruct',0,'1')" systems.crafting.armor.component.crafting_new_armor_final 1577833305
|
||||
1382990333 object/tangible/wearables/armor/ris/armor_ris_bracer_r.iff "item.armor.new_armor,item.conversion.armor_ris" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('armor.risDeconstruct',0,'1')" systems.crafting.armor.component.crafting_new_armor_final 786339530
|
||||
-1832625049 object/tangible/wearables/armor/ris/armor_ris_chest_plate.iff "item.armor.new_armor,item.conversion.armor_ris" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('armor.risDeconstruct',0,'1')" systems.crafting.armor.component.crafting_new_armor_final -1275692711
|
||||
-974187136 object/tangible/wearables/armor/ris/armor_ris_gloves.iff item.armor.new_armor armor.effectiveness 2 1 systems.crafting.armor.component.crafting_armor_nostats 1550571956
|
||||
1932522632 object/tangible/wearables/armor/ris/armor_ris_helmet.iff "item.armor.new_armor,item.conversion.armor_ris" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('armor.risDeconstruct',0,'1')" systems.crafting.armor.component.crafting_new_armor_final -357877572
|
||||
-1382065807 object/tangible/wearables/armor/ris/armor_ris_leggings.iff "item.armor.new_armor,item.conversion.armor_ris" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('armor.risDeconstruct',0,'1')" systems.crafting.armor.component.crafting_new_armor_final -785445306
|
||||
1841408054 object/tangible/wearables/armor/singing_mountain_clan/armor_smc_s01_bicep_l.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0
|
||||
487910821 object/tangible/wearables/armor/singing_mountain_clan/armor_smc_s01_bicep_r.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0
|
||||
-185039936 object/tangible/wearables/armor/singing_mountain_clan/armor_smc_s01_bracer_l.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0
|
||||
-2077374893 object/tangible/wearables/armor/singing_mountain_clan/armor_smc_s01_bracer_r.iff item.armor.new_armor "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0
|
||||
303274938 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_bicep_l.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
1657200169 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_bicep_r.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
1224577523 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_boots.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" armor.effectiveness 2 1 "('biolink.faction_points',0,'5')"
|
||||
-30363750 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_bracer_l.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
-1897534967 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_bracer_r.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
567515627 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_chest_plate.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
1362436589 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_chest_plate_quest.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
1746127589 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_gloves.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" armor.effectiveness 2 1 "('biolink.faction_points',0,'5')"
|
||||
-556586003 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_helmet.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
1630705486 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_helmet_quest.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
1897165445 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_leggings.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
-2065356471 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_leggings_quest.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
487215056 object/tangible/wearables/armor/stormtrooper/armor_stormtrooper_utility_belt.iff "npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" armor.effectiveness "('biolink.faction_points',0,'5')"
|
||||
-483121900 object/tangible/wearables/armor/stormtrooper/blast_armor_stormtrooper_bicep_l.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
-1813946233 object/tangible/wearables/armor/stormtrooper/blast_armor_stormtrooper_bicep_r.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
830219516 object/tangible/wearables/armor/stormtrooper/blast_armor_stormtrooper_boots.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" armor.effectiveness 2 1 "('biolink.faction_points',0,'5')"
|
||||
1425531172 object/tangible/wearables/armor/stormtrooper/blast_armor_stormtrooper_bracer_l.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
606250167 object/tangible/wearables/armor/stormtrooper/blast_armor_stormtrooper_bracer_r.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
-1175884434 object/tangible/wearables/armor/stormtrooper/blast_armor_stormtrooper_chest_plate.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
-1659123451 object/tangible/wearables/armor/stormtrooper/blast_armor_stormtrooper_helmet.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
-606913477 object/tangible/wearables/armor/stormtrooper/blast_armor_stormtrooper_leggings.iff "item.armor.new_armor,npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" "[0:10,10:20,20:30,30:40]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 1 "('biolink.faction_points',0,'5')"
|
||||
619388150 object/tangible/wearables/armor/stormtrooper/blast_armor_stormtrooper_utility_belt.iff "npc.faction_recruiter.faction_item,npc.faction_recruiter.biolink_item" armor.effectiveness "('biolink.faction_points',0,'5')"
|
||||
-2061397693 object/tangible/wearables/armor/tantel/armor_tantel_skreej_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 0 systems.crafting.armor.component.crafting_armor_nostats -2118749659
|
||||
-914141938 object/tangible/wearables/armor/tantel/armor_tantel_skreej_boots_quest.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 0 systems.crafting.armor.component.crafting_armor_nostats -2118749659
|
||||
-653428823 object/tangible/wearables/armor/tantel/armor_tantel_skreej_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1564577478 "('crafting_components.layer14',2,'0.454545')"
|
||||
-1993339022 object/tangible/wearables/armor/tantel/armor_tantel_skreej_chest_plate_quest.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1564577478 "('crafting_components.layer14',2,'0.454545')"
|
||||
1855229351 object/tangible/wearables/armor/tantel/armor_tantel_skreej_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -361521797 "('crafting_components.layer14',2,'0.454545')"
|
||||
275564031 object/tangible/wearables/armor/tantel/armor_tantel_skreej_helmet_quest.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -361521797 "('crafting_components.layer14',2,'0.454545')"
|
||||
-247678631 object/tangible/wearables/armor/ubese/armor_ubese_bandolier.iff armor.effectiveness systems.crafting.armor.component.crafting_armor_nostats 1855746937
|
||||
1261688149 object/tangible/wearables/armor/ubese/armor_ubese_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 0 systems.crafting.armor.component.crafting_armor_nostats -2009182529
|
||||
-779152232 object/tangible/wearables/armor/ubese/armor_ubese_bracer_l.iff "item.armor.new_armor,item.conversion.armor_bracer_l_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.8,0.8:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1330065271 "('crafting_components.layer14',2,'0.454545')"
|
||||
-1587916533 object/tangible/wearables/armor/ubese/armor_ubese_bracer_r.iff "item.armor.new_armor,item.conversion.armor_bracer_r_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.8,0.8:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1066560230 "('crafting_components.layer14',2,'0.454545')"
|
||||
-1424733636 object/tangible/wearables/armor/ubese/armor_ubese_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 0 systems.crafting.armor.component.crafting_armor_nostats -163178884
|
||||
500476724 object/tangible/wearables/armor/ubese/armor_ubese_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.8,0.8:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1082586996 "('crafting_components.layer14',2,'0.454545')"
|
||||
-320086751 object/tangible/wearables/armor/ubese/armor_ubese_helmet_quest.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.8,0.8:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1082586996 "('crafting_components.layer14',2,'0.454545')"
|
||||
678412834 object/tangible/wearables/armor/ubese/armor_ubese_jacket.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.8,0.8:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1422504544 "('crafting_components.layer14',2,'0.454545')"
|
||||
1436153762 object/tangible/wearables/armor/ubese/armor_ubese_jacket_quest.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.8,0.8:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1422504544 "('crafting_components.layer14',2,'0.454545')"
|
||||
-177674793 object/tangible/wearables/armor/ubese/armor_ubese_pants.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.8,0.8:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1067191702 "('crafting_components.layer14',2,'0.454545')"
|
||||
-1886457751 object/tangible/wearables/armor/ubese/armor_ubese_pants_quest.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.8,0.8:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final 1067191702 "('crafting_components.layer14',2,'0.454545')"
|
||||
569575162 object/tangible/wearables/armor/ubese/armor_ubese_shirt.iff armor.effectiveness systems.crafting.armor.component.crafting_armor_nostats -486630128
|
||||
-392461625 object/tangible/wearables/armor/zam/armor_zam_wesell_belt.iff armor.effectiveness systems.crafting.armor.component.crafting_armor_nostats -2077797017
|
||||
-1500071681 object/tangible/wearables/armor/zam/armor_zam_wesell_boots.iff "item.armor.new_armor,item.conversion.armor_boots_conversion" armor.effectiveness 2 0 systems.crafting.armor.component.crafting_armor_nostats -2081929972
|
||||
-420003189 object/tangible/wearables/armor/zam/armor_zam_wesell_chest_plate.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1595914733 "('crafting_components.layer14',2,'0.454545')"
|
||||
309375847 object/tangible/wearables/armor/zam/armor_zam_wesell_chest_plate_quest.iff "item.armor.new_armor,item.conversion.armor_chest_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1595914733 "('crafting_components.layer14',2,'0.454545')"
|
||||
-98746218 object/tangible/wearables/armor/zam/armor_zam_wesell_gloves.iff "item.armor.new_armor,item.conversion.armor_gloves_conversion" armor.effectiveness 2 0 systems.crafting.armor.component.crafting_armor_nostats 184970781
|
||||
1289593246 object/tangible/wearables/armor/zam/armor_zam_wesell_helmet.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1111060715 "('crafting_components.layer14',2,'0.454545')"
|
||||
103036882 object/tangible/wearables/armor/zam/armor_zam_wesell_helmet_quest.iff "item.armor.new_armor,item.conversion.armor_helmet_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1111060715 "('crafting_components.layer14',2,'0.454545')"
|
||||
416123005 object/tangible/wearables/armor/zam/armor_zam_wesell_pants.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1657354457 "('crafting_components.layer14',2,'0.454545')"
|
||||
-469920034 object/tangible/wearables/armor/zam/armor_zam_wesell_pants_quest.iff "item.armor.new_armor,item.conversion.armor_leggings_conversion" "[0:50,50:80,80:90,90:100]" "[0.2:0.5,0.5:0.83,0.83:0.85,0.85:0.86]" 0.8 2 0 "('armor.layer14',2,'0.454545')" systems.crafting.armor.component.crafting_new_armor_final -1657354457 "('crafting_components.layer14',2,'0.454545')"
|
||||
-817576610 object/tangible/component/armor/shield_generator_personal.iff "item.armor.new_armor,item.armor.psg" 0.5 0 3 "('armor.layer13',2,'0.4444'):('armor.recharge_rate',2,'60')" systems.crafting.armor.crafting_psg "('crafting_components.layer13',2,'0.4444'):('crafting_components.recharge_rate',2,'60')"
|
||||
-38886533 object/tangible/component/armor/shield_generator_personal_b.iff "item.armor.new_armor,item.armor.psg" 0.5 1 3 "('armor.layer13',2,'0.54545'):('armor.recharge_rate',2,'60')" systems.crafting.armor.crafting_psg "('crafting_components.layer13',2,'0.54545'):('crafting_components.recharge_rate',2,'60')"
|
||||
-1264335626 object/tangible/component/armor/shield_generator_personal_c.iff "item.armor.new_armor,item.armor.psg" 0.5 2 3 "('armor.layer13',2,'0.759167'):('armor.recharge_rate',2,'60')" systems.crafting.armor.crafting_psg "('crafting_components.layer13',2,'0.759167'):('crafting_components.recharge_rate',2,'60')"
|
||||
2144735852 object/tangible/component/armor/shield_generator_personal_imperial_test.iff "item.armor.new_armor,item.armor.psg" 0.5 2 3 "('armor.layer13',2,'0.759167'):('armor.recharge_rate',2,'65')" systems.crafting.armor.crafting_psg "('crafting_components.layer13',2,'0.759167'):('crafting_components.recharge_rate',2,'65')"
|
||||
|
||||
|
||||
NOTES
|
||||
All armor objects will have these object variables removed in addition to those listed in the Objvar Remove column:
|
||||
"armor.rating,armor.vulnerability,armor.encumbrance,armor.special*,crafting_components.armor*"
|
||||
and will have the script item.armor.armor removed
|
||||
@@ -0,0 +1,141 @@
|
||||
Template ID Template Buff Name Effectiveness Objvar Effectiveness Duration Objvar Duration RemoveObjVar RemoveScript AddScript
|
||||
-980521968 object/tangible/food/crafted/dessert_air_cake.iff dessert_air_cake duration.eff 20 duration.dur 1200 "duration.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-306844601 object/tangible/food/crafted/dessert_almond_kwevvu_crisp_munchies.iff dessert_almond_kwevvu_crisp_munchies skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-2039935369 object/tangible/food/crafted/dessert_blob_candy.iff dessert_blob_candy 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-23647699 object/tangible/food/crafted/dessert_bofa_treat.iff dessert_bofa_treat 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1933405050 object/tangible/food/crafted/dessert_cavaellin_creams.iff dessert_cavaellin_creams delayed.eff 60 0.9 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1329737896 object/tangible/food/crafted/dessert_chandad.iff dessert_chandad skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
144581616 object/tangible/food/crafted/dessert_citros_snow_cake.iff dessert_citros_snow_cake duration.eff 20 duration.dur 1600 "duration.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1122191702 object/tangible/food/crafted/dessert_deneelian_fizz_pudding.iff dessert_deneelian_fizz_pudding duration.eff 40 duration.dur 120 "duration.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
22306368 object/tangible/food/crafted/dessert_dweezel.iff dessert_dweezel skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
281064494 object/tangible/food/crafted/dessert_gorrnar.iff dessert_gorrnar delayed.eff 15 0.9 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1320167407 object/tangible/food/crafted/dessert_kiwik_clusjo_swirl.iff dessert_kiwik_clusjo_swirl 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1061303036 object/tangible/food/crafted/dessert_parwan_nutricake.iff dessert_parwan_nutricake instant.v1 65 instant.v2 65 "instant.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
507210122 object/tangible/food/crafted/dessert_pikatta_pie.iff dessert_pikatta_pie duration.eff 25 duration.dur 1600 "duration.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-88500234 object/tangible/food/crafted/dessert_pkneb.iff dessert_pkneb skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1472463975 object/tangible/food/crafted/dessert_pyollian_cake.iff dessert_pyollian_cake delayed.eff 7 0.9 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
2080884324 object/tangible/food/crafted/dessert_smugglers_delight.iff dessert_smugglers_delight delayed.eff 40 0.9 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-2052487231 object/tangible/food/crafted/dessert_vagnerian_canape.iff dessert_vagnerian_canape 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-528877582 object/tangible/food/crafted/dessert_won_won.iff dessert_won_won 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-135648971 object/tangible/food/crafted/dish_ahrisa.iff dish_ahrisa 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
230572551 object/tangible/food/crafted/dish_bivoli_tempari.iff dish_bivoli_tempari skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1057167832 object/tangible/food/crafted/dish_blood_chowder.iff dish_blood_chowder duration.eff 15 duration.dur 2000 "duration.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
536694865 object/tangible/food/crafted/dish_cho_nor_hoola.iff dish_cho_nor_hoola duration.eff 15 duration.dur 2000 "duration.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
437634302 object/tangible/food/crafted/dish_crispic.iff dish_crispic duration.eff 15 duration.dur 900 "duration.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
2054517358 object/tangible/food/crafted/dish_dustcrepe.iff dish_dustcrepe instant.v1 15 0.9 "instant.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1337924041 object/tangible/food/crafted/dish_exo_protein_wafers.iff dish_exo_protein_wafers delayed.eff 15 delayed.dur 20 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1353161551 object/tangible/food/crafted/dish_gruuvan_shaal.iff dish_gruuvan_shaal 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-2137759113 object/tangible/food/crafted/dish_havla.iff dish_havla delayed.eff 50 delayed.dur 30 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
179201581 object/tangible/food/crafted/dish_kanali_wafers.iff dish_kanali_wafers 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-322799884 object/tangible/food/crafted/dish_karkan_ribenes.iff dish_karkan_ribenes instant.v1 75 0.9 "instant.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1599302627 object/tangible/food/crafted/dish_ormachek.iff dish_ormachek delayed.eff 5 delayed.dur 20 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1655466225 object/tangible/food/crafted/dish_rakririan_burnout_sauce.iff dish_rakririan_burnout_sauce skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
993643963 object/tangible/food/crafted/dish_rations.iff dish_rations instant.v1 25 instant.v3 25 "instant.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
428493251 object/tangible/food/crafted/dish_scrimpi.iff dish_scrimpi 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1834531933 object/tangible/food/crafted/dish_synthsteak.iff dish_synthsteak delayed.eff 25 delayed.dur 40 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1664157751 object/tangible/food/crafted/dish_teltier_noodles.iff dish_teltier_noodles 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1989431522 object/tangible/food/crafted/dish_terratta.iff dish_terratta skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-237557333 object/tangible/food/crafted/dish_thakitillo.iff dish_thakitillo skill_mod.amount 40 skill_mod.dur 900 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-400228634 object/tangible/food/crafted/dish_travel_biscuits.iff dish_travel_biscuits skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1550199637 object/tangible/food/crafted/dish_trimpian.iff dish_trimpian duration.eff 20 duration.dur 2000 "duration.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1129312673 object/tangible/food/crafted/dish_vegeparsine.iff dish_vegeparsine skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1602372839 object/tangible/food/crafted/dish_veghash.iff dish_veghash skill_mod.amount 15 skill_mod.dur 900 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
2036727535 object/tangible/food/crafted/dish_vercupti_of_agazza_boleruuee.iff dish_vercupti_of_agazza_boleruuee 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-2066158902 object/tangible/food/crafted/drink_accarragm.iff drink_accarragm 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1706352715 object/tangible/food/crafted/drink_aitha.iff drink_aitha mind_heal 150 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-821627577 object/tangible/food/crafted/drink_bespin_port.iff drink_bespin_port delayed.eff 5 0.9 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1731904862 object/tangible/food/crafted/drink_blue_milk.iff drink_blue_milk mind_heal 400 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1492257317 object/tangible/food/crafted/drink_breath_of_heaven.iff drink_breath_of_heaven 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1543376981 object/tangible/food/crafted/drink_caf.iff drink_caf 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-453063519 object/tangible/food/crafted/drink_corellian_ale.iff drink_corellian_ale skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1135348098 object/tangible/food/crafted/drink_corellian_brandy.iff drink_corellian_brandy skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-180524642 object/tangible/food/crafted/drink_deuterium_pyro.iff drink_deuterium_pyro skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1234286053 object/tangible/food/crafted/drink_durindfire.iff drink_durindfire skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-966588406 object/tangible/food/crafted/drink_elshandruu_pica_thundercloud.iff drink_elshandruu_pica_thundercloud skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
391653777 object/tangible/food/crafted/drink_flameout.iff drink_flameout delayed.eff 90 delayed.dur 5 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1833668435 object/tangible/food/crafted/drink_garrmorl.iff drink_garrmorl 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1632342596 object/tangible/food/crafted/drink_gralinyn_juice.iff drink_gralinyn_juice skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1468700561 object/tangible/food/crafted/drink_ithorian_mist.iff drink_ithorian_mist skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1186404816 object/tangible/food/crafted/drink_jaar.iff drink_jaar instant.v1 25 0.9 "instant.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1236344303 object/tangible/food/crafted/drink_jawa_beer.iff drink_jawa_beer skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
870515892 object/tangible/food/crafted/drink_mandalorian_wine.iff drink_mandalorian_wine 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-609603936 object/tangible/food/crafted/drink_ruby_bliel.iff drink_ruby_bliel delayed.eff 30 delayed.dur 20 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-108612773 object/tangible/food/crafted/drink_spiced_tea.iff drink_spiced_tea 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-723081254 object/tangible/food/crafted/drink_starshine_surprise.iff drink_starshine_surprise delayed.eff 30 0.9 "delayed.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1482529718 object/tangible/food/crafted/drink_tilla_tiil.iff drink_tilla_tiil instant.v1 15 0.9 "instant.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-702596630 object/tangible/food/crafted/drink_tssolok.iff drink_tssolok duration.eff 20 duration.dur 600 "duration.type,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-191532605 object/tangible/food/crafted/drink_vasarian_brandy.iff drink_vasarian_brandy 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1368313349 object/tangible/food/crafted/drink_vayerbok.iff drink_vayerbok skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1149904183 object/tangible/food/crafted/drink_veronian_berry_wine.iff drink_veronian_berry_wine skill_mod.amount 10 skill_mod.dur 1200 "skill_mod.name,consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-104858180 object/tangible/food/bread_loaf_full_s1.iff newbie_bread 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-785327274 object/tangible/food/crafted/additive/additive_heavy.iff
|
||||
275310472 object/tangible/food/crafted/additive/additive_light.iff
|
||||
1269715552 object/tangible/food/crafted/additive/additive_medium.iff
|
||||
-1288350953 object/tangible/food/crafted/dessert_bantha_butter.iff
|
||||
1901385280 object/tangible/food/crafted/dessert_blap_biscuit.iff dessert_blap_biscuit 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-519120500 object/tangible/food/crafted/dessert_corellian_fried_icecream.iff dessert_vagnerian_canape 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1030442907 object/tangible/food/crafted/dessert_felbar.iff dessert_felbar 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-272947641 object/tangible/food/crafted/dessert_glazed_glucose_pate.iff dessert_cavaellin_creams 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1239922273 object/tangible/food/crafted/dessert_nanana_twist.iff dessert_parwan_nutricake 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
920119228 object/tangible/food/crafted/dessert_pastebread.iff dessert_pastebread 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1460469297 object/tangible/food/crafted/dessert_puffcake.iff dessert_won_won 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1098635748 object/tangible/food/crafted/dessert_ryshcate.iff dessert_kiwik_clusjo_swirl 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1461830070 object/tangible/food/crafted/dessert_sweesonberry_rolls.iff dessert_sweesonberry_rolls 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1684725977 object/tangible/food/crafted/dessert_sweet_cake_mix.iff
|
||||
-1864503130 object/tangible/food/crafted/dessert_wedding_cake.iff dessert_pikatta_pie 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1801195805 object/tangible/food/crafted/dish_braised_canron.iff dish_rakririan_burnout_sauce 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-410420377 object/tangible/food/crafted/dish_fire_stew.iff dish_trimpian 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
877344239 object/tangible/food/crafted/dish_fried_endwa.iff dish_blood_chowder 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1434285776 object/tangible/food/crafted/dish_meatlump.iff dish_ahrisa 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
558263029 object/tangible/food/crafted/dish_patot_panak.iff dish_gruuvan_shaal 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-986522134 object/tangible/food/crafted/dish_protato.iff
|
||||
22531863 object/tangible/food/crafted/dish_puk.iff dish_karkan_ribenes 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1828317055 object/tangible/food/crafted/dish_ramorrean_capanata.iff dish_scrimpi 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
13953380 object/tangible/food/crafted/dish_soypro.iff
|
||||
-1670164093 object/tangible/food/crafted/dish_stewed_gwouch.iff dish_cho_nor_hoola 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
284923026 object/tangible/food/crafted/dish_wastril_bread.iff dish_synthsteak 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-250957874 object/tangible/food/crafted/dish_xermaauc.iff dish_vegeparsine 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
181145794 object/tangible/food/crafted/drink_alcohol.iff
|
||||
1454424858 object/tangible/food/crafted/drink_aludium_pu36.iff drink_flameout 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
51214754 object/tangible/food/crafted/drink_angerian_fishak_surprise.iff dish_vercupti_of_agazza_boleruuee 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
540146307 object/tangible/food/crafted/drink_antakarian_fire_dancer.iff drink_garrmorl 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-635575777 object/tangible/food/crafted/drink_bantha_blaster.iff drink_corellian_ale 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1166887647 object/tangible/food/crafted/drink_charde.iff drink_deuterium_pyro 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-23601230 object/tangible/food/crafted/drink_cortyg.iff drink_veronian_berry_wine 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1365202497 object/tangible/food/crafted/drink_double_dip_outer_rim_rumdrop.iff drink_elshandruu_pica_thundercloud 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1714967517 object/tangible/food/crafted/drink_ice_blaster.iff drink_vasarian_brandy 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
99972710 object/tangible/food/crafted/drink_kylessian_fruit_distillate.iff drink_breath_of_heaven 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1722035741 object/tangible/food/crafted/drink_skannbult_likker.iff drink_tilla_tiil 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-1746165408 object/tangible/food/crafted/drink_sullustan_gin.iff drink_mandalorian_wine 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
329225748 object/tangible/food/crafted/drink_tatooine_sunburn.iff drink_ithorian_mist 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
1301924307 object/tangible/food/foraged/edible_jar_berries.iff foraged_berries 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
-846740906 object/tangible/food/foraged/edible_jar_bugs.iff foraged_bugs 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
471067493 object/tangible/food/foraged/edible_jar_fungus.iff foraged_fungus 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
-1483553925 object/tangible/food/foraged/edible_jar_funk.iff foraged_funk 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
-1938284398 object/tangible/food/foraged/foraged_fruit_s1.iff foraged_fruit_1 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
1466927109 object/tangible/food/foraged/foraged_fruit_s2.iff foraged_fruit_2 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
509800328 object/tangible/food/foraged/foraged_fruit_s3.iff foraged_fruit_3 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
-444480356 object/tangible/food/foraged/foraged_fruit_s4.iff foraged_fruit_4 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
-1400069359 object/tangible/food/foraged/foraged_fruit_s5.iff foraged_fruit_5 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
-589619825 object/tangible/food/foraged/foraged_vegetable_s2.iff foraged_vegetable_2 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
-1781106174 object/tangible/food/foraged/foraged_vegetable_s3.iff foraged_vegetable_3 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
1848987926 object/tangible/food/foraged/foraged_vegetable_s4.iff foraged_vegetable_4 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
657995419 object/tangible/food/foraged/foraged_vegetable_s5.iff foraged_vegetable_5 0.98 0.9 "consumable.mods,food_type" item.comestible.foraged item.food
|
||||
1931602976 object/tangible/food/fruit_melon.iff newbie_melon 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
-679440489 object/tangible/food/meat_kabob.iff newbie_meat 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
2059421636 object/tangible/food/nectar.iff newbie_nectar 0.98 0.9 "consumable.mods,food_type" item.comestible.crafted item.food
|
||||
|
||||
RULES:
|
||||
"AddObjVar(buff_name, value)"
|
||||
If value in Effectiveness Objvar
|
||||
ModifyObjvar(old value/Effectiveness value and rename to effectiveness): Cap Value at 2.0: Set to 0.98 if missing
|
||||
Else
|
||||
" AddObjVar(effectiveness, value)"
|
||||
If value in Duration Objvar
|
||||
ModifyObjvar(old value/Duration value and rename to duration): Cap Value at 2.0: set to 0.9 if missing
|
||||
Else
|
||||
" AddObjVar(duration, value)"
|
||||
Remove all ObjVars in RemoveObjVar
|
||||
Remove all Scripts in RemoveScript
|
||||
Add script in AddScript
|
||||
Rename ObjVar consumable.stomachValues to filling
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,993 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
&main;
|
||||
|
||||
# ======================================================================
|
||||
|
||||
sub main
|
||||
{
|
||||
open(INFILE, "<item_conversion.sql.template");
|
||||
open(OUTFILE, ">item_conversion.sql");
|
||||
print "Generating item_conversion.sql\n";
|
||||
while ($line = <INFILE>)
|
||||
{
|
||||
print OUTFILE $line;
|
||||
if ($line eq "-- ****** BEGIN ARMOR CONVERSION RULES ******\n")
|
||||
{
|
||||
&DoArmorConversion;
|
||||
}
|
||||
if ($line eq "-- ****** BEGIN ARMOR COMPONENT CONVERSION RULES ******\n")
|
||||
{
|
||||
&DoArmorComponentConversion;
|
||||
}
|
||||
if ($line eq "-- ****** BEGIN WEAPON CONVERSION RULES ******\n")
|
||||
{
|
||||
&DoWeaponConversion;
|
||||
}
|
||||
if ($line eq "-- ****** BEGIN POWERUP CONVERSION RULES ******\n")
|
||||
{
|
||||
&DoPowerupConversion;
|
||||
}
|
||||
if ($line eq "-- ****** BEGIN SABER CONVERSION RULES ******\n")
|
||||
{
|
||||
&DoSaberConversion;
|
||||
}
|
||||
if ($line eq "-- ****** BEGIN FOOD CONVERSION RULES ******\n")
|
||||
{
|
||||
&DoFoodConversion;
|
||||
}
|
||||
if ($line eq "-- ****** BEGIN MEDICINE CONVERSION RULES ******\n")
|
||||
{
|
||||
&DoMedicineConversion;
|
||||
}
|
||||
if ($line eq "-- ****** BEGIN SPICE CONVERSION RULES ******\n")
|
||||
{
|
||||
&DoSpiceConversion;
|
||||
}
|
||||
if ($line eq "-- ****** BEGIN TEMPLATE ID SET ******\n")
|
||||
{
|
||||
&DoTemplateIdSet;
|
||||
}
|
||||
}
|
||||
close(OUTFILE);
|
||||
close(INFILE);
|
||||
}
|
||||
|
||||
sub DoArmorConversion
|
||||
{
|
||||
open(ARMOR, "armor_conversion.txt");
|
||||
$if = "if";
|
||||
<ARMOR>;
|
||||
while ($line = <ARMOR>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $script_add, $script_remove, $objvar_remove, $effective, $gen_protect,
|
||||
$cond, $level, $category, $add_objvar,
|
||||
$new_temp_id, $new_template, $craft_script, $schematic, $craft_objvar) =
|
||||
split /\t/, $line;
|
||||
|
||||
if ($temp_id ne "")
|
||||
{
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\t$if template_id = $temp_id then\n";
|
||||
$if = "elsif";
|
||||
print OUTFILE "\t\t\t\t\tif isSchematic = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\tInvalidateSchematic;\n";
|
||||
print OUTFILE "\t\t\t\t\telse\n";
|
||||
|
||||
if ($effective ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tSetGenProtection(rangeTableType(";
|
||||
@eff = (split /,/,$effective);
|
||||
@gnp = (split /,/,$gen_protect);
|
||||
for ($i=0; $i < @eff-1; $i++) {
|
||||
print OUTFILE "rangeType(".(split /:/,($eff[$i]))[0].",".(split /:/,($eff[$i]))[1].
|
||||
",".(split /:/,($gnp[$i]))[0].",".(split /:/,($gnp[$i]))[1]."),";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($eff[$i]))[0].",".(split /:/,($eff[$i]))[1].
|
||||
",".(split /:/,($gnp[$i]))[0].",".(split /:/,($gnp[$i]))[1]."))";
|
||||
print OUTFILE ");\n";
|
||||
}
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tDeleteOldArmorObjvars;\n";
|
||||
print OUTFILE "\t\t\t\t\t\tDeleteObjVar('$_');\n"
|
||||
foreach split /,/, $objvar_remove;
|
||||
|
||||
if (($cond ne "") && ($level ne "") && ($category ne "")) {
|
||||
print OUTFILE "\t\t\t\t\t\tSetArmorCondLevelCat('$cond','$level','$category');\n";
|
||||
}
|
||||
else {
|
||||
if ($cond ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar('armor.condition',2,'$cond');\n";
|
||||
}
|
||||
if ($level ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tSetArmorLevel('$level');\n";
|
||||
}
|
||||
if ($category ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tSetArmorCategory('$category');\n";
|
||||
}
|
||||
}
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tRemoveScript('$_');\n"
|
||||
foreach split /,/, $script_remove;
|
||||
|
||||
if ($craft_script ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tif isFactory = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tAddObjVar$_;\n"
|
||||
foreach split /:/, $craft_objvar;
|
||||
|
||||
if ($schematic ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\t\tModifyObjVar('draftSchematic','draftSchematic',0,$schematic);\n";
|
||||
}
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\t\tAddScript('$_');\n"
|
||||
foreach split /,/, $craft_script;
|
||||
|
||||
|
||||
if (($new_temp_id ne "") || ($add_objvar ne "") || ($script_remove ne "") || ($script_add ne "")) {
|
||||
print OUTFILE "\t\t\t\t\t\telse\n";
|
||||
|
||||
if ($new_temp_id ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tSetNewTemplateId($new_temp_id);\t\t--$new_template\n";
|
||||
}
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\t\tAddObjVar$_;\n"
|
||||
foreach split /:/, $add_objvar;
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\t\tAddScript('$_');\n"
|
||||
foreach split /,/, $script_add;
|
||||
}
|
||||
print OUTFILE "\t\t\t\t\t\tend if;\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($new_temp_id ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetNewTemplateId($new_temp_id);\t\t--$new_template\n";
|
||||
}
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar$_;\n"
|
||||
foreach split /:/, $add_objvar;
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tAddScript('$_');\n"
|
||||
foreach split /,/, $script_add;
|
||||
}
|
||||
print OUTFILE "\t\t\t\t\tend if;\n";
|
||||
}
|
||||
}
|
||||
close(ARMOR);
|
||||
}
|
||||
|
||||
sub DoArmorComponentConversion
|
||||
{
|
||||
open(COMPONENT, "armor_component_conversion.txt");
|
||||
<COMPONENT>;
|
||||
while ($line = <COMPONENT>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $new_template, $new_temp_id, $script_remove, $script_add,
|
||||
$objvar_remove, $gen_protect, $cond, $layer_value, $attrib_bonus, $crate_script, $schematic) =
|
||||
split /\t/, $line;
|
||||
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\telsif template_id = $temp_id then\n";
|
||||
$if = "elsif";
|
||||
print OUTFILE "\t\t\t\t\tif isSchematic = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\tInvalidateSchematic;\n";
|
||||
print OUTFILE "\t\t\t\t\telse\n";
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tDeleteObjVar(prefix || '$_');\n"
|
||||
foreach split /,/, $objvar_remove;
|
||||
|
||||
if (($gen_protect ne "") && ($cond ne "")) {
|
||||
print OUTFILE "\t\t\t\t\t\tSetGpAndCond(prefix || 'general_protection', '$gen_protect', prefix || 'condition', '$cond');\n";
|
||||
}
|
||||
else {
|
||||
if ($gen_protect ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar(prefix || 'general_protection',2,'$gen_protect');\n";
|
||||
}
|
||||
if ($cond ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar(prefix || 'condition',2,'$cond');\n";
|
||||
}
|
||||
}
|
||||
if ($layer_value ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar(prefix || 'armor_layer".(split /,/,$layer_value)[0]."',2,'".(split /,/,$layer_value)[1]."');\n";
|
||||
}
|
||||
|
||||
if (($schematic ne "") || ($crate_script ne "")) {
|
||||
print OUTFILE "\t\t\t\t\t\tif isFactory = TRUE then\n";
|
||||
|
||||
if ($schematic ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\t\tModifyObjVar('draftSchematic','draftSchematic',0,$schematic);\n";
|
||||
}
|
||||
|
||||
if ($crate_script ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\t\tscript_list := '$crate_script' || ':';\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tisObjModified := TRUE;\n";
|
||||
}
|
||||
;
|
||||
if (($new_temp_id ne "") || ($attrib_bonus ne "") || ($script_remove ne "") || ($script_add ne "")) {
|
||||
print OUTFILE "\t\t\t\t\t\telse\n";
|
||||
if ($new_temp_id ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\t\tSetNewTemplateId($new_temp_id);\t\t--$new_template\n";
|
||||
}
|
||||
print OUTFILE "\t\t\t\t\t\t\tAddObjVar('attribute.bonus.".(split /:/,$_)[0]."',2,'".(split /:/,$_)[1]."');\n"
|
||||
foreach split /,/, $attrib_bonus;
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\t\tRemoveScript('$_');\n"
|
||||
foreach split /,/, $script_remove;
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\t\tAddScript('$_');\n"
|
||||
foreach split /,/, $script_add;
|
||||
|
||||
}
|
||||
print OUTFILE "\t\t\t\t\t\tend if;\n";
|
||||
}
|
||||
else {
|
||||
if (($new_temp_id ne "") || ($attrib_bonus ne "") || ($script_remove ne "") || ($script_add ne "")) {
|
||||
if ($new_temp_id ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tSetNewTemplateId($new_temp_id);\t\t--$new_template\n";
|
||||
}
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar('attribute.bonus.".(split /:/,$_)[0]."',2,'".(split /:/,$_)[1]."');\n"
|
||||
foreach split /,/, $attrib_bonus;
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tRemoveScript('$_');\n"
|
||||
foreach split /,/, $script_remove;
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tAddScript('$_');\n"
|
||||
foreach split /,/, $script_add;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
print OUTFILE "\t\t\t\t\tend if;\n";
|
||||
}
|
||||
close(COMPONENT);
|
||||
}
|
||||
|
||||
sub DoWeaponConversion
|
||||
{
|
||||
open(WEAPON, "weapon_conversion.txt");
|
||||
<WEAPON>;
|
||||
while ($line = <WEAPON>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $min_dmg_from, $min_dmg_to, $max_dmg_from, $max_dmg_to,
|
||||
$speed_from, $speed_to, $wound_from, $wound_to,
|
||||
$attack_cost, $accuracy,
|
||||
$min_range_to, $max_range_to,
|
||||
$damage_type, $ele_type, $ele_value, $add_objvar) =
|
||||
split /\t/, $line;
|
||||
|
||||
if ($temp_id ne "") {
|
||||
if ($line =~ m/component/)
|
||||
{
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\telsif template_id = $temp_id then\n";
|
||||
|
||||
if (($min_dmg_from ne "") && ($min_dmg_to ne "")){
|
||||
print OUTFILE "\t\t\t\t\tModifyObjVar(prefix || 'minDamage',prefix || 'minDamage',2,";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$min_dmg_from);
|
||||
@t = (split /,/,$min_dmg_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."))";
|
||||
print OUTFILE ");\n";
|
||||
}
|
||||
if (($max_dmg_from ne "") && ($max_dmg_to ne "")){
|
||||
print OUTFILE "\t\t\t\t\tModifyObjVar(prefix || 'maxDamage',prefix || 'maxDamage',2,";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$max_dmg_from);
|
||||
@t = (split /,/,$max_dmg_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."))";
|
||||
print OUTFILE ");\n";
|
||||
}
|
||||
if ($speed_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tModifyObjVar(prefix || 'attackSpeed',prefix || 'attackSpeed',2,";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$speed_from);
|
||||
@t = (split /,/,$speed_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."))";
|
||||
print OUTFILE ");\n";
|
||||
}
|
||||
if ($wound_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tModifyObjVar(prefix || 'woundChance',prefix || 'woundChance',2,";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$wound_from);
|
||||
@t = (split /,/,$wound_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."))";
|
||||
print OUTFILE ");\n";
|
||||
}
|
||||
if (($attack_cost ne "") && ($accuracy ne "") && ($min_range_to ne "") && ($max_range_to ne "") &&($damage_type ne "")) {
|
||||
print OUTFILE "\t\t\t\t\tSetWeaponBaseStats($attack_cost,$accuracy,$min_range_to,$max_range_to,$damage_type);\n";
|
||||
}
|
||||
else {
|
||||
if ($attack_cost ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetAttackCost($attack_cost);\n";
|
||||
}
|
||||
if ($accuracy ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetAccuracy($accuracy);\n";
|
||||
}
|
||||
if ($min_range_to ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetMinRange($min_range_to);\n";
|
||||
}
|
||||
if ($max_range_to ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetMaxRange($max_range_to);\n";
|
||||
}
|
||||
if ($damage_type ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetDamageType($damage_type);\n";
|
||||
}
|
||||
}
|
||||
if ($ele_type ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetElementalType($ele_type);\n";
|
||||
}
|
||||
if ($ele_value ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetElementalValue($ele_value);\n";
|
||||
}
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar$_;\n"
|
||||
foreach split /:/, $add_objvar;
|
||||
|
||||
print OUTFILE "\t\t\t\t\tif isSchematic = TRUE or isFactory = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\tDeleteCraftingComponents;\n";
|
||||
print OUTFILE "\t\t\t\t\tend if;\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\telsif template_id = $temp_id then\n";
|
||||
print OUTFILE "\t\t\t\t\tHandleWeaponDots;\n";
|
||||
|
||||
if ($min_dmg_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tConvertMinDamage(";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$min_dmg_from);
|
||||
@t = (split /,/,$min_dmg_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
}
|
||||
if ($max_dmg_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tConvertMaxDamage(";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$max_dmg_from);
|
||||
@t = (split /,/,$max_dmg_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
}
|
||||
if ($speed_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tConvertAttackSpeed(";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$speed_from);
|
||||
@t = (split /,/,$speed_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".((split /:/,($f[$i]))[0]*10).",".((split /:/,($f[$i]))[1]*10).
|
||||
",".((split /:/,($t[$i]))[0]*100).",".((split /:/,($t[$i]))[1]*100)."),";
|
||||
}
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".((split /:/,($f[$i]))[0]*10).",".((split /:/,($f[$i]))[1]*10).
|
||||
",".((split /:/,($t[$i]))[0]*100).",".((split /:/,($t[$i]))[1]*100).")));\n";
|
||||
}
|
||||
if ($wound_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tConvertWoundChance(";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$wound_from);
|
||||
@t = (split /,/,$wound_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
if ( ((split /:/,($t[$i]))[0]) > ((split /:/,($t[$i]))[1]) ) {
|
||||
print OUTFILE "\nCONVERSION DATA ERROR!!\n";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
}
|
||||
|
||||
if (($attack_cost ne "") && ($accuracy ne "") && ($min_range_to ne "") && ($max_range_to ne "") &&($damage_type ne "")) {
|
||||
print OUTFILE "\t\t\t\t\tSetWeaponBaseStats($attack_cost,$accuracy,$min_range_to,$max_range_to,$damage_type);\n";
|
||||
}
|
||||
else {
|
||||
if ($attack_cost ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetAttackCost($attack_cost);\n";
|
||||
}
|
||||
if ($accuracy ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetAccuracy($accuracy);\n";
|
||||
}
|
||||
if ($min_range_to ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetMinRange($min_range_to);\n";
|
||||
}
|
||||
if ($max_range_to ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetMaxRange($max_range_to);\n";
|
||||
}
|
||||
if ($damage_type ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetDamageType($damage_type);\n";
|
||||
}
|
||||
}
|
||||
if ($ele_type ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetElementalType($ele_type);\n";
|
||||
}
|
||||
if ($ele_value ne "") {
|
||||
print OUTFILE "\t\t\t\t\tSetElementalValue($ele_value);\n";
|
||||
}
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar$_;\n"
|
||||
foreach split /:/, $add_objvar;
|
||||
|
||||
if ($temp_id == -1930572145) {
|
||||
print OUTFILE "\t\t\t\t\tif isSchematic = TRUE or isFactory = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\tDeleteCraftingComponents;\n";
|
||||
print OUTFILE "\t\t\t\t\t\tif isSchematic = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tDeleteObjVar('crafting_attributes.crafting:*');\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tnew_schematic_id := -847903116;\n";
|
||||
print OUTFILE "\t\t\t\t\t\telse\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tModifyObjVar('draftSchematic','draftSchematic',0,-847903116);\n";
|
||||
print OUTFILE "\t\t\t\t\t\tend if;\n";
|
||||
print OUTFILE "\t\t\t\t\t\tSetTemplateText(-1631144444);\n";
|
||||
print OUTFILE "\t\t\t\t\telse\n";
|
||||
print OUTFILE "\t\t\t\t\t\tSetNewTemplateId(-1631144444); --convert to heavy bowcaster\n";
|
||||
print OUTFILE "\t\t\t\t\t\tAddScript('systems.combat.combat_weapon');\n";
|
||||
print OUTFILE "\t\t\t\t\tend if;\n";
|
||||
}
|
||||
elsif ($temp_id == -2138350593) {
|
||||
print OUTFILE "\t\t\t\t\tif isSchematic = TRUE or isFactory = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\tDeleteCraftingComponents;\n";
|
||||
print OUTFILE "\t\t\t\t\t\tif isSchematic = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tDeleteObjVar('crafting_attributes.crafting:*');\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tnew_schematic_id := -1108671633;\n";
|
||||
print OUTFILE "\t\t\t\t\t\telse\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tModifyObjVar('draftSchematic','draftSchematic',0,-1108671633);\n";
|
||||
print OUTFILE "\t\t\t\t\t\tend if;\n";
|
||||
print OUTFILE "\t\t\t\t\t\tSetTemplateText(-746051337);\n";
|
||||
print OUTFILE "\t\t\t\t\telse\n";
|
||||
print OUTFILE "\t\t\t\t\t\tSetNewTemplateId(-746051337); --convert to E11 Mark II\n";
|
||||
print OUTFILE "\t\t\t\t\t\tAddScript('systems.combat.combat_weapon');\n";
|
||||
print OUTFILE "\t\t\t\t\tend if;\n";
|
||||
}
|
||||
else {
|
||||
print OUTFILE "\t\t\t\t\tif isSchematic = TRUE or isFactory = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\tDeleteCraftingComponents;\n";
|
||||
print OUTFILE "\t\t\t\t\t\tif isSchematic = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tDeleteObjVar('crafting_attributes.crafting:*');\n";
|
||||
print OUTFILE "\t\t\t\t\t\tend if;\n";
|
||||
print OUTFILE "\t\t\t\t\telse\n";
|
||||
print OUTFILE "\t\t\t\t\t\tAddScript('systems.combat.combat_weapon');\n";
|
||||
print OUTFILE "\t\t\t\t\tend if;\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
close(WEAPON);
|
||||
}
|
||||
|
||||
sub DoPowerupConversion
|
||||
{
|
||||
open(POWERUP, "powerup_conversion.txt");
|
||||
<POWERUP>;
|
||||
while ($line = <POWERUP>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $conversion) =
|
||||
split /\t/, $line;
|
||||
if ($conversion ne "")
|
||||
{
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\telsif template_id = $temp_id then\n";
|
||||
print OUTFILE "\t\t\t\t\t$conversion;\n";
|
||||
}
|
||||
}
|
||||
close(POWERUP);
|
||||
}
|
||||
|
||||
sub DoSaberConversion
|
||||
{
|
||||
open(SABER, "saber_conversion.txt");
|
||||
<SABER>;
|
||||
while ($line = <SABER>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $min_dmg_from, $min_dmg_to, $max_dmg_from, $max_dmg_to,
|
||||
$speed_from, $speed_to, $wound_from, $wound_to,
|
||||
$attack_cost, $accuracy,
|
||||
$min_range_to, $max_range_to,
|
||||
$damage_type, $ele_type, $ele_value, $force) =
|
||||
split /\t/, $line;
|
||||
|
||||
if ($line =~ m/object\/tangible\/component/)
|
||||
{
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\telsif template_id = $temp_id then\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.crystal.stats.mid_rng');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.crystal.stats.zero_mod');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.crystal.stats.min_mod');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.crystal.stats.mid_mod');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.crystal.stats.max_mod');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.crystal.stats.action');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.crystal.stats.health');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.crystal.stats.mind');\n";
|
||||
|
||||
print OUTFILE "\t\t\t\t\tif not(slot_map.exists('jedi.crystal.stats.color')) and slot_map.exists('jedi.crystal.owner.name') then\n";
|
||||
|
||||
if ($min_dmg_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tn := ConvertValue(to_number(nvl(GetObjVarValue('jedi.crystal.stats.min_dmg'),0)),";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$min_dmg_from);
|
||||
@t = (split /,/,$min_dmg_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.min_dmg', 0, n);\n";
|
||||
}
|
||||
|
||||
if ($max_dmg_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tn := ConvertValue(to_number(nvl(GetObjVarValue('jedi.crystal.stats.max_dmg'),0)),";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$max_dmg_from);
|
||||
@t = (split /,/,$max_dmg_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.max_dmg', 0, n);\n";
|
||||
}
|
||||
|
||||
if ($speed_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tn := ConvertValue(to_number(nvl(GetObjVarValue('jedi.crystal.stats.speed'),100)),";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$speed_from);
|
||||
@t = (split /,/,$speed_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.speed', 2, n);\n";
|
||||
}
|
||||
|
||||
if ($wound_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tn := ConvertValue(to_number(nvl(GetObjVarValue('jedi.crystal.stats.wound'),0)),";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$wound_from);
|
||||
@t = (split /,/,$wound_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.wound', 2, n);\n";
|
||||
}
|
||||
|
||||
if ($attack_cost ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.attack_cost', 2, $attack_cost);\n";
|
||||
}
|
||||
if ($force ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.force', 2, $force);\n";
|
||||
}
|
||||
if ($accuracy ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.accuracy', 2, $accuracy);\n";
|
||||
}
|
||||
if ($min_range_to ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.min_rng', 2, $min_range_to);\n";
|
||||
}
|
||||
if ($max_range_to ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.max_rng', 2, $max_range_to);\n";
|
||||
}
|
||||
if ($damage_type ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.damage_type', 0, $damage_type);\n";
|
||||
}
|
||||
if ($ele_type ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.elemental_type', 0, $ele_type);\n";
|
||||
}
|
||||
if ($ele_value ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar ('jedi.crystal.stats.elemental_value', 0, $ele_value);\n";
|
||||
}
|
||||
print OUTFILE "\t\t\t\t\tend if;\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\telsif template_id = $temp_id then\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.saber.base_stats.mid_rng');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.saber.base_stats.zero_mod');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.saber.base_stats.min_mod');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.saber.base_stats.mid_mod');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.saber.base_stats.max_mod');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.saber.base_stats.action');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.saber.base_stats.health');\n";
|
||||
print OUTFILE "\t\t\t\t\tDeleteObjVar('jedi.saber.base_stats.mind');\n";
|
||||
|
||||
if ($min_dmg_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tn := ConvertValue(to_number(nvl(GetObjVarValue('jedi.saber.base_stats.min_dmg'),0)),";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$min_dmg_from);
|
||||
@t = (split /,/,$min_dmg_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.min_dmg', 0, n);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.min_damage := n;\n";
|
||||
}
|
||||
|
||||
if ($max_dmg_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tn := ConvertValue(to_number(nvl(GetObjVarValue('jedi.saber.base_stats.max_dmg'),0)),";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$max_dmg_from);
|
||||
@t = (split /,/,$max_dmg_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.max_dmg', 0, n);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.max_damage := n;\n";
|
||||
}
|
||||
|
||||
if ($speed_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tn := ConvertValue(to_number(nvl(GetObjVarValue('jedi.saber.base_stats.speed'),100)),";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$speed_from);
|
||||
@t = (split /,/,$speed_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.speed', 2, n);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.attack_speed := n;\n";
|
||||
}
|
||||
|
||||
if ($wound_from ne "") {
|
||||
print OUTFILE "\t\t\t\t\tn := ConvertValue(to_number(nvl(GetObjVarValue('jedi.saber.base_stats.wound'),0)),";
|
||||
print OUTFILE "rangeTableType(";
|
||||
@f = (split /,/,$wound_from);
|
||||
@t = (split /,/,$wound_to);
|
||||
for ($i=0; $i < @f-1; $i++) {
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1]."),";
|
||||
}
|
||||
print OUTFILE "rangeType(".(split /:/,($f[$i]))[0].",".(split /:/,($f[$i]))[1].
|
||||
",".(split /:/,($t[$i]))[0].",".(split /:/,($t[$i]))[1].")));\n";
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.wound', 2, n);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.wound_chance := n;\n";
|
||||
}
|
||||
|
||||
if ($attack_cost ne "") {
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.attack_cost', 2, $attack_cost);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.attack_cost := $attack_cost;\n";
|
||||
}
|
||||
if ($force ne "") {
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.force', 2, $force);\n";
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.force', 2, $force);\n";
|
||||
}
|
||||
if ($accuracy ne "") {
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.accuracy', 2, $accuracy);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.accuracy := $accuracy;\n";
|
||||
}
|
||||
if ($min_range_to ne "") {
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.min_rng', 2, $min_range_to);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.min_range := $min_range_to;\n";
|
||||
}
|
||||
if ($max_range_to ne "") {
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.max_rng', 2, $max_range_to);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.max_range := $max_range_to;\n";
|
||||
}
|
||||
if ($damage_type ne "") {
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.damage_type', 0, $damage_type);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.damage_type := $damage_type;\n";
|
||||
}
|
||||
if ($ele_type ne "") {
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.elemental_type', 0, $ele_type);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.elemental_type := $ele_type;\n";
|
||||
}
|
||||
if ($ele_value ne "") {
|
||||
print OUTFILE "\t\t\t\t\tAddObjVar ('jedi.saber.base_stats.elemental_value', 0, $ele_value);\n";
|
||||
print OUTFILE "\t\t\t\t\tweapon_attribs.elemental_value := $ele_value;\n";
|
||||
}
|
||||
print OUTFILE "\t\t\t\t\tAddScript('systems.combat.combat_weapon');\n";
|
||||
|
||||
}
|
||||
}
|
||||
close(SABER);
|
||||
}
|
||||
|
||||
sub DoFoodConversion
|
||||
{
|
||||
open(FOOD, "food_conversion.txt");
|
||||
<FOOD>;
|
||||
while ($line = <FOOD>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $buff_name, $eff_objvar, $effectiveness, $dur_objvar, $duration,
|
||||
$objvar_remove, $script_remove, $script_add) =
|
||||
split /\t/, $line;
|
||||
if ($effectiveness ne "")
|
||||
{
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\telsif template_id = $temp_id then\n";
|
||||
print OUTFILE "\t\t\t\t\tif isSchematic = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\tHandleFoodSchematic;\n";
|
||||
print OUTFILE "\t\t\t\t\telsif isFactory = TRUE then\n";
|
||||
print OUTFILE "\t\t\t\t\t\tHandleFoodCrate;\n";
|
||||
print OUTFILE "\t\t\t\t\telse\n";
|
||||
|
||||
if ($buff_name ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar('buff_name',4,'$buff_name');\n";
|
||||
}
|
||||
|
||||
if ($eff_objvar ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tif slot_map.exists('$eff_objvar') then\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tModifyObjVar('$eff_objvar','effectiveness',2,rangeTableType(rangeType(0,".($effectiveness*2).",0.0,2.0)));\n";
|
||||
print OUTFILE "\t\t\t\t\t\telse\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tAddObjVar('effectiveness',2,'0.98');\n";
|
||||
print OUTFILE "\t\t\t\t\t\tend if;\n";
|
||||
}
|
||||
elsif ($effectiveness ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar('effectiveness',2,'$effectiveness');\n";
|
||||
}
|
||||
|
||||
if ($dur_objvar ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tif slot_map.exists('$dur_objvar') then\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tModifyObjVar('$dur_objvar','duration',2,rangeTableType(rangeType(0,".($duration*2).",0.0,2.0)));\n";
|
||||
print OUTFILE "\t\t\t\t\t\telse\n";
|
||||
print OUTFILE "\t\t\t\t\t\t\tAddObjVar('duration',2,'0.9');\n";
|
||||
print OUTFILE "\t\t\t\t\t\tend if;\n";
|
||||
}
|
||||
elsif ($duration ne "") {
|
||||
print OUTFILE "\t\t\t\t\t\tAddObjVar('duration',2,'$duration');\n";
|
||||
}
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tDeleteObjVar('$_');\n"
|
||||
foreach split /,/, $objvar_remove;
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tRemoveScript('$_');\n"
|
||||
foreach split /,/, $script_remove;
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tAddScript('$_');\n"
|
||||
foreach split /,/, $script_add;
|
||||
|
||||
print OUTFILE "\t\t\t\t\t\tRenameObjVar('consumable.stomachValues','filling');\n";
|
||||
print OUTFILE "\t\t\t\t\tend if;\n";
|
||||
}
|
||||
}
|
||||
close(FOOD);
|
||||
}
|
||||
|
||||
sub DoMedicineConversion
|
||||
{
|
||||
open(MEDS, "medicine_conversion.txt");
|
||||
<MEDS>;
|
||||
while ($line = <MEDS>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $stim_pack) =
|
||||
split /\t/, $line;
|
||||
if ($stim_pack ne "")
|
||||
{
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\telsif template_id = $temp_id then\n";
|
||||
print OUTFILE "\t\t\t\t\t$stim_pack;\n";
|
||||
}
|
||||
}
|
||||
close(MEDS);
|
||||
}
|
||||
|
||||
sub DoSpiceConversion
|
||||
{
|
||||
open(SPICE, "spice_conversion.txt");
|
||||
<SPICE>;
|
||||
while ($line = <SPICE>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $spice_name) =
|
||||
split /\t/, $line;
|
||||
if ($spice_name ne "")
|
||||
{
|
||||
print OUTFILE "\t\t\t\t--$template\n";
|
||||
print OUTFILE "\t\t\t\telsif template_id = $temp_id then\n";
|
||||
print OUTFILE "\t\t\t\t\tConvertSpice('$spice_name');\n";
|
||||
}
|
||||
}
|
||||
close(SPICE);
|
||||
}
|
||||
|
||||
sub DoTemplateIdSet
|
||||
{
|
||||
open(ARMOR, "armor_conversion.txt");
|
||||
<ARMOR>;
|
||||
while ($line = <ARMOR>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $script_add, $objvar_remove, $effective, $gen_protect,
|
||||
$encumb, $encumb_split, $cond, $level, $category, $special, $layer) =
|
||||
split /\t/, $line;
|
||||
if ($temp_id ne "")
|
||||
{
|
||||
print OUTFILE "\t\ttemplateIdSet($temp_id) := $temp_id;\n";
|
||||
}
|
||||
}
|
||||
close(ARMOR);
|
||||
|
||||
open(COMPONENT, "armor_component_conversion.txt");
|
||||
<COMPONENT>;
|
||||
while ($line = <COMPONENT>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $new_template, $new_temp_id, $script_remove, $script_add,
|
||||
$objvar_remove, $gen_protect, $encumb, $cond, $layer_value, $attrib_bonus, $cnt) =
|
||||
split /\t/, $line;
|
||||
if ($temp_id ne "")
|
||||
{
|
||||
print OUTFILE "\t\ttemplateIdSet($temp_id) := $temp_id;\n";
|
||||
}
|
||||
}
|
||||
close(COMPONENT);
|
||||
|
||||
open(WEAPON, "weapon_conversion.txt");
|
||||
<WEAPON>;
|
||||
while ($line = <WEAPON>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $min_dmg_from, $min_dmg_to, $max_dmg_from, $max_dmg_to,
|
||||
$speed_from, $speed_to, $wound_from, $wound_to,
|
||||
$attack_cost, $accuracy,
|
||||
$min_range_to, $max_range_to,
|
||||
$damage_type, $ele_type, $ele_value) =
|
||||
split /\t/, $line;
|
||||
|
||||
if ($temp_id ne "")
|
||||
{
|
||||
print OUTFILE "\t\ttemplateIdSet($temp_id) := $temp_id;\n";
|
||||
}
|
||||
}
|
||||
close(WEAPON);
|
||||
|
||||
open(POWERUP, "powerup_conversion.txt");
|
||||
<POWERUP>;
|
||||
while ($line = <POWERUP>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $conversion) =
|
||||
split /\t/, $line;
|
||||
if ($conversion ne "")
|
||||
{
|
||||
print OUTFILE "\t\ttemplateIdSet($temp_id) := $temp_id;\n";
|
||||
}
|
||||
}
|
||||
close(POWERUP);
|
||||
|
||||
open(SABER, "saber_conversion.txt");
|
||||
<SABER>;
|
||||
while ($line = <SABER>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $min_dmg_from, $min_dmg_to, $max_dmg_from, $max_dmg_to,
|
||||
$speed_from, $speed_to, $wound_from, $wound_to,
|
||||
$attack_cost, $accuracy,
|
||||
$min_range_to, $max_range_to,
|
||||
$damage_type, $ele_type, $ele_value, $force) =
|
||||
split /\t/, $line;
|
||||
print OUTFILE "\t\ttemplateIdSet($temp_id) := $temp_id;\n";
|
||||
}
|
||||
close(SABER);
|
||||
|
||||
open(FOOD, "food_conversion.txt");
|
||||
<FOOD>;
|
||||
while ($line = <FOOD>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $buff_name, $eff_objvar, $effectiveness, $dur_objvar, $duration,
|
||||
$objvar_remove, $script_remove, $script_add) =
|
||||
split /\t/, $line;
|
||||
if ($effectiveness ne "")
|
||||
{
|
||||
print OUTFILE "\t\ttemplateIdSet($temp_id) := $temp_id;\n";
|
||||
}
|
||||
}
|
||||
close(FOOD);
|
||||
|
||||
open(MEDS, "medicine_conversion.txt");
|
||||
<MEDS>;
|
||||
while ($line = <MEDS>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $stim_pack) =
|
||||
split /\t/, $line;
|
||||
if ($stim_pack ne "")
|
||||
{
|
||||
print OUTFILE "\t\ttemplateIdSet($temp_id) := $temp_id;\n";
|
||||
}
|
||||
}
|
||||
close(MEDS);
|
||||
|
||||
open(SPICE, "spice_conversion.txt");
|
||||
<SPICE>;
|
||||
while ($line = <SPICE>)
|
||||
{
|
||||
$line =~ s/\"|\n|\[|\]//g;
|
||||
($temp_id, $template, $spice_name) =
|
||||
split /\t/, $line;
|
||||
if ($spice_name ne "")
|
||||
{
|
||||
print OUTFILE "\t\ttemplateIdSet($temp_id) := $temp_id;\n";
|
||||
}
|
||||
}
|
||||
close(SPICE);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,262 @@
|
||||
Template ID Template Stimpack Enhancer
|
||||
-737833670 object/tangible/component/chemistry/quest_stimpack_a.iff "ConvertToStimpack(1910273415,100,1)"
|
||||
-893992793 object/tangible/medicine/antidote_sm_s1.iff "ConvertToStimpack(1910273415,100,1)"
|
||||
828084809 object/tangible/medicine/bag/doctor_bag.iff
|
||||
2009443578 object/tangible/medicine/bag/shared_doctor_bag.iff
|
||||
-2006511693 object/tangible/medicine/base/base_enhancer.iff
|
||||
2083634351 object/tangible/medicine/base/base_medicine.iff
|
||||
1101650908 object/tangible/medicine/base/base_stimpack.iff
|
||||
-1326529820 object/tangible/medicine/base/base_stimpack_pet.iff
|
||||
-1107035087 object/tangible/medicine/crafted/crafted_medpack_blinded_a.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
1695831206 object/tangible/medicine/crafted/crafted_medpack_blinded_b.iff "ConvertToEnhancer(-102559156,'stabilizers',500)"
|
||||
-1266575809 object/tangible/medicine/crafted/crafted_medpack_damage_a.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1872117416 object/tangible/medicine/crafted/crafted_medpack_damage_b.iff "ConvertToEnhancer(392779336,'bactaToss',300)"
|
||||
647715109 object/tangible/medicine/crafted/crafted_medpack_damage_c.iff "ConvertToEnhancer(1389874386,'bactaJab',500)"
|
||||
-579309007 object/tangible/medicine/crafted/crafted_medpack_damage_d.iff "ConvertToEnhancer(1389874386,'bactaJab',700)"
|
||||
-1804266052 object/tangible/medicine/crafted/crafted_medpack_damage_e.iff "ConvertToEnhancer(1389874386,'bactaJab',900)"
|
||||
527556965 object/tangible/medicine/crafted/crafted_medpack_dizzy_a.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
-999929358 object/tangible/medicine/crafted/crafted_medpack_dizzy_b.iff "ConvertToEnhancer(-102559156,'stabilizers',500)"
|
||||
2005513882 object/tangible/medicine/crafted/crafted_medpack_enhance_action_a.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
-1398923763 object/tangible/medicine/crafted/crafted_medpack_enhance_action_b.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',400)"
|
||||
-443319936 object/tangible/medicine/crafted/crafted_medpack_enhance_action_c.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',600)"
|
||||
510677652 object/tangible/medicine/crafted/crafted_medpack_enhance_action_d.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',800)"
|
||||
1045341716 object/tangible/medicine/crafted/crafted_medpack_enhance_action_triad_a.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
-447148413 object/tangible/medicine/crafted/crafted_medpack_enhance_action_triad_b.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',400)"
|
||||
-1403754226 object/tangible/medicine/crafted/crafted_medpack_enhance_action_triad_c.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',600)"
|
||||
1471627802 object/tangible/medicine/crafted/crafted_medpack_enhance_action_triad_d.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',800)"
|
||||
2049606520 object/tangible/medicine/crafted/crafted_medpack_enhance_constitution_a.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
-1589826577 object/tangible/medicine/crafted/crafted_medpack_enhance_constitution_b.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',400)"
|
||||
-399487902 object/tangible/medicine/crafted/crafted_medpack_enhance_constitution_c.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',600)"
|
||||
332621686 object/tangible/medicine/crafted/crafted_medpack_enhance_constitution_d.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',800)"
|
||||
-106672157 object/tangible/medicine/crafted/crafted_medpack_enhance_disease_a.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
582215540 object/tangible/medicine/crafted/crafted_medpack_enhance_disease_b.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',400)"
|
||||
1807646969 object/tangible/medicine/crafted/crafted_medpack_enhance_disease_c.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',600)"
|
||||
-231292762 object/tangible/medicine/crafted/crafted_medpack_enhance_health_a.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
690055217 object/tangible/medicine/crafted/crafted_medpack_enhance_health_b.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',400)"
|
||||
1613500348 object/tangible/medicine/crafted/crafted_medpack_enhance_health_c.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',600)"
|
||||
-1680923480 object/tangible/medicine/crafted/crafted_medpack_enhance_health_d.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',800)"
|
||||
-132280259 object/tangible/medicine/crafted/crafted_medpack_enhance_health_triad_a.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
587872426 object/tangible/medicine/crafted/crafted_medpack_enhance_health_triad_b.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',400)"
|
||||
1778868007 object/tangible/medicine/crafted/crafted_medpack_enhance_health_triad_c.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',600)"
|
||||
-1847299021 object/tangible/medicine/crafted/crafted_medpack_enhance_health_triad_d.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',800)"
|
||||
-220731710 object/tangible/medicine/crafted/crafted_medpack_enhance_poison_a.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
700468821 object/tangible/medicine/crafted/crafted_medpack_enhance_poison_b.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',400)"
|
||||
1624058328 object/tangible/medicine/crafted/crafted_medpack_enhance_poison_c.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',600)"
|
||||
-1634928232 object/tangible/medicine/crafted/crafted_medpack_enhance_quickness_a.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
1167806735 object/tangible/medicine/crafted/crafted_medpack_enhance_quickness_b.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',400)"
|
||||
211170946 object/tangible/medicine/crafted/crafted_medpack_enhance_quickness_c.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',600)"
|
||||
-143319658 object/tangible/medicine/crafted/crafted_medpack_enhance_quickness_d.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',800)"
|
||||
949453622 object/tangible/medicine/crafted/crafted_medpack_enhance_stamina_a.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
-478139487 object/tangible/medicine/crafted/crafted_medpack_enhance_stamina_b.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',400)"
|
||||
-1433580500 object/tangible/medicine/crafted/crafted_medpack_enhance_stamina_c.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',600)"
|
||||
1366189880 object/tangible/medicine/crafted/crafted_medpack_enhance_stamina_d.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',800)"
|
||||
1240046010 object/tangible/medicine/crafted/crafted_medpack_enhance_strength_a.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
-1828835027 object/tangible/medicine/crafted/crafted_medpack_enhance_strength_b.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',400)"
|
||||
-604809568 object/tangible/medicine/crafted/crafted_medpack_enhance_strength_c.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',600)"
|
||||
537951668 object/tangible/medicine/crafted/crafted_medpack_enhance_strength_d.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',800)"
|
||||
310195605 object/tangible/medicine/crafted/crafted_medpack_fire_blanket.iff "ConvertToEnhancer(-1598227139,'disinfect',500)"
|
||||
672875303 object/tangible/medicine/crafted/crafted_medpack_grenade_area_a.iff "ConvertToEnhancer(1665648240,'bactaSpray',250)"
|
||||
-217257040 object/tangible/medicine/crafted/crafted_medpack_grenade_area_b.iff "ConvertToEnhancer(1665648240,'bactaSpray',500)"
|
||||
-1174303683 object/tangible/medicine/crafted/crafted_medpack_grenade_area_c.iff "ConvertToEnhancer(1665648240,'bactaSpray',750)"
|
||||
-2011612965 object/tangible/medicine/crafted/crafted_medpack_grenade_damage_a.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1393463372 object/tangible/medicine/crafted/crafted_medpack_grenade_damage_b.iff "ConvertToEnhancer(392779336,'bactaToss',300)"
|
||||
436467649 object/tangible/medicine/crafted/crafted_medpack_grenade_damage_c.iff "ConvertToEnhancer(392779336,'bactaToss',500)"
|
||||
-505357099 object/tangible/medicine/crafted/crafted_medpack_grenade_damage_d.iff "ConvertToEnhancer(392779336,'bactaToss',700)"
|
||||
-1460815016 object/tangible/medicine/crafted/crafted_medpack_grenade_damage_e.iff "ConvertToEnhancer(392779336,'bactaToss',900)"
|
||||
-97283480 object/tangible/medicine/crafted/crafted_medpack_intimidated_a.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
556022527 object/tangible/medicine/crafted/crafted_medpack_intimidated_b.iff "ConvertToEnhancer(-102559156,'stabilizers',500)"
|
||||
1415748921 object/tangible/medicine/crafted/crafted_medpack_stunned_a.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
-1888143954 object/tangible/medicine/crafted/crafted_medpack_stunned_b.iff "ConvertToEnhancer(-102559156,'stabilizers',500)"
|
||||
-1676060831 object/tangible/medicine/crafted/crafted_medpack_wound_action_a.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1192165366 object/tangible/medicine/crafted/crafted_medpack_wound_action_b.iff "ConvertToEnhancer(392779336,'bactaToss',300)"
|
||||
235116667 object/tangible/medicine/crafted/crafted_medpack_wound_action_c.iff "ConvertToEnhancer(1389874386,'bactaJab',500)"
|
||||
-169823377 object/tangible/medicine/crafted/crafted_medpack_wound_action_d.iff "ConvertToEnhancer(1389874386,'bactaJab',700)"
|
||||
-1125264158 object/tangible/medicine/crafted/crafted_medpack_wound_action_e.iff "ConvertToEnhancer(1389874386,'bactaJab',900)"
|
||||
-328757929 object/tangible/medicine/crafted/crafted_medpack_wound_constitution_a.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
930096576 object/tangible/medicine/crafted/crafted_medpack_wound_constitution_b.iff "ConvertToEnhancer(392779336,'bactaToss',300)"
|
||||
2122138189 object/tangible/medicine/crafted/crafted_medpack_wound_constitution_c.iff "ConvertToEnhancer(1389874386,'bactaJab',500)"
|
||||
-2053215911 object/tangible/medicine/crafted/crafted_medpack_wound_constitution_d.iff "ConvertToEnhancer(1389874386,'bactaJab',700)"
|
||||
-862777644 object/tangible/medicine/crafted/crafted_medpack_wound_constitution_e.iff "ConvertToEnhancer(1389874386,'bactaJab',900)"
|
||||
430317917 object/tangible/medicine/crafted/crafted_medpack_wound_health_a.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-1028552246 object/tangible/medicine/crafted/crafted_medpack_wound_health_b.iff "ConvertToEnhancer(392779336,'bactaToss',300)"
|
||||
-1950552505 object/tangible/medicine/crafted/crafted_medpack_wound_health_c.iff "ConvertToEnhancer(1389874386,'bactaJab',500)"
|
||||
1885324627 object/tangible/medicine/crafted/crafted_medpack_wound_health_d.iff "ConvertToEnhancer(1389874386,'bactaJab',700)"
|
||||
961716958 object/tangible/medicine/crafted/crafted_medpack_wound_health_e.iff "ConvertToEnhancer(1389874386,'bactaJab',900)"
|
||||
-1677860148 object/tangible/medicine/crafted/crafted_medpack_wound_quickness_a.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1089096283 object/tangible/medicine/crafted/crafted_medpack_wound_quickness_b.iff "ConvertToEnhancer(392779336,'bactaToss',300)"
|
||||
166145494 object/tangible/medicine/crafted/crafted_medpack_wound_quickness_c.iff "ConvertToEnhancer(1389874386,'bactaJab',500)"
|
||||
-234617150 object/tangible/medicine/crafted/crafted_medpack_wound_quickness_d.iff "ConvertToEnhancer(1389874386,'bactaJab',700)"
|
||||
-1157013169 object/tangible/medicine/crafted/crafted_medpack_wound_quickness_e.iff "ConvertToEnhancer(1389874386,'bactaJab',900)"
|
||||
1184142638 object/tangible/medicine/crafted/crafted_medpack_wound_stamina_a.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-1652343367 object/tangible/medicine/crafted/crafted_medpack_wound_stamina_b.iff "ConvertToEnhancer(392779336,'bactaToss',300)"
|
||||
-728868300 object/tangible/medicine/crafted/crafted_medpack_wound_stamina_c.iff "ConvertToEnhancer(1389874386,'bactaJab',500)"
|
||||
795701536 object/tangible/medicine/crafted/crafted_medpack_wound_stamina_d.iff "ConvertToEnhancer(1389874386,'bactaJab',700)"
|
||||
1717573293 object/tangible/medicine/crafted/crafted_medpack_wound_stamina_e.iff "ConvertToEnhancer(1389874386,'bactaJab',900)"
|
||||
-1765458857 object/tangible/medicine/crafted/crafted_medpack_wound_strength_a.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1305646272 object/tangible/medicine/crafted/crafted_medpack_wound_strength_b.iff "ConvertToEnhancer(392779336,'bactaToss',300)"
|
||||
81785677 object/tangible/medicine/crafted/crafted_medpack_wound_strength_c.iff "ConvertToEnhancer(1389874386,'bactaJab',500)"
|
||||
-12789671 object/tangible/medicine/crafted/crafted_medpack_wound_strength_d.iff "ConvertToEnhancer(1389874386,'bactaJab',700)"
|
||||
-1238253612 object/tangible/medicine/crafted/crafted_medpack_wound_strength_e.iff "ConvertToEnhancer(1389874386,'bactaJab',900)"
|
||||
-1657672270 object/tangible/medicine/crafted/crafted_stimpack_sm_s1_a.iff "ConvertToStimpack(1910273415,100,1)"
|
||||
1176913189 object/tangible/medicine/crafted/crafted_stimpack_sm_s1_b.iff "ConvertToStimpack(-1429480176,188,15)"
|
||||
254485160 object/tangible/medicine/crafted/crafted_stimpack_sm_s1_c.iff "ConvertToStimpack(-473515363,250,35)"
|
||||
-188216900 object/tangible/medicine/crafted/crafted_stimpack_sm_s1_d.iff "ConvertToStimpack(405115273,425,60)"
|
||||
-1111134671 object/tangible/medicine/crafted/crafted_stimpack_sm_s1_e.iff "ConvertToStimpack(405115273,600,60)"
|
||||
157634799 object/tangible/medicine/crafted/medpack_cure_disease_a.iff "ConvertToEnhancer(-1598227139,'disinfect',250)"
|
||||
-1983000237 object/tangible/medicine/crafted/medpack_cure_disease_area_a.iff "ConvertToEnhancer(-1598227139,'disinfect',250)"
|
||||
1390049732 object/tangible/medicine/crafted/medpack_cure_disease_area_b.iff "ConvertToEnhancer(-1598227139,'disinfect',500)"
|
||||
467082825 object/tangible/medicine/crafted/medpack_cure_disease_area_c.iff "ConvertToEnhancer(-1598227139,'disinfect',750)"
|
||||
-764217224 object/tangible/medicine/crafted/medpack_cure_disease_b.iff "ConvertToEnhancer(-1598227139,'disinfect',500)"
|
||||
-1686134795 object/tangible/medicine/crafted/medpack_cure_disease_c.iff "ConvertToEnhancer(-1598227139,'disinfect',750)"
|
||||
95475824 object/tangible/medicine/crafted/medpack_cure_poison_a.iff "ConvertToEnhancer(-1598227139,'disinfect',250)"
|
||||
90200724 object/tangible/medicine/crafted/medpack_cure_poison_area_a.iff "ConvertToEnhancer(-1598227139,'disinfect',250)"
|
||||
-562564605 object/tangible/medicine/crafted/medpack_cure_poison_area_b.iff "ConvertToEnhancer(-1598227139,'disinfect',500)"
|
||||
-1753574002 object/tangible/medicine/crafted/medpack_cure_poison_area_c.iff "ConvertToEnhancer(-1598227139,'disinfect',750)"
|
||||
-559451929 object/tangible/medicine/crafted/medpack_cure_poison_b.iff "ConvertToEnhancer(-1598227139,'disinfect',500)"
|
||||
-1750460566 object/tangible/medicine/crafted/medpack_cure_poison_c.iff "ConvertToEnhancer(-1598227139,'disinfect',750)"
|
||||
1506389102 object/tangible/medicine/crafted/medpack_disease_action_a.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
-2099378951 object/tangible/medicine/crafted/medpack_disease_action_b.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',500)"
|
||||
-875338892 object/tangible/medicine/crafted/medpack_disease_action_c.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',750)"
|
||||
53231194 object/tangible/medicine/crafted/medpack_disease_area_action_a.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',250)"
|
||||
-667183411 object/tangible/medicine/crafted/medpack_disease_area_action_b.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',500)"
|
||||
-1858670272 object/tangible/medicine/crafted/medpack_disease_area_action_c.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',750)"
|
||||
-1166687602 object/tangible/medicine/crafted/medpack_disease_area_constitution_a.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',250)"
|
||||
1633839641 object/tangible/medicine/crafted/medpack_disease_area_constitution_b.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',500)"
|
||||
678366612 object/tangible/medicine/crafted/medpack_disease_area_constitution_c.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',750)"
|
||||
-1206446259 object/tangible/medicine/crafted/medpack_disease_area_focus_a.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',250)"
|
||||
1660993498 object/tangible/medicine/crafted/medpack_disease_area_focus_b.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',500)"
|
||||
705550423 object/tangible/medicine/crafted/medpack_disease_area_focus_c.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',750)"
|
||||
-2037168026 object/tangible/medicine/crafted/medpack_disease_area_health_a.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',250)"
|
||||
1568989425 object/tangible/medicine/crafted/medpack_disease_area_health_b.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',500)"
|
||||
344557436 object/tangible/medicine/crafted/medpack_disease_area_health_c.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',750)"
|
||||
810684832 object/tangible/medicine/crafted/medpack_disease_area_mind_a.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',250)"
|
||||
-347752137 object/tangible/medicine/crafted/medpack_disease_area_mind_b.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',500)"
|
||||
-1572282694 object/tangible/medicine/crafted/medpack_disease_area_mind_c.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',750)"
|
||||
1934373193 object/tangible/medicine/crafted/medpack_disease_area_quickness_a.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',250)"
|
||||
-1470391842 object/tangible/medicine/crafted/medpack_disease_area_quickness_b.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',500)"
|
||||
-514392493 object/tangible/medicine/crafted/medpack_disease_area_quickness_c.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',750)"
|
||||
1856972813 object/tangible/medicine/crafted/medpack_disease_area_stamina_a.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',250)"
|
||||
-1246199654 object/tangible/medicine/crafted/medpack_disease_area_stamina_b.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',500)"
|
||||
-55187689 object/tangible/medicine/crafted/medpack_disease_area_stamina_c.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',750)"
|
||||
324224015 object/tangible/medicine/crafted/medpack_disease_area_strength_a.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',250)"
|
||||
-935007080 object/tangible/medicine/crafted/medpack_disease_area_strength_b.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',500)"
|
||||
-2125886699 object/tangible/medicine/crafted/medpack_disease_area_strength_c.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',750)"
|
||||
-1564805563 object/tangible/medicine/crafted/medpack_disease_area_willpower_a.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',250)"
|
||||
2041405138 object/tangible/medicine/crafted/medpack_disease_area_willpower_b.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',500)"
|
||||
815806815 object/tangible/medicine/crafted/medpack_disease_area_willpower_c.iff "ConvertToEnhancer(-1974700596,'thyroidRupture',750)"
|
||||
-1636411245 object/tangible/medicine/crafted/medpack_disease_constitution_a.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
1164046340 object/tangible/medicine/crafted/medpack_disease_constitution_b.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',500)"
|
||||
208443273 object/tangible/medicine/crafted/medpack_disease_constitution_c.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',750)"
|
||||
-979596476 object/tangible/medicine/crafted/medpack_disease_focus_a.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
512435155 object/tangible/medicine/crafted/medpack_disease_focus_b.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',500)"
|
||||
1468417118 object/tangible/medicine/crafted/medpack_disease_focus_c.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',750)"
|
||||
-596190638 object/tangible/medicine/crafted/medpack_disease_health_a.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
123826885 object/tangible/medicine/crafted/medpack_disease_health_b.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',500)"
|
||||
1315706184 object/tangible/medicine/crafted/medpack_disease_health_c.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',750)"
|
||||
-1062853951 object/tangible/medicine/crafted/medpack_disease_mind_a.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
464620118 object/tangible/medicine/crafted/medpack_disease_mind_b.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',500)"
|
||||
1388113371 object/tangible/medicine/crafted/medpack_disease_mind_c.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',750)"
|
||||
2035451832 object/tangible/medicine/crafted/medpack_disease_quickness_a.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
-1572524241 object/tangible/medicine/crafted/medpack_disease_quickness_b.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',500)"
|
||||
-347584350 object/tangible/medicine/crafted/medpack_disease_quickness_c.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',750)"
|
||||
-601857572 object/tangible/medicine/crafted/medpack_disease_stamina_a.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
121096523 object/tangible/medicine/crafted/medpack_disease_stamina_b.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',500)"
|
||||
1312468678 object/tangible/medicine/crafted/medpack_disease_stamina_c.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',750)"
|
||||
681976607 object/tangible/medicine/crafted/medpack_disease_strength_a.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
-206468216 object/tangible/medicine/crafted/medpack_disease_strength_b.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',500)"
|
||||
-1162023931 object/tangible/medicine/crafted/medpack_disease_strength_c.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',750)"
|
||||
-1465630540 object/tangible/medicine/crafted/medpack_disease_willpower_a.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
1941170211 object/tangible/medicine/crafted/medpack_disease_willpower_b.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',500)"
|
||||
985567150 object/tangible/medicine/crafted/medpack_disease_willpower_c.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',750)"
|
||||
-1647095649 object/tangible/medicine/crafted/medpack_poison_action_a.iff "ConvertToEnhancer(-273618931,'neurotoxin',250)"
|
||||
1187313672 object/tangible/medicine/crafted/medpack_poison_action_b.iff "ConvertToEnhancer(-273618931,'neurotoxin',500)"
|
||||
264871813 object/tangible/medicine/crafted/medpack_poison_action_c.iff "ConvertToEnhancer(-273618931,'neurotoxin',750)"
|
||||
235278722 object/tangible/medicine/crafted/medpack_poison_area_action_a.iff "ConvertToEnhancer(-1930462643,'traumatize',250)"
|
||||
-720258795 object/tangible/medicine/crafted/medpack_poison_area_action_b.iff "ConvertToEnhancer(-1930462643,'traumatize',500)"
|
||||
-1675829608 object/tangible/medicine/crafted/medpack_poison_area_action_c.iff "ConvertToEnhancer(-1930462643,'traumatize',750)"
|
||||
-1950783554 object/tangible/medicine/crafted/medpack_poison_area_health_a.iff "ConvertToEnhancer(-1930462643,'traumatize',250)"
|
||||
1353633577 object/tangible/medicine/crafted/medpack_poison_area_health_b.iff "ConvertToEnhancer(-1930462643,'traumatize',500)"
|
||||
430155940 object/tangible/medicine/crafted/medpack_poison_area_health_c.iff "ConvertToEnhancer(-1930462643,'traumatize',750)"
|
||||
-636296737 object/tangible/medicine/crafted/medpack_poison_area_mind_a.iff "ConvertToEnhancer(-1930462643,'traumatize',250)"
|
||||
17123656 object/tangible/medicine/crafted/medpack_poison_area_mind_b.iff "ConvertToEnhancer(-1930462643,'traumatize',500)"
|
||||
1208495813 object/tangible/medicine/crafted/medpack_poison_area_mind_c.iff "ConvertToEnhancer(-1930462643,'traumatize',750)"
|
||||
409740963 object/tangible/medicine/crafted/medpack_poison_health_a.iff "ConvertToEnhancer(-273618931,'neurotoxin',250)"
|
||||
-1015312844 object/tangible/medicine/crafted/medpack_poison_health_b.iff "ConvertToEnhancer(-273618931,'neurotoxin',500)"
|
||||
-1971918407 object/tangible/medicine/crafted/medpack_poison_health_c.iff "ConvertToEnhancer(-273618931,'neurotoxin',750)"
|
||||
-1085939198 object/tangible/medicine/crafted/medpack_poison_mind_a.iff "ConvertToEnhancer(-273618931,'neurotoxin',250)"
|
||||
1683114645 object/tangible/medicine/crafted/medpack_poison_mind_b.iff "ConvertToEnhancer(-273618931,'neurotoxin',500)"
|
||||
761212184 object/tangible/medicine/crafted/medpack_poison_mind_c.iff "ConvertToEnhancer(-273618931,'neurotoxin',750)"
|
||||
794688942 object/tangible/medicine/crafted/medpack_revive.iff "ConvertToStimpack(1910273415,100,1)"
|
||||
-2053523137 object/tangible/medicine/crafted_medpack_blinded.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
-1092500879 object/tangible/medicine/crafted_medpack_dizzy.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
-1730770782 object/tangible/medicine/crafted_medpack_enhance_action.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
208928229 object/tangible/medicine/crafted_medpack_enhance_constitution.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
807772545 object/tangible/medicine/crafted_medpack_enhance_health.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
-596014267 object/tangible/medicine/crafted_medpack_enhance_quickness.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
-1106535119 object/tangible/medicine/crafted_medpack_enhance_stamina.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
-1599002060 object/tangible/medicine/crafted_medpack_enhance_strength.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
-1680302670 object/tangible/medicine/crafted_medpack_grenade_area.iff "ConvertToEnhancer(1665648240,'bactaSpray',250)"
|
||||
144304422 object/tangible/medicine/crafted_medpack_grenade_damage.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1089638525 object/tangible/medicine/crafted_medpack_intimidated.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
1491099597 object/tangible/medicine/crafted_medpack_stunned.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
1896411640 object/tangible/medicine/crafted_medpack_wound_action.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
656430760 object/tangible/medicine/crafted_medpack_wound_constitution.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-637806373 object/tangible/medicine/crafted_medpack_wound_health.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1450479489 object/tangible/medicine/crafted_medpack_wound_quickness.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-2028859065 object/tangible/medicine/crafted_medpack_wound_stamina.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1338425771 object/tangible/medicine/crafted_medpack_wound_strength.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-1387533146 object/tangible/medicine/crafted_stimpack_sm_s1.iff
|
||||
-508865592 object/tangible/medicine/medikit_tool_advanced.iff "ConvertToStimpack(-1429480176,188,15)"
|
||||
186405659 object/tangible/medicine/medikit_tool_basic.iff "ConvertToStimpack(1910273415,100,1)"
|
||||
1367605438 object/tangible/medicine/medpack_blinded.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
766575814 object/tangible/medicine/medpack_cure_disease.iff "ConvertToEnhancer(-1598227139,'disinfect',250)"
|
||||
-1695066256 object/tangible/medicine/medpack_cure_poison.iff "ConvertToEnhancer(-1598227139,'disinfect',250)"
|
||||
-1026091453 object/tangible/medicine/medpack_damage.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-2032640577 object/tangible/medicine/medpack_disease_health.iff "ConvertToEnhancer(-1636338954,'deuteriumToss',250)"
|
||||
1362576287 object/tangible/medicine/medpack_dizzy.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
430277184 object/tangible/medicine/medpack_enhance_action.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
148075865 object/tangible/medicine/medpack_enhance_constitution.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
-1319720093 object/tangible/medicine/medpack_enhance_health.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
-14537666 object/tangible/medicine/medpack_enhance_quickness.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
-1597210008 object/tangible/medicine/medpack_enhance_stamina.iff "ConvertToEnhancer(-1891703777,'endorphineInjection',200)"
|
||||
389089358 object/tangible/medicine/medpack_enhance_strength.iff "ConvertToEnhancer(-1453898665,'nutrientInjection',200)"
|
||||
143113263 object/tangible/medicine/medpack_grenade_area.iff "ConvertToEnhancer(1665648240,'bactaSpray',250)"
|
||||
-1981094972 object/tangible/medicine/medpack_grenade_damage.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
787604538 object/tangible/medicine/medpack_intimidated.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
233382897 object/tangible/medicine/medpack_poison_health.iff "ConvertToEnhancer(-273618931,'neurotoxin',250)"
|
||||
1834104387 object/tangible/medicine/medpack_revive.iff
|
||||
-820961364 object/tangible/medicine/medpack_sm_s1.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-1929517492 object/tangible/medicine/medpack_stunned.iff "ConvertToEnhancer(-102559156,'stabilizers',250)"
|
||||
1825046689 object/tangible/medicine/medpack_wound.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-497561499 object/tangible/medicine/medpack_wound_action.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-370688623 object/tangible/medicine/medpack_wound_constitution.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1252325702 object/tangible/medicine/medpack_wound_health.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1219727576 object/tangible/medicine/medpack_wound_quickness.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-261254912 object/tangible/medicine/medpack_wound_stamina.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-826946743 object/tangible/medicine/medpack_wound_strength.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-307530442 object/tangible/medicine/newbie_medpack_damage.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
-126968979 object/tangible/medicine/newbie_medpack_wound_action.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1352512078 object/tangible/medicine/newbie_medpack_wound_health.iff "ConvertToEnhancer(392779336,'bactaToss',100)"
|
||||
1317824494 object/tangible/medicine/pet/droid_damage_kit_a.iff
|
||||
-1784950919 object/tangible/medicine/pet/droid_damage_kit_b.iff
|
||||
-594106124 object/tangible/medicine/pet/droid_damage_kit_c.iff
|
||||
2585987 object/tangible/medicine/pet/droid_damage_kit_d.iff
|
||||
-2143530995 object/tangible/medicine/pet/droid_stimpack_a.iff
|
||||
1529608346 object/tangible/medicine/pet/droid_stimpack_b.iff
|
||||
304520983 object/tangible/medicine/pet/droid_stimpack_c.iff
|
||||
-372919293 object/tangible/medicine/pet/droid_stimpack_d.iff
|
||||
371958170 object/tangible/medicine/pet/droid_vitapack_a.iff
|
||||
-851703539 object/tangible/medicine/pet/droid_vitapack_b.iff
|
||||
105333006 object/tangible/medicine/pet/droid_vitapack_c.iff
|
||||
-1495875463 object/tangible/medicine/pet/droid_wound_kit_a.iff
|
||||
2109827310 object/tangible/medicine/pet/droid_wound_kit_b.iff
|
||||
885788515 object/tangible/medicine/pet/droid_wound_kit_c.iff
|
||||
-818994057 object/tangible/medicine/pet/droid_wound_kit_d.iff
|
||||
38436739 object/tangible/medicine/pet/pet_stimpack_a.iff "ConvertToPetStimpack(1955421157,100)"
|
||||
-648161516 object/tangible/medicine/pet/pet_stimpack_b.iff "ConvertToPetStimpack(-1348799630,225)"
|
||||
-1873760103 object/tangible/medicine/pet/pet_stimpack_c.iff "ConvertToPetStimpack(-426273537,475)"
|
||||
1806932877 object/tangible/medicine/pet/pet_stimpack_d.iff "ConvertToPetStimpack(494190571,700)"
|
||||
-1805808108 object/tangible/medicine/pet/pet_vitapack_a.iff
|
||||
1330259587 object/tangible/medicine/pet/pet_vitapack_b.iff
|
||||
105333006 object/tangible/medicine/pet/pet_vitapack_c.iff
|
||||
-2043897502 object/tangible/medicine/stimpack_sm_s1.iff "ConvertToStimpack(1910273415,100,1)"
|
||||
@@ -0,0 +1,25 @@
|
||||
Template ID Template Conversion
|
||||
-1752781786 object/tangible/powerup/weapon/fs_quest_sad/melee_speed_quest.iff
|
||||
-783172251 object/tangible/powerup/weapon/fs_quest_sad/shared_melee_speed_quest.iff
|
||||
816906965 object/tangible/powerup/weapon/heavy.iff
|
||||
2079645376 object/tangible/powerup/weapon/melee.iff
|
||||
548609244 object/tangible/powerup/weapon/melee_balancing_weights.iff
|
||||
1337076820 object/tangible/powerup/weapon/melee_element_dispursal_tuner.iff
|
||||
1327818409 object/tangible/powerup/weapon/melee_generic.iff ConvertMeleePowerup
|
||||
1393952939 object/tangible/powerup/weapon/melee_hilt_reinforcement_kit.iff
|
||||
-1004627683 object/tangible/powerup/weapon/melee_inertial_fluctuator.iff
|
||||
-1962956247 object/tangible/powerup/weapon/melee_lightsaber.iff
|
||||
-551790316 object/tangible/powerup/weapon/melee_surface_serration_kit.iff
|
||||
-1042074732 object/tangible/powerup/weapon/melee_tactical_grip_modifier.iff
|
||||
-1181099798 object/tangible/powerup/weapon/mine.iff
|
||||
-2117547605 object/tangible/powerup/weapon/mine_explosive.iff ConvertMinePowerup
|
||||
1896637454 object/tangible/powerup/weapon/ranged.iff
|
||||
352903310 object/tangible/powerup/weapon/ranged_barrel.iff ConvertRangedPowerup
|
||||
130303407 object/tangible/powerup/weapon/ranged_grip.iff ConvertRangedPowerup
|
||||
1006954225 object/tangible/powerup/weapon/ranged_muzzle.iff ConvertRangedPowerup
|
||||
-1957995430 object/tangible/powerup/weapon/ranged_power.iff ConvertRangedPowerup
|
||||
200431483 object/tangible/powerup/weapon/ranged_scope.iff ConvertRangedPowerup
|
||||
1219521873 object/tangible/powerup/weapon/ranged_stock.iff ConvertRangedPowerup
|
||||
816274817 object/tangible/powerup/weapon/thrown.iff
|
||||
1602787778 object/tangible/powerup/weapon/thrown_explosive.iff
|
||||
1021288392 object/tangible/powerup/weapon/thrown_wiring.iff
|
||||
@@ -0,0 +1,18 @@
|
||||
template_id crafted_object_template min_damage_from min_damage_to max_damage_from max_damage_to attack_speed_from attack_speed_to wound_chance_from wound_chance_to special_attack_cost_to accuracy_to min_range_to max_range_to damage_type elemental_type elemental_value force_cost
|
||||
1567297626 object/tangible/component/weapon/lightsaber/lightsaber_lance_module_force_crystal.iff [-5:50] [15:110] [-5:50] [15:110] [-0.6:0] [-0.3:0]
|
||||
1062687370 object/tangible/component/weapon/lightsaber/lightsaber_module_force_crystal.iff [-5:50] [15:110] [-5:50] [15:110] [-0.6:0] [-0.3:0]
|
||||
-1774596602 object/tangible/component/weapon/lightsaber/lightsaber_module_krayt_dragon_pearl.iff [10:50] [25:120] [10:50] [25:120] [-0.6:-0.2] [-0.3:-0.1]
|
||||
1530854406 object/weapon/melee/sword/crafted_saber/sword_lightsaber_training.iff [50:70] [50:80] [130:170] [110:185] [4.5:4.8] [3.7:4.0] 100 0 5 2
|
||||
-255701924 object/weapon/melee/sword/crafted_saber/sword_lightsaber_one_handed_gen1.iff [70:90] [70:90] [160:200] [170:210] [4.2:4.5] [3.0:3.3] 100 0 5 2
|
||||
735438027 object/weapon/melee/sword/crafted_saber/sword_lightsaber_one_handed_gen2.iff [80:100] [90:110] [170:210] [180:220] [4.2:4.5] [3.0:3.3] 100 0 5 2
|
||||
1658356550 object/weapon/melee/sword/crafted_saber/sword_lightsaber_one_handed_gen3.iff [130:150] [140:160] [220:260] [230:270] [4.2:4.5] [3.0:3.3] 100 0 5 2
|
||||
-1724143534 object/weapon/melee/sword/crafted_saber/sword_lightsaber_one_handed_gen4.iff [140:160] [150:170] [230:270] [240:280] [4.2:4.5] [3.0:3.3] 100 0 5 2
|
||||
-801714209 object/weapon/melee/sword/crafted_saber/sword_lightsaber_one_handed_gen5.iff [140:160] [150:170] [230:270] [240:280] [4.2:4.5] [3.0:3.3] 100 0 5 2
|
||||
-181151130 object/weapon/melee/polearm/crafted_saber/sword_lightsaber_polearm_gen1.iff [105:125] [80:100] [195:235] [170:210] [4.8:5.1] [3.0:3.3] 100 0 5 2
|
||||
774140657 object/weapon/melee/polearm/crafted_saber/sword_lightsaber_polearm_gen2.iff [125:145] [90:110] [215:255] [180:220] [4.8:5.1] [3.0:3.3] 100 0 5 2
|
||||
1730745724 object/weapon/melee/polearm/crafted_saber/sword_lightsaber_polearm_gen3.iff [195:215] [140:160] [285:305] [230:270] [4.8:5.1] [3.0:3.3] 100 0 5 2
|
||||
-1664467352 object/weapon/melee/polearm/crafted_saber/sword_lightsaber_polearm_gen4.iff [225:235] [150:170] [305:325] [240:280] [4.8:5.1] [3.0:3.3] 100 0 5 2
|
||||
431995434 object/weapon/melee/2h_sword/crafted_saber/sword_lightsaber_two_handed_gen1.iff [90:110] [70:90] [180:220] [170:210] [4.5:4.8] [3.0:3.3] 100 0 5 2
|
||||
-1029172547 object/weapon/melee/2h_sword/crafted_saber/sword_lightsaber_two_handed_gen2.iff [100:120] [80:100] [190:230] [180:220] [4.5:4.8] [3.0:3.3] 100 0 5 2
|
||||
-1952090832 object/weapon/melee/2h_sword/crafted_saber/sword_lightsaber_two_handed_gen3.iff [175:185] [130:150] [255:295] [230:270] [4.5:4.8] [3.0:3.3] 100 0 5 2
|
||||
1883659812 object/weapon/melee/2h_sword/crafted_saber/sword_lightsaber_two_handed_gen4.iff [185:195] [140:160] [265:305] [240:280] [4.5:4.8] [3.0:3.3] 100 0 5 2
|
||||
@@ -0,0 +1,165 @@
|
||||
#! /usr/bin/perl
|
||||
# ======================================================================
|
||||
# Use to update shaders
|
||||
# ======================================================================
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Iff;
|
||||
use Getopt::Long;
|
||||
|
||||
# ======================================================================
|
||||
# Globals
|
||||
# ======================================================================
|
||||
|
||||
my $branch;
|
||||
my %hash;
|
||||
my $effect = "";
|
||||
my $templatefile;
|
||||
my $templatedepotfile;
|
||||
|
||||
my $name = $0;
|
||||
$name =~ s/^(.*)[\\\/]//;
|
||||
|
||||
# ======================================================================
|
||||
# Subroutines
|
||||
# ======================================================================
|
||||
|
||||
my @crctable =
|
||||
(
|
||||
hex("0x00000000"), hex("0x04C11DB7"), hex("0x09823B6E"), hex("0x0D4326D9"), hex("0x130476DC"), hex("0x17C56B6B"), hex("0x1A864DB2"), hex("0x1E475005"),
|
||||
hex("0x2608EDB8"), hex("0x22C9F00F"), hex("0x2F8AD6D6"), hex("0x2B4BCB61"), hex("0x350C9B64"), hex("0x31CD86D3"), hex("0x3C8EA00A"), hex("0x384FBDBD"),
|
||||
hex("0x4C11DB70"), hex("0x48D0C6C7"), hex("0x4593E01E"), hex("0x4152FDA9"), hex("0x5F15ADAC"), hex("0x5BD4B01B"), hex("0x569796C2"), hex("0x52568B75"),
|
||||
hex("0x6A1936C8"), hex("0x6ED82B7F"), hex("0x639B0DA6"), hex("0x675A1011"), hex("0x791D4014"), hex("0x7DDC5DA3"), hex("0x709F7B7A"), hex("0x745E66CD"),
|
||||
hex("0x9823B6E0"), hex("0x9CE2AB57"), hex("0x91A18D8E"), hex("0x95609039"), hex("0x8B27C03C"), hex("0x8FE6DD8B"), hex("0x82A5FB52"), hex("0x8664E6E5"),
|
||||
hex("0xBE2B5B58"), hex("0xBAEA46EF"), hex("0xB7A96036"), hex("0xB3687D81"), hex("0xAD2F2D84"), hex("0xA9EE3033"), hex("0xA4AD16EA"), hex("0xA06C0B5D"),
|
||||
hex("0xD4326D90"), hex("0xD0F37027"), hex("0xDDB056FE"), hex("0xD9714B49"), hex("0xC7361B4C"), hex("0xC3F706FB"), hex("0xCEB42022"), hex("0xCA753D95"),
|
||||
hex("0xF23A8028"), hex("0xF6FB9D9F"), hex("0xFBB8BB46"), hex("0xFF79A6F1"), hex("0xE13EF6F4"), hex("0xE5FFEB43"), hex("0xE8BCCD9A"), hex("0xEC7DD02D"),
|
||||
hex("0x34867077"), hex("0x30476DC0"), hex("0x3D044B19"), hex("0x39C556AE"), hex("0x278206AB"), hex("0x23431B1C"), hex("0x2E003DC5"), hex("0x2AC12072"),
|
||||
hex("0x128E9DCF"), hex("0x164F8078"), hex("0x1B0CA6A1"), hex("0x1FCDBB16"), hex("0x018AEB13"), hex("0x054BF6A4"), hex("0x0808D07D"), hex("0x0CC9CDCA"),
|
||||
hex("0x7897AB07"), hex("0x7C56B6B0"), hex("0x71159069"), hex("0x75D48DDE"), hex("0x6B93DDDB"), hex("0x6F52C06C"), hex("0x6211E6B5"), hex("0x66D0FB02"),
|
||||
hex("0x5E9F46BF"), hex("0x5A5E5B08"), hex("0x571D7DD1"), hex("0x53DC6066"), hex("0x4D9B3063"), hex("0x495A2DD4"), hex("0x44190B0D"), hex("0x40D816BA"),
|
||||
hex("0xACA5C697"), hex("0xA864DB20"), hex("0xA527FDF9"), hex("0xA1E6E04E"), hex("0xBFA1B04B"), hex("0xBB60ADFC"), hex("0xB6238B25"), hex("0xB2E29692"),
|
||||
hex("0x8AAD2B2F"), hex("0x8E6C3698"), hex("0x832F1041"), hex("0x87EE0DF6"), hex("0x99A95DF3"), hex("0x9D684044"), hex("0x902B669D"), hex("0x94EA7B2A"),
|
||||
hex("0xE0B41DE7"), hex("0xE4750050"), hex("0xE9362689"), hex("0xEDF73B3E"), hex("0xF3B06B3B"), hex("0xF771768C"), hex("0xFA325055"), hex("0xFEF34DE2"),
|
||||
hex("0xC6BCF05F"), hex("0xC27DEDE8"), hex("0xCF3ECB31"), hex("0xCBFFD686"), hex("0xD5B88683"), hex("0xD1799B34"), hex("0xDC3ABDED"), hex("0xD8FBA05A"),
|
||||
hex("0x690CE0EE"), hex("0x6DCDFD59"), hex("0x608EDB80"), hex("0x644FC637"), hex("0x7A089632"), hex("0x7EC98B85"), hex("0x738AAD5C"), hex("0x774BB0EB"),
|
||||
hex("0x4F040D56"), hex("0x4BC510E1"), hex("0x46863638"), hex("0x42472B8F"), hex("0x5C007B8A"), hex("0x58C1663D"), hex("0x558240E4"), hex("0x51435D53"),
|
||||
hex("0x251D3B9E"), hex("0x21DC2629"), hex("0x2C9F00F0"), hex("0x285E1D47"), hex("0x36194D42"), hex("0x32D850F5"), hex("0x3F9B762C"), hex("0x3B5A6B9B"),
|
||||
hex("0x0315D626"), hex("0x07D4CB91"), hex("0x0A97ED48"), hex("0x0E56F0FF"), hex("0x1011A0FA"), hex("0x14D0BD4D"), hex("0x19939B94"), hex("0x1D528623"),
|
||||
hex("0xF12F560E"), hex("0xF5EE4BB9"), hex("0xF8AD6D60"), hex("0xFC6C70D7"), hex("0xE22B20D2"), hex("0xE6EA3D65"), hex("0xEBA91BBC"), hex("0xEF68060B"),
|
||||
hex("0xD727BBB6"), hex("0xD3E6A601"), hex("0xDEA580D8"), hex("0xDA649D6F"), hex("0xC423CD6A"), hex("0xC0E2D0DD"), hex("0xCDA1F604"), hex("0xC960EBB3"),
|
||||
hex("0xBD3E8D7E"), hex("0xB9FF90C9"), hex("0xB4BCB610"), hex("0xB07DABA7"), hex("0xAE3AFBA2"), hex("0xAAFBE615"), hex("0xA7B8C0CC"), hex("0xA379DD7B"),
|
||||
hex("0x9B3660C6"), hex("0x9FF77D71"), hex("0x92B45BA8"), hex("0x9675461F"), hex("0x8832161A"), hex("0x8CF30BAD"), hex("0x81B02D74"), hex("0x857130C3"),
|
||||
hex("0x5D8A9099"), hex("0x594B8D2E"), hex("0x5408ABF7"), hex("0x50C9B640"), hex("0x4E8EE645"), hex("0x4A4FFBF2"), hex("0x470CDD2B"), hex("0x43CDC09C"),
|
||||
hex("0x7B827D21"), hex("0x7F436096"), hex("0x7200464F"), hex("0x76C15BF8"), hex("0x68860BFD"), hex("0x6C47164A"), hex("0x61043093"), hex("0x65C52D24"),
|
||||
hex("0x119B4BE9"), hex("0x155A565E"), hex("0x18197087"), hex("0x1CD86D30"), hex("0x029F3D35"), hex("0x065E2082"), hex("0x0B1D065B"), hex("0x0FDC1BEC"),
|
||||
hex("0x3793A651"), hex("0x3352BBE6"), hex("0x3E119D3F"), hex("0x3AD08088"), hex("0x2497D08D"), hex("0x2056CD3A"), hex("0x2D15EBE3"), hex("0x29D4F654"),
|
||||
hex("0xC5A92679"), hex("0xC1683BCE"), hex("0xCC2B1D17"), hex("0xC8EA00A0"), hex("0xD6AD50A5"), hex("0xD26C4D12"), hex("0xDF2F6BCB"), hex("0xDBEE767C"),
|
||||
hex("0xE3A1CBC1"), hex("0xE760D676"), hex("0xEA23F0AF"), hex("0xEEE2ED18"), hex("0xF0A5BD1D"), hex("0xF464A0AA"), hex("0xF9278673"), hex("0xFDE69BC4"),
|
||||
hex("0x89B8FD09"), hex("0x8D79E0BE"), hex("0x803AC667"), hex("0x84FBDBD0"), hex("0x9ABC8BD5"), hex("0x9E7D9662"), hex("0x933EB0BB"), hex("0x97FFAD0C"),
|
||||
hex("0xAFB010B1"), hex("0xAB710D06"), hex("0xA6322BDF"), hex("0xA2F33668"), hex("0xBCB4666D"), hex("0xB8757BDA"), hex("0xB5365D03"), hex("0xB1F740B4")
|
||||
);
|
||||
|
||||
my %crc;
|
||||
my %offset;
|
||||
my $offset = 0;
|
||||
|
||||
# =====================================================================
|
||||
|
||||
sub crc
|
||||
{
|
||||
use integer;
|
||||
|
||||
my $string = $_[0];
|
||||
return 0 if ($string eq "");
|
||||
|
||||
my $crc_init = hex("0xffffffff");
|
||||
my $crc = $crc_init;
|
||||
|
||||
foreach (split(//, $string))
|
||||
{
|
||||
$crc = $crctable[(($crc>>24) ^ ord($_)) & 255] ^ ($crc << 8);
|
||||
}
|
||||
|
||||
return $crc ^ $crc_init;
|
||||
}
|
||||
|
||||
sub usage
|
||||
{
|
||||
die "\n\tUsage:\n\n\t\t$name <branch>\n\n";
|
||||
}
|
||||
|
||||
sub processIff
|
||||
{
|
||||
my ($iff, $blockName, $isChunk) = @_;
|
||||
|
||||
if($isChunk && $blockName eq "XXXX")
|
||||
{
|
||||
$name = $iff->read_string();
|
||||
if($name =~ /craftedObjectTemplate/)
|
||||
{
|
||||
$iff->read_uint8();
|
||||
$name = $iff->read_string();
|
||||
$hash{$templatedepotfile} = $name if($name =~ /\.iff/);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub perforceWhere
|
||||
{
|
||||
local $_;
|
||||
|
||||
# find out where a perforce file resides on the local machine
|
||||
my $result;
|
||||
{
|
||||
open(P4, "p4 where $_[0] |");
|
||||
$_ = <P4>;
|
||||
chomp;
|
||||
my @where = split;
|
||||
$result = $where[2];
|
||||
close(P4);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
# ======================================================================
|
||||
# Main
|
||||
# ======================================================================
|
||||
|
||||
usage() if(@ARGV != 1);
|
||||
|
||||
$branch = $ARGV[0];
|
||||
|
||||
open(TMPFILES, "p4 files //depot/swg/$branch/data/sku.0/sys.server/compiled/game/object/draft_schematic/...*.iff |");
|
||||
while(<TMPFILES>)
|
||||
{
|
||||
$templatedepotfile = $1 if(/^(.*)#/);
|
||||
$templatedepotfile =~ s%//depot/swg/$branch/data/sku\.0/sys\.(shared|server)/compiled/game/%%;
|
||||
$templatefile = perforceWhere($1) if(/^(.*)#/);
|
||||
next if(!-e $templatefile || -z $templatefile);
|
||||
# print STDERR "$templatefile\n";
|
||||
|
||||
open(IFFILE, $templatefile);
|
||||
my $test = Iff->createFromFileHandle(\*IFFILE);
|
||||
|
||||
# Handle all first forms
|
||||
$test->enterForm($test->getCurrentName());
|
||||
|
||||
$test->walkIff(\&processIff);
|
||||
close(IFFILE);
|
||||
}
|
||||
close(TMPFILES);
|
||||
|
||||
open(OUTFILE, ">schematics_map.sql");
|
||||
foreach (keys %hash)
|
||||
{
|
||||
print OUTFILE "insert into schematic_templates values (",crc($_),",",crc($hash{$_}),");\n";
|
||||
print "$_\n";
|
||||
}
|
||||
close(OUTFILE);
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
create table schematic_templates
|
||||
(
|
||||
schematic_id number(20) NOT NULL, -- BIND_AS(DB::BindableNetworkId)
|
||||
object_template_id number NOT NULL, -- BIND_AS(DB::BindableNetworkId)
|
||||
constraint pk_schematic_templates primary key (schematic_id)
|
||||
);
|
||||
grant select on schematic_templates to public;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,18 @@
|
||||
Template ID Template Spice Name
|
||||
1672986063 object/tangible/food/spice/spice_booster_blue.iff booster_blue
|
||||
-201478902 object/tangible/food/spice/spice_crash_n_burn.iff crash_n_burn
|
||||
-320858653 object/tangible/food/spice/spice_droid_lube.iff droid_lube
|
||||
-428819171 object/tangible/food/spice/spice_giggledust.iff giggledust
|
||||
649015964 object/tangible/food/spice/spice_grey_gabaki.iff grey_gabaki
|
||||
-1588852672 object/tangible/food/spice/spice_gunjack.iff gunjack
|
||||
1589268411 object/tangible/food/spice/spice_kliknik_boost.iff kliknik_boost
|
||||
-2063383877 object/tangible/food/spice/spice_kwi_boost.iff kwi_boost
|
||||
-184506838 object/tangible/food/spice/spice_muon_gold.iff muon_gold
|
||||
205254138 object/tangible/food/spice/spice_neutron_pixey.iff neutron_pixey
|
||||
1936734520 object/tangible/food/spice/spice_pyrepenol.iff pyrepenol
|
||||
1577598037 object/tangible/food/spice/spice_scramjet.iff scramjet
|
||||
83272939 object/tangible/food/spice/spice_sedative_h4b.iff sedative_h4b
|
||||
-383871740 object/tangible/food/spice/spice_shadowpaw.iff shadowpaw
|
||||
-1338608150 object/tangible/food/spice/spice_sweetblossom.iff sweetblossom
|
||||
-132717072 object/tangible/food/spice/spice_thruster_head.iff thruster_head
|
||||
375006515 object/tangible/food/spice/spice_yarrock.iff yarrock
|
||||
@@ -0,0 +1,5 @@
|
||||
drop table cnvtest_errors;
|
||||
drop table cnvtest_objvar_patterns;
|
||||
drop table cnvtest_objvars;
|
||||
drop table cnvtest_removed_scripts;
|
||||
drop package conversion_test;
|
||||
@@ -0,0 +1,7 @@
|
||||
create table cnvtest_errors
|
||||
(
|
||||
object_id number,
|
||||
template_name varchar2(255),
|
||||
error_description varchar2(500),
|
||||
constraint pk_cnvtest_errors primary key (object_id)
|
||||
);
|
||||
@@ -0,0 +1,8 @@
|
||||
create table cnvtest_objvar_patterns
|
||||
(
|
||||
name_pattern varchar2(500),
|
||||
deprecated number,
|
||||
min_value float,
|
||||
max_value float,
|
||||
constraint pk_cnvtest_objvar_patterns primary key (name_pattern)
|
||||
);
|
||||
@@ -0,0 +1,9 @@
|
||||
create table cnvtest_objvars
|
||||
(
|
||||
name varchar2(500),
|
||||
id number,
|
||||
deprecated number,
|
||||
min_value float,
|
||||
max_value float,
|
||||
constraint pk_cnvtest_objvars primary key (id)
|
||||
);
|
||||
@@ -0,0 +1,5 @@
|
||||
create table cnvtest_removed_scripts
|
||||
(
|
||||
name varchar2(100),
|
||||
constraint pk_cnvtest_removed_scripts primary key (name)
|
||||
);
|
||||
@@ -0,0 +1,211 @@
|
||||
create or replace package body conversion_test
|
||||
as
|
||||
type ObjvarsType is table of cnvtest_objvars%rowtype index by varchar2(500);
|
||||
objvars ObjvarsType;
|
||||
type RemovedScriptsType is varray(100) of varchar2(102);
|
||||
removedScripts RemovedScriptsType;
|
||||
maxErrors number := 0;
|
||||
numErrors number;
|
||||
isInitialized boolean := false;
|
||||
|
||||
procedure setupData;
|
||||
procedure checkObjVar (object_id number, name varchar2, value varchar2);
|
||||
procedure registerErrorWithTemplateId (p_object_id number, p_template_id number, p_description varchar2);
|
||||
procedure registerError (p_object_id number, p_description varchar2);
|
||||
|
||||
procedure testObjects as
|
||||
begin
|
||||
setupData;
|
||||
|
||||
for objectRow in (select * from objects)
|
||||
loop
|
||||
if (removedScripts.count <> 0) then
|
||||
for i in removedScripts.first .. removedScripts.last
|
||||
loop
|
||||
if (objectRow.script_list like removedScripts(i)) then
|
||||
registerErrorWithTemplateId (objectRow.object_id, objectRow.object_template_id, 'has deprecated scripts (objects table)');
|
||||
exit;
|
||||
end if;
|
||||
end loop;
|
||||
end if;
|
||||
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_0_name, objectRow.objvar_0_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_1_name, objectRow.objvar_1_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_2_name, objectRow.objvar_2_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_3_name, objectRow.objvar_3_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_4_name, objectRow.objvar_4_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_5_name, objectRow.objvar_5_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_6_name, objectRow.objvar_6_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_7_name, objectRow.objvar_7_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_8_name, objectRow.objvar_8_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_9_name, objectRow.objvar_9_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_10_name, objectRow.objvar_10_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_11_name, objectRow.objvar_11_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_12_name, objectRow.objvar_12_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_13_name, objectRow.objvar_13_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_14_name, objectRow.objvar_14_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_15_name, objectRow.objvar_15_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_16_name, objectRow.objvar_16_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_17_name, objectRow.objvar_17_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_18_name, objectRow.objvar_18_value);
|
||||
checkObjVar(objectRow.object_id, objectRow.objvar_19_name, objectRow.objvar_19_value);
|
||||
end loop;
|
||||
end;
|
||||
|
||||
procedure testObjvars
|
||||
as
|
||||
begin
|
||||
setupData;
|
||||
|
||||
for objvarRow in (select distinct object_id, co.deprecated
|
||||
from object_variables ov, cnvtest_objvars co
|
||||
where ov.name_id = co.id
|
||||
and (co.deprecated = 1
|
||||
or case when translate(ov.value, 'a0123456789','a') is not null then null else to_number(ov.value) end < co.min_value
|
||||
or case when translate(ov.value, 'a0123456789','a') is not null then null else to_number(ov.value) end > co.max_value))
|
||||
loop
|
||||
if (objvarRow.deprecated = 1) then
|
||||
registerError(objvarRow.object_id, 'has deprecated objvars (object variables table)');
|
||||
else
|
||||
registerError(objvarRow.object_id, 'has objvars out of range (object variables table)');
|
||||
end if;
|
||||
end loop;
|
||||
end;
|
||||
|
||||
procedure testScripts
|
||||
as
|
||||
begin
|
||||
setupData;
|
||||
|
||||
for scriptRow in (select distinct object_id
|
||||
from scripts s, cnvtest_removed_scripts r
|
||||
where s.script=r.name)
|
||||
loop
|
||||
registerError(scriptRow.object_id, 'has deprecated scripts (scripts table)');
|
||||
end loop;
|
||||
end;
|
||||
|
||||
procedure testAll
|
||||
as
|
||||
begin
|
||||
testObjvars;
|
||||
commit;
|
||||
testObjects;
|
||||
commit;
|
||||
testScripts;
|
||||
commit;
|
||||
end;
|
||||
|
||||
procedure setupData
|
||||
as
|
||||
begin
|
||||
if isInitialized = false then
|
||||
dbms_output.enable(20000);
|
||||
|
||||
delete cnvtest_objvars;
|
||||
|
||||
insert into cnvtest_objvars
|
||||
select name, id, deprecated, min_value, max_value
|
||||
from object_variable_names ovn, cnvtest_objvar_patterns cop
|
||||
where ovn.name like cop.name_pattern
|
||||
and ovn.name not in (
|
||||
'crafting_components.armor_armorencumbrance',
|
||||
'crafting_components.armor_condition',
|
||||
'crafting_components.armor_general_protection',
|
||||
'crafting_components.armor_layer0',
|
||||
'crafting_components.armor_layer1',
|
||||
'crafting_components.armor_layer12',
|
||||
'crafting_components.armor_layer2',
|
||||
'crafting_components.armor_layer4',
|
||||
'crafting_components.armor_layer5',
|
||||
'crafting_components.armor_layer7'
|
||||
);
|
||||
|
||||
commit;
|
||||
|
||||
objvars.delete;
|
||||
for objvarRow in (select * from cnvtest_objvars)
|
||||
loop
|
||||
objvars(objvarRow.name) := objvarRow;
|
||||
end loop;
|
||||
|
||||
select * bulk collect into removedScripts from cnvtest_removed_scripts;
|
||||
if (removedScripts.count <> 0) then
|
||||
for i in removedScripts.first .. removedScripts.last
|
||||
loop
|
||||
removedScripts(i) := '%' || removedScripts(i) || ':%';
|
||||
end loop;
|
||||
end if;
|
||||
|
||||
numErrors := 0;
|
||||
|
||||
execute immediate 'analyze table cnvtest_objvars compute statistics';
|
||||
execute immediate 'analyze table cnvtest_removed_scripts compute statistics';
|
||||
end if;
|
||||
end;
|
||||
|
||||
procedure checkObjVar (object_id number, name varchar2, value varchar2)
|
||||
as
|
||||
begin
|
||||
if (objvars.exists(name)) then
|
||||
if (objvars(name).deprecated = 1) then
|
||||
registerError(object_id, 'has deprecated objvars (objects table)');
|
||||
else
|
||||
if (value < objvars(name).min_value or value > objvars(name).max_value) then
|
||||
registerError(object_id, 'has objvars out of range (objects table)');
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
|
||||
exception when others then
|
||||
registerError(object_id, 'has objvars that were expected to be numeric but were not (objects table)');
|
||||
end;
|
||||
|
||||
procedure registerError (p_object_id number, p_description varchar2)
|
||||
as
|
||||
templateId number;
|
||||
begin
|
||||
select object_template_id into templateId from objects where object_id = p_object_id;
|
||||
|
||||
registerErrorWithTemplateId (p_object_id, templateId, p_description);
|
||||
|
||||
exception when no_data_found then
|
||||
registerErrorWithTemplateId (p_object_id, 0, p_description || ', not found in objects table');
|
||||
end;
|
||||
|
||||
procedure registerErrorWithTemplateId (p_object_id number, p_template_id number, p_description varchar2)
|
||||
as
|
||||
templateName varchar2(255);
|
||||
previousMessage varchar2(500);
|
||||
l_description varchar2(500);
|
||||
begin
|
||||
l_description := p_description;
|
||||
|
||||
if (p_template_id <> 0) then
|
||||
begin
|
||||
select name into templateName from object_templates where id = p_template_id;
|
||||
|
||||
exception when no_data_found then
|
||||
templateName := p_template_id;
|
||||
l_description := l_description || ', object template id not found in object_templates';
|
||||
end;
|
||||
else
|
||||
templateName := 'none';
|
||||
end if;
|
||||
|
||||
insert into cnvtest_errors
|
||||
values (p_object_id, templateName, l_description);
|
||||
|
||||
numErrors := numErrors + 1;
|
||||
if (maxErrors<>0 and numErrors >= maxErrors) then
|
||||
commit;
|
||||
raise_application_error(-20000,'Too many errors found');
|
||||
end if;
|
||||
|
||||
exception when dup_val_on_index then
|
||||
update cnvtest_errors set error_description = error_description || ', ' || l_description
|
||||
where cnvtest_errors.object_id=p_object_id;
|
||||
end;
|
||||
end;
|
||||
/
|
||||
show errors
|
||||
@@ -0,0 +1,9 @@
|
||||
create or replace package conversion_test
|
||||
as
|
||||
procedure testAll;
|
||||
|
||||
procedure testObjects;
|
||||
procedure testObjvars;
|
||||
procedure testScripts;
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
foreach $file (@ARGV)
|
||||
{
|
||||
&parseFile($file);
|
||||
}
|
||||
|
||||
print "delete cnvtest_objvar_patterns;\n";
|
||||
|
||||
open (RANGEFILE,"objvar_ranges.txt");
|
||||
<RANGEFILE>;
|
||||
while (<RANGEFILE>)
|
||||
{
|
||||
chop;
|
||||
($objvar, $min, $max) = split "\t";
|
||||
print "insert into cnvtest_objvar_patterns values ('$objvar',0,$min,$max);\n";
|
||||
}
|
||||
close RANGEFILE;
|
||||
|
||||
foreach $objvar (keys %objvarToRemove)
|
||||
{
|
||||
$objvar =~ s/\*/%/;
|
||||
print "insert into cnvtest_objvar_patterns values ('".$objvar."',1,null,null);\n";
|
||||
}
|
||||
|
||||
foreach $script (keys %scriptToRemove)
|
||||
{
|
||||
$script =~ s/\*/%/;
|
||||
print "insert into cnvtest_removed_scripts values ('".$script."');\n";
|
||||
}
|
||||
|
||||
sub parseFile
|
||||
{
|
||||
open (INFILE, $_[0]);
|
||||
|
||||
$_=<INFILE>;
|
||||
@columnNames=split('\t');
|
||||
|
||||
while (<INFILE>)
|
||||
{
|
||||
@data=split('\t');
|
||||
for ($i=0; $i<@data; ++$i)
|
||||
{
|
||||
$column{$columnNames[$i]}=$data[$i];
|
||||
}
|
||||
$objvarRemove = $column{"Objvar Remove"};
|
||||
|
||||
$objvarRemove =~ s/^\"//;
|
||||
$objvarRemove =~ s/\"$//;
|
||||
@objvarList=split(',',$objvarRemove);
|
||||
for ($i=0; $i<@objvarList; ++$i)
|
||||
{
|
||||
$objvarToRemove{$objvarList[$i]}=1;
|
||||
}
|
||||
|
||||
$objvarRemove = $column{"RemoveObjVar"};
|
||||
|
||||
$objvarRemove =~ s/^\"//;
|
||||
$objvarRemove =~ s/\"$//;
|
||||
@objvarList=split(',',$objvarRemove);
|
||||
for ($i=0; $i<@objvarList; ++$i)
|
||||
{
|
||||
$objvarToRemove{$objvarList[$i]}=1;
|
||||
}
|
||||
|
||||
$scriptRemove = $column{"Script Remove"};
|
||||
|
||||
$scriptRemove =~ s/^\"//;
|
||||
$scriptRemove =~ s/\"$//;
|
||||
@scriptList=split(',',$scriptRemove);
|
||||
for ($i=0; $i<@scriptList; ++$i)
|
||||
{
|
||||
$scriptToRemove{$scriptList[$i]}=1;
|
||||
}
|
||||
|
||||
$scriptRemove = $column{"RemoveScript"};
|
||||
|
||||
$scriptRemove =~ s/^\"//;
|
||||
$scriptRemove =~ s/\"$//;
|
||||
@scriptList=split(',',$scriptRemove);
|
||||
for ($i=0; $i<@scriptList; ++$i)
|
||||
{
|
||||
$scriptToRemove{$scriptList[$i]}=1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
name pattern min value max value
|
||||
powerup.usesLeft 1 100
|
||||
powerup.effect 1 100
|
||||
powerup.efficiency 1 100
|
||||
powerup.damage -0.3 0.3
|
||||
powerup.speed -0.3 0.3
|
||||
powerup.accuracy -30 30
|
||||
powerup.actionCost -0.3 0.3
|
||||
powerup.wound 0 0.3
|
||||
powerup.elementalDamage 0 0.3
|
||||
effectiveness 0 2
|
||||
duration 0 2
|
||||
healing.power 50 1000
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/usr/local/bin/bash
|
||||
|
||||
date
|
||||
sqlplus $1 < cleanup.sql
|
||||
sqlplus $1 < setup.sql
|
||||
perl make_test_data.pl ../*.txt >/tmp/temp.sql
|
||||
sqlplus $1 < /tmp/temp.sql
|
||||
echo "exec conversion_test.testAll;" > /tmp/temp.sql
|
||||
echo "exit;" >> /tmp/temp.sql
|
||||
sqlplus $1 < /tmp/temp.sql
|
||||
date
|
||||
@@ -0,0 +1,6 @@
|
||||
@cnvtest_errors.tab
|
||||
@cnvtest_objvar_patterns.tab
|
||||
@cnvtest_objvars.tab
|
||||
@cnvtest_removed_scripts.tab
|
||||
@conversion_test.plsqlh
|
||||
@conversion_test.plsql
|
||||
@@ -0,0 +1,135 @@
|
||||
template_id crafted_object_template min_damage_from min_damage_to max_damage_from max_damage_to attack_speed_from attack_speed_to wound_chance_from wound_chance_to special_attack_cost_to accuracy_to min_range_to max_range_to damage_type elemental_type elemental_value add_objvars min_damage_low min_damage_high max_damage_low max_damage_high attack_speed_low attack_speed_high min_wound max_wound accuracy_low Accuracy_high Action_low Action_High Damage_Type Elemental_Type Elemental_High Elemental_Low
|
||||
1369190307 component/blaster_pistol_barrel "[0:10,10:20]" "[8:14,14:16]" "[0:10,10:20]" "[21:26,26:30]" [-10:-9] [-10:0] "[0:5,5:6]" "[0:5,5:6]" -3 7 13 19 25 -10 0 0 5 0 0 -5 5
|
||||
-1438464920 component/blaster_pistol_barrel_advanced "[0:25,25:50]" "[13:26,26:30]" "[0:25,25:50]" "[42:53,53:60]" [-12:0] [-20:0] "[0:15,15:16]" "[0:15,15:18]" -6 12 25 38 50 -20 0 0 15 0 0 -10 10
|
||||
702649693 component/blaster_power_handler "[0:10,10:20]" "[8:14,14:16]" "[0:20,20:40]" "[21:26,26:30]" [-5:0] [-10:0] -3 7 13 19 25 -10 0 0 0 0 0 -5 5
|
||||
34919568 component/blaster_power_handler_advanced "[0:25,25:50]" "[13:26,26:30]" "[0:50,50:100]" "[42:53,53:60]" [-5:0] [-20:0] -6 12 25 38 50 -20 0 0 0 0 0 -10 10
|
||||
-1565904814 component/blaster_rifle_barrel "[0:10,10:20]" "[8:14,14:16]" "[0:10,10:20]" "[21:26,26:30]" [-5:0] [-10:0] "[0:5,5:10]" "[0:5,5:6]" -3 7 13 19 25 -10 0 0 5 0 0 -5 5
|
||||
-778602894 component/blaster_rifle_barrel_advanced "[0:25,25:50]" "[13:26,26:30]" "[0:25,25:50]" "[42:53,53:60]" [-7:0] [-20:0] [0:11] "[0:10,10:12]" -6 12 25 38 50 -20 0 0 10 0 0 -10 10
|
||||
-1382616459 component/chemical_dispersion_mechanism "[0:10,10:20]" "[8:14,14:16]" "[0:10,10:20]" "[21:26,26:30]" 7 13 19 25 -10 0 0 0 0 0 0 0
|
||||
-900058289 component/chemical_dispersion_mechanism_advanced "[0:20,20:40]" "[13:26,26:30]" "[0:20,20:40]" "[42:53,53:60]" 12 25 38 50 -20 0 0 0 0 0 0 0
|
||||
-1566891826 component/geonosian_reinforcement_core "[0:50,50:100]" "[13:26,26:30]" "[0:50,50:100]" "[42:53,53:60]" [-7:0] [-20:0] "[0:15,15:40]" "[0:0,0:0]" 12 25 38 50 -20 0 0 0 0 0 0 0
|
||||
-1474613882 component/projectile_feed_mechanism "[0:10,10:20]" "[8:14,14:16]" "[0:20,20:40]" "[21:26,26:30]" [-5:0] [-10:0] -3 7 13 19 25 -10 0 0 0 0 0 -5 5
|
||||
590597969 component/projectile_feed_mechanism_advanced "[0:25,25:50]" "[13:26,26:30]" "[0:50,50:100]" "[42:53,53:60]" [-5:0] [-20:0] -6 12 25 38 50 -20 0 0 0 0 0 -10 10
|
||||
6493761 component/projectile_pistol_barrel "[0:10,10:20]" "[8:14,14:16]" "[0:20,20:40]" "[21:26,26:30]" [-5:-4] [-10:0] "[0:5,5:20]" "[0:5,5:6]" -3 7 13 19 25 -10 0 0 5 0 0 -5 5
|
||||
2132239519 component/projectile_pistol_barrel_advanced "[0:25,25:50]" "[13:26,26:30]" "[0:25,25:50]" "[42:53,53:60]" [-5:0] [-20:0] [0:11] "[0:10,10:12]" -6 12 25 38 50 -20 0 0 10 0 0 -10 10
|
||||
-721077210 component/projectile_rifle_barrel "[0:10,10:20]" "[8:14,14:16]" "[0:10,10:20]" "[21:26,26:30]" [-7:0] [-10:0] "[0:5,5:15]" "[0:5,5:6]" -3 7 13 19 25 -10 0 0 5 0 0 -5 5
|
||||
320220025 component/projectile_rifle_barrel_advanced "[0:25,25:50]" "[13:26,26:30]" "[0:25,25:50]" "[42:53,53:60]" [-7:0] [-20:0] "[0:10,10:35]" "[0:10,10:12]" -6 12 25 38 50 -20 0 0 10 0 0 -10 10
|
||||
-225492986 component/reinforcement_core "[0:20,20:40]" "[8:14,14:16]" "[0:20,20:40]" "[21:26,26:30]" [-5:0] [-10:0] [0:11] "[0:10,10:12]" -3 7 13 19 25 -10 0 0 10 0 0 -5 5
|
||||
1995174592 component/reinforcement_core_advanced "[0:50,50:100]" "[13:26,26:30]" "[0:50,50:100]" "[42:53,53:60]" [-7:0] [-20:0] "[0:10,10:20]" "[0:15,15:18]" -6 12 25 38 50 -20 0 0 15 0 0 -10 10
|
||||
403078591 component/scope_weapon [2:2] [0:10] "[0:10,10:15]" "[0:10,10:12]" 8 0 10 0 10 0 10 0 0
|
||||
-269033971 component/scope_weapon_advanced [10:10] [0:20] "[0:20,20:40]" "[0:20,20:24]" 16 0 20 0 20 0 20 0 0
|
||||
-651693115 component/stock [10:20] [0:15] "[0:5,5:20]" "[0:5,5:6]" -12 0 15 0 5 0 0 -15 0
|
||||
-1571384798 component/stock_advanced [10:20] [0:25] "[0:15,15:30]" "[0:15,15:18]" -20 0 25 0 15 0 0 -25 0
|
||||
716551990 component/sword_core "[0:20,20:40]" "[8:14,14:16]" "[0:20,20:40]" "[21:26,26:30]" [-5:0] [-10:0] "[0:10,10:11]" "[0:10,10:12]" -3 7 13 19 25 -10 0 0 10 0 0 -5 5
|
||||
1944034997 component/sword_core_advanced "[0:50,50:100]" "[13:26,26:30]" "[0:50,50:100]" "[42:53,53:60]" [-7:0] [-20:0] "[0:15,15:30]" "[0:15,15:18]" -6 12 25 38 50 -20 0 0 15 0 0 -10 10
|
||||
1855721592 component/vibro_unit_nightsister "[0:75,75:150]" "[15:29,29:34]" "[0:90,90:180]" "[46:58,58:66]" [-4:-1] [-20:5] "[0:30,30:60]" "[10:30,30:36]" -7 14 28 42 55 -20 5 10 30 0 0 -12 12
|
||||
981088834 quest_rifle_projectile_tusken "[57:66,66:89]" "[217:413,413:472]" "[195:243,243:359]" "[648:824,824:942]" "[7.66:12.72,12.72:14.68]" "[2.25:2.5,2.5:3]" "[29:29,29:30]" "[1:17,17:20.4]" 104 0 0 65 1 197 393 589 785 2.5 3 1 17 0 0 95 140 kinetic Energy 2
|
||||
-637703116 battleaxe "[76:160,160:308]" "[30:56,56:64]" "[124:232,232:425]" "[87:110,110:126]" "[1.93:3,3:4.95]" "[2.25:2.5,2.5:3]" "[19:38,38:45]" "[5:25,25:30]" 104 0 0 5 1 27 53 79 105 2.5 3 5 25 0 0 95 140 kinetic Kinetic 1
|
||||
-1779174489 battleaxe_quest "[82:95,95:146]" "[30:58,58:66]" "[137:160,160:251]" "[91:116,116:132]" "[2.45:4,4:4.74]" "[2.25:2.5,2.5:3]" "[19:19,19:23]" "[5:25,25:30]" 104 0 0 5 1 27 55 83 110 2.5 3 5 25 0 0 95 140 kinetic acid 128
|
||||
1840338268 executioners_hack "[132:190,190:214]" "[178:339,339:388]" "[263:383,383:474]" "[532:677,677:774]" "[1.95:2.41,2.41:3.66]" "[2.25:2.5,2.5:3]" "[31:38,38:46]" "[2:24,24:28.8]" 104 0 0 5 1 162 323 484 645 2.5 3 2 24 0 0 95 140 kinetic cold 64
|
||||
237038605 cleaver "[80:130,130:158]" "[57:108,108:124]" "[196:290,290:539]" "[169:215,215:246]" "[1.52:2.41,2.41:4.01]" "[2.25:2.5,2.5:3]" "[39:52,52:78]" "[9:35,35:42]" 104 0 0 5 1 52 103 154 205 2.5 3 9 35 0 0 95 140 kinetic electric 256
|
||||
653612816 katana "[39:83,83:140]" "[85:163,163:186]" "[211:331,331:656]" "[256:326,326:372]" "[1:1.74,1.74:3.28]" "[1.8:2,2:2.5]" "[32:47,47:81]" "[5:27,27:32.4]" 84 0 0 5 1 77 155 233 310 2 2.5 5 27 0 0 75 120 kinetic heat 32
|
||||
1608037452 katana_quest "[16:19,19:26]" "[87:166,166:190]" "[174:207,207:329]" "[261:331,331:378]" "[1.97:3.1,3.1:3.69]" "[1.8:2,2:2.5]" "[24:24,24:28]" "[7:30,30:36]" 84 0 0 5 1 79 158 237 315 2 2.5 7 30 0 0 75 120 kinetic
|
||||
-613167286 maul "[118:199,199:445]" "[283:541,541:618]" "[430:659,659:1105]" "[850:1082,1082:1236]" "[1.24:3.72,3.72:5.86]" "[2.25:2.5,2.5:3]" "[26:37,37:62]" "[1:20,20:24]" 104 0 0 5 1 257 515 773 1030 2.5 3 1 20 0 0 95 140 kinetic
|
||||
-245341807 2h_sword_scythe "[171:252,252:301]" "[224:428,428:490]" "[300:448,448:579]" "[673:856,856:978]" "[.97:1.73,1.73:2.77]" "[2.25:2.5,2.5:3]" "[22:29,29:47]" "[10:25,25:30]" 104 0 0 5 1 128 81 204 408 612 815 2.5 3 10 25 0 0 95 140 kinetic acid 45 90
|
||||
-1019635633 quest_battleaxe "[50:55,55:67]" "[32:61,61:70]" "[84:92,92:113]" "[96:121,121:138]" "[3.89:5.42,5.42:6]" "[2.25:2.5,2.5:3]" "[11:11,11:13]" "[5:25,25:30]" 104 0 0 5 1 29 58 87 115 2.5 3 5 25 0 0 95 140 kinetic
|
||||
-449112830 quest_maul "[50:56,56:66]" "[286:546,546:624]" "[225:253,253:299]" "[858:1092,1092:1248]" "[5.8:7.89,7.89:8.69]" "[2.25:2.5,2.5:3]" "[10:10,10:12]" "[5:25,25:30]" 104 0 0 5 1 260 520 780 1040 2.5 3 5 25 0 0 95 140 kinetic
|
||||
-526113597 axe "[5:57,57:610]" "[24:45,45:52]" "[81:143,143:620]" "[70:89,89:102]" "[1.36:5.44,5.44:6.94]" "[2.25:2.5,2.5:3]" "[8:14,14:22]" "[1:20,20:24]" 104 0 0 5 1 22 43 64 85 2.5 3 1 20 0 0 95 140 kinetic
|
||||
589649861 axe_vibroaxe "[42:201,201:590]" "[178:339,339:388]" "[148:331,331:634]" "[532:677,677:774]" "[1.2:2.81,2.81:6.2]" "[2.25:2.5,2.5:3]" "[15:29,29:66]" "[1:14,14:16.8]" 104 0 0 5 1 162 323 484 645 2.5 3 1 14 0 0 95 140 kinetic
|
||||
-20005656 baton_gaderiffi "[39:178,178:610]" "[85:163,163:186]" "[90:297,297:677]" "[256:326,326:372]" "[1.59:2.31,2.31:6.03]" "[1.8:2,2:2.5]" "[9:40,40:74]" "[1:21,21:25.2]" 84 0 0 5 1 77 155 233 310 2 2.5 1 21 0 0 75 120 kinetic
|
||||
257663710 baton_stun "[57:173,173:783]" "[209:400,400:457]" "[96:254,254:626]" "[629:800,800:914]" "[1.09:1.68,1.68:3.01]" "[1.8:2,2:2.5]" "[6:21,21:42]" "[1:3,3:3.6]" 84 0 0 5 2 256 58 190 381 572 762 2 2.5 1 3 0 0 75 120 energy electric 30 65
|
||||
-639753330 victor_baton_gaderiffi "[48:48,48:48]" "[85:163,163:186]" "[148:148,148:148]" "[256:326,326:372]" "[3.8:3.8,3.8:3.8]" "[1.8:2,2:2.5]" "[11:11,11:11]" "[2:25,25:30]" 84 0 0 5 1 77 155 233 310 2 2.5 2 25 0 0 75 120 kinetic
|
||||
-730685311 knife_twilek_dagger "[6:28,28:460]" "[19:36,36:41]" "[23:50,50:470]" "[56:71,71:82]" "[1.03:3.27,3.27:4.13]" "[1.8:2,2:2.5]" "[5:9,9:38]" "[1:12,12:14.4]" 84 0 0 5 1 17 34 51 68 2 2.5 1 12 0 0 75 120 kinetic
|
||||
-130243512 knife_donkuwah "[9:35,35:54]" "[19:36,36:41]" "[15:54,54:81]" "[56:71,71:82]" "[1.23:2.13,2.13:4.94]" "[1.8:2,2:2.5]" "[3:10,10:16]" "[1:11,11:13.2]" 84 0 0 5 1 17 34 51 68 2 2.5 1 11 0 0 75 120 kinetic
|
||||
1756821101 knife_janta "[15:26,26:46]" "[19:36,36:41]" "[35:58,58:103]" "[56:70,70:80]" "[1.62:3.24,3.24:4.27]" "[1.8:2,2:2.5]" "[3:6,6:12]" "[1:13,13:15.6]" 84 0 0 5 1 17 34 51 67 2 2.5 1 13 0 0 75 120 kinetic
|
||||
-1501822488 knife_stone "[4:30,30:640]" "[19:36,36:41]" "[12:37,37:650]" "[56:71,71:82]" "[1.46:4.09,4.09:4.72]" "[1.8:2,2:2.5]" "[4:5,5:14]" "[1:10,10:12]" 84 0 0 5 1 17 34 51 68 2 2.5 1 10 0 0 75 120 kinetic
|
||||
-132487792 knife_survival "[9:22,22:640]" "[19:36,36:41]" "[23:37,37:650]" "[56:71,71:82]" "[.86:3.93,3.93:4.34]" "[1.8:2,2:2.5]" "[4:6,6:20]" "[1:11,11:13.2]" 84 0 0 5 1 17 34 51 68 2 2.5 1 11 0 0 75 120 kinetic
|
||||
1982554682 knife_vibroblade "[-17:104,104:640]" "[46:87,87:100]" "[55:204,204:650]" "[136:173,173:198]" "[1:1.79,1.79:4.21]" "[1.8:2,2:2.5]" "[7:28,28:34]" "[1:15,15:18]" 84 0 0 5 2 42 83 124 165 2 2.5 1 15 0 0 75 120 energy
|
||||
-913097330 knife_vibroblade_quest "[14:16,16:22]" "[46:89,89:102]" "[86:99,99:131]" "[141:179,179:204]" "[1.91:2.92,2.92:3.34]" "[1.8:2,2:2.5]" "[8:8,8:10]" "[1:20,20:24]" 84 0 0 5 2 42 85 128 170 2 2.5 1 20 0 0 75 120 energy
|
||||
-402333683 lance_vibro_controller_fp "[0:49,49:370]" "[96:182,182:208]" "[119:338,338:1411]" "[285:362,362:414]" "[1.99:2.76,2.76:6.99]" "[2.03:2.25,2.25:2.75]" "[7:34,34:65]" "[1:18,18:21.6]" 94 0 0 5 2 87 173 259 345 2.25 2.75 1 18 0 0 85 130 energy
|
||||
-1811261900 lance_vibro_nightsister "[5:16,16:52]" "[160:305,305:348]" "[96:328,328:1010]" "[479:609,609:696]" "[1:3.39,3.39:6.71]" "[2.03:2.25,2.25:2.75]" "[6:20,20:90]" "[1:13,13:15.6]" 94 0 0 5 2 145 290 435 580 2.25 2.75 1 13 0 0 85 130 energy
|
||||
-1178706532 lance_nightsister "[54:95,95:113]" "[255:486,486:556]" "[298:478,478:592]" "[763:971,971:1110]" "[2.2:2.66,2.66:4.17]" "[2.03:2.25,2.25:2.75]" "[29:47,47:56]" "[10:35,35:42]" 94 0 0 5 2 232 463 694 925 2.25 2.75 10 35 0 0 85 130 energy
|
||||
-1137089652 staff_janta "[20:36,36:58]" "[25:48,48:55]" "[52:93,93:148]" "[76:97,97:110]" "[2.43:3.89,3.89:5.36]" "[2.03:2.25,2.25:2.75]" "[3:4,4:7]" "[1:10,10:12]" 94 0 0 5 1 23 46 69 92 2.25 2.75 1 10 0 0 85 130 kinetic
|
||||
-473813792 staff_metal "[41:97,97:440]" "[39:74,74:84]" "[63:142,142:450]" "[116:147,147:168]" "[2:4.45,4.45:6.54]" "[2.03:2.25,2.25:2.75]" "[3:7,7:11]" "[1:7,7:8.4]" 94 0 0 5 1 35 70 105 140 2.25 2.75 1 7 0 0 85 130 kinetic
|
||||
-718648728 staff "[22:31,31:67]" "[21:40,40:46]" "[51:72,72:157]" "[63:79,79:90]" "[1.8:5.15,5.15:6.03]" "[2.03:2.25,2.25:2.75]" "[3:4,4:11]" "[1:7,7:8.4]" 94 0 0 5 1 19 38 57 75 2.25 2.75 1 7 0 0 85 130 kinetic
|
||||
238936831 staff_reinforced "[21:49,49:330]" "[26:51,51:59]" "[50:99,99:340]" "[81:103,103:118]" "[.86:4.83,4.83:6.11]" "[2.03:2.25,2.25:2.75]" "[2:7,7:24]" "[1:7,7:8.4]" 94 0 0 5 1 24 49 74 98 2.25 2.75 1 7 0 0 85 130 kinetic
|
||||
1358850609 lance_vibro "[33:122,122:383]" "[255:486,486:556]" "[142:401,401:1407]" "[763:971,971:1110]" "[.95:2.78,2.78:5.98]" "[2.03:2.25,2.25:2.75]" "[22:52,52:133]" "[4:26,26:31.2]" 94 0 0 5 2 232 463 694 925 2.25 2.75 4 26 0 0 85 130 energy
|
||||
-1088166271 axe_vibro "[58:165,165:509]" "[178:339,339:388]" "[238:568,568:2041]" "[532:677,677:774]" "[1.1:2.63,2.63:5.97]" "[2.25:2.5,2.5:3]" "[29:65,65:156]" "[1:14,14:16.8]" 104 0 0 5 1 162 323 484 645 2.5 3 1 14 0 0 95 140 kinetic
|
||||
102348899 knuckler_vibro "[21:59,59:440]" "[118:224,224:256]" "[114:206,206:450]" "[351:446,446:510]" "[1:1.39,1.39:2.66]" "[2.48:2.75,2.75:3.25]" "[25:48,48:58]" "[4:26,26:31.2]" 122 0 0 5 2 107 213 319 425 2.75 3.25 4 26 0 0 115 150 energy
|
||||
-673780945 sword "[-1:50,50:640]" "[30:56,56:64]" "[46:122,122:650]" "[87:110,110:126]" "[1.31:3.47,3.47:4.85]" "[2.25:2.5,2.5:3]" "[5:21,21:59]" "[1:18,18:21.6]" 104 0 0 5 1 27 53 79 105 2.5 3 1 18 0 0 95 140 kinetic
|
||||
213992376 sword_curved "[23:108,108:590]" "[85:163,163:186]" "[96:240,240:600]" "[256:326,326:372]" "[.84:1.38,1.38:3.64]" "[1.8:2,2:2.5]" "[18:47,47:78]" "[1:24,24:28.8]" 84 0 0 5 1 77 155 233 310 2 2.5 1 24 0 0 75 120 kinetic
|
||||
-1330392160 sword_ryyk_blade "[17:111,111:440]" "[198:378,378:432]" "[113:232,232:507]" "[594:756,756:864]" "[.98:1.65,1.65:3.91]" "[1.8:2,2:2.5]" "[20:52,52:74]" "[5:29,29:34.8]" 84 0 0 5 1 180 360 540 720 2 2.5 5 29 0 0 75 120 kinetic
|
||||
1834662895 sword_curved_nyax "[16:19,19:24]" "[171:326,326:372]" "[74:88,88:117]" "[512:651,651:744]" "[2.64:3.69,3.69:4.16]" "[1.8:2,2:2.5]" "[11:13,13:19]" "[5:27,27:32.4]" 84 0 0 5 1 155 310 465 620 2 2.5 5 27 0 0 75 120 kinetic
|
||||
-1781845673 sword_nyax "[24:28,28:40]" "[142:271,271:310]" "[66:80,80:113]" "[426:541,541:618]" "[2.76:4.17,4.17:4.68]" "[2.25:2.5,2.5:3]" "[9:10,10:14]" "[1:20,20:24]" 104 0 0 5 1 129 258 387 515 2.5 3 1 20 0 0 95 140 kinetic
|
||||
1214765971 sword_rantok "[42:51,51:70]" "[112:215,215:246]" "[141:171,171:229]" "[339:431,431:492]" "[1.94:2.87,2.87:3.49]" "[1.8:2,2:2.5]" "[20:20,20:24]" "[5:23,23:27.6]" 84 0 0 5 1 102 205 308 410 2 2.5 5 23 0 0 75 120 kinetic
|
||||
-1213235742 carbine_blaster_cdef "[15:24,24:171]" "[22:42,42:48]" "[31:49,49:269]" "[66:83,83:95]" "[1:3.61,3.61:4.41]" "[2.03:2.25,2.25:2.75]" "[4:11,11:75]" "[1:5,5:6]" 94 0 0 35 2 20 40 60 79 2.25 2.75 1 5 0 0 85 130 energy
|
||||
-1498919413 carbine_blaster_cdef_corsec "[14:22,22:60]" "[24:45,45:52]" "[33:49,49:134]" "[70:89,89:102]" "[1:3.1,3.1:3.71]" "[2.03:2.25,2.25:2.75]" "[8:11,11:25]" "[2:4,4:4.8]" 94 0 0 35 2 22 43 64 85 2.25 2.75 2 4 0 0 85 130 energy
|
||||
-1109444980 rifle_light_blaster_dh17_carbine "[14:95,95:315]" "[26:49,49:56]" "[60:218,218:581]" "[77:98,98:112]" "[1:2.27,2.27:4.61]" "[2.03:2.25,2.25:2.75]" "[2:23,23:51]" "[1:12,12:14.4]" 94 0 0 40 2 24 47 70 93 2.25 2.75 1 12 0 0 85 130 energy
|
||||
-379196495 rifle_light_blaster_dh17_carbine_black "[17:46,46:440]" "[25:49,49:56]" "[68:104,104:578]" "[78:99,99:113]" "[1.87:3.67,3.67:4.18]" "[2.03:2.25,2.25:2.75]" "[6:7,7:17]" "[1:15,15:18]" 94 0 0 30 2 23 47 71 94 2.25 2.75 1 15 0 0 85 130 energy
|
||||
648215202 rifle_light_blaster_dh17_carbine_snubnose "[27:118,118:440]" "[52:98,98:112]" "[87:260,260:506]" "[153:194,194:222]" "[1.08:1.79,1.79:4.32]" "[2.03:2.25,2.25:2.75]" "[5:28,28:48]" "[1:12,12:14.4]" 94 0 0 35 2 47 93 139 185 2.25 2.75 1 12 0 0 85 130 energy
|
||||
-279076105 rifle_disrupter_dxr6 "[102:188,188:290]" "[213:406,406:464]" "[161:291,291:552]" "[638:812,812:928]" "[1.57:2.73,2.73:4.46]" "[2.25:2.5,2.5:3]" "[19:42,42:60]" "[1:20,20:24]" 104 0 0 65 2 194 387 580 773 2.5 3 1 20 0 0 95 140 energy
|
||||
-2138350593 carbine_e11_mk2 "[22:128,128:399]" "[255:486,486:556]" "[70:224,224:419]" "[763:971,971:1110]" "[1.25:2.2,2.2:4.06]" "[2.03:2.25,2.25:2.75]" "[5:31,31:46]" "[2:25,25:30]" 94 0 0 50 2 232 463 694 925 2.25 2.75 2 25 0 0 85 130 energy
|
||||
-1839044042 rifle_light_blaster_e11_carbine_quest "[66:133,133:187]" "[99:189,189:216]" "[136:254,254:531]" "[297:378,378:432]" "[1:1.96,1.96:3.34]" "[2.03:2.25,2.25:2.75]" "[14:36,36:46]" "[1:13,13:15.6]" 94 0 0 40 2 90 180 270 360 2.25 2.75 1 13 0 0 85 130 energy
|
||||
-1601393927 rifle_light_blaster_e11_carbine_victor "[50:50,50:50]" "[101:192,192:220]" "[350:350,350:350]" "[301:383,383:438]" "[4:4,4:4]" "[2.03:2.25,2.25:2.75]" "[20:20,20:20]" "[2:20,20:24]" 94 0 0 40 2 92 183 274 365 2.25 2.75 2 20 0 0 85 130 energy
|
||||
418740352 rifle_light_blaster_ee3 "[39:147,147:290]" "[129:245,245:280]" "[111:304,304:556]" "[384:488,488:558]" "[1.25:-2.81,-2.81:8.36]" "[2.03:2.25,2.25:2.75]" "[3:29,29:44]" "[1:9,9:10.8]" 94 0 0 50 2 117 233 349 465 2.25 2.75 1 9 0 0 85 130 energy
|
||||
1778522271 carbine_e5 "[96:180,180:290]" "[255:486,486:556]" "[165:298,298:650]" "[763:971,971:1110]" "[1.24:2.56,2.56:4.17]" "[2.03:2.25,2.25:2.75]" "[15:39,39:48]" "[1:9,9:10.8]" 94 0 0 50 2 232 463 694 925 2.25 2.75 1 9 0 0 85 130 energy
|
||||
764829944 rifle_light_blaster_laser_carbine "[10:104,104:460]" "[206:392,392:448]" "[191:433,433:834]" "[615:782,782:894]" "[1.01:2.46,2.46:4.64]" "[2.03:2.25,2.25:2.75]" "[11:39,39:66]" "[1:16,16:19.2]" 94 0 0 50 2 32 63 187 373 559 745 2.25 2.75 1 16 0 0 85 130 energy heat 35 70
|
||||
-627137144 carbine_nym_slugthrower "[95:122,122:181]" "[180:344,344:394]" "[198:270,270:468]" "[541:688,688:786]" "[1.79:3.28,3.28:4.29]" "[2.03:2.25,2.25:2.75]" "[16:16,16:22]" "[6:16,16:19.2]" 94 0 0 50 1 128 144 164 328 492 655 2.25 2.75 6 16 0 0 85 130 kinetic acid 80 160
|
||||
100102071 heavy_acid_beam "[914:1250,1250:1426]" "[178:339,339:388]" "[2744:3876,3876:4317]" "[532:677,677:774]" "[3.05:3.53,3.53:5.97]" "[2.48:2.75,2.75:3.25]" "[31:45,45:49]" "[9:35,35:42]" 122 0 0 65 2 128 189 "('intAOEDamagePercent',2,'0.0'):('intWeaponType',0,'6'):('strWeaponType',4,'acid_beam')" 162 323 484 645 2.75 3.25 9 35 0 0 115 150 energy acid 105 210
|
||||
949442296 heavy_lightning_beam "[850:1707,1707:1706]" "[212:405,405:463]" "[2052:3895,3895:4057]" "[637:811,811:926]" "[3.62:4.45,4.45:7.31]" "[2.48:2.75,2.75:3.25]" "[20:34,34:37]" "[3:23,23:27.6]" 122 0 0 40 2 256 200 "('intAOEDamagePercent',2,'1.0'):('intWeaponType',0,'7'):('strWeaponType',4,'lightning_beam')" 193 386 579 772 2.75 3.25 3 23 0 0 115 150 energy electric 120 220
|
||||
180006972 heavy_particle_beam "[1839:2296,2296:3015]" "[155:296,296:338]" "[2775:3892,3892:4930]" "[465:591,591:676]" "[2.58:3.19,3.19:6.68]" "[2.48:2.75,2.75:3.25]" "[16:29,29:34]" "[1:20,20:24]" 122 0 0 40 2 32 135 "('intAOEDamagePercent',2,'1.0'):('intWeaponType',0,'4'):('strWeaponType',4,'particle_beam')" 141 282 423 563 2.75 3.25 1 20 0 0 115 150 energy heat 75 150
|
||||
-926822510 heavy_rocket_launcher "[477:1567,1567:1739]" "[101:194,194:222]" "[865:4849,4849:5334]" "[306:389,389:444]" "[4.46:5.35,5.35:13.47]" "[2.48:2.75,2.75:3.25]" "[14:41,41:47]" "[7:31,31:37.2]" 122 0 0 64 1 32 180 "('intWeaponType',0,'2'):('strWeaponType',4,'rocket_launcher')" 92 185 278 370 2.75 3.25 7 31 0 0 115 150 kinetic heat 100 200
|
||||
-633473500 quest_heavy_acid_beam "[61:68,68:84]" "[178:339,339:388]" "[439:489,489:609]" "[532:677,677:774]" "[9.59:12.64,12.64:14.26]" "[2.48:2.75,2.75:3.25]" "[19:19,19:19]" "[4:25,25:30]" 122 0 0 65 2 128 198 "('intAOEDamagePercent',2,'0.0'):('intWeaponType',0,'6'):('strWeaponType',4,'acid_beam')" 162 323 484 645 2.75 3.25 4 25 0 0 115 150 energy acid 110 220
|
||||
451466626 quest_heavy_particle_beam "[135:149,149:189]" "[160:305,305:348]" "[203:223,223:283]" "[479:609,609:696]" "[7.07:9.32,9.32:10.51]" "[2.48:2.75,2.75:3.25]" "[11:11,11:11]" "[8:25,25:30]" 122 0 0 40 2 32 126 "('intAOEDamagePercent',2,'1.0'):('intWeaponType',0,'4'):('strWeaponType',4,'particle_beam')" 145 290 435 580 2.75 3.25 8 25 0 0 115 150 energy heat 70 140
|
||||
-82570045 pistol_blaster_cdef "[13:24,24:590]" "[19:36,36:41]" "[30:45,45:600]" "[56:70,70:80]" "[1.42:3.76,3.76:4.18]" "[1.8:2,2:2.5]" "[1:3,3:13]" "[1:5,5:6]" 84 0 0 35 2 17 34 51 67 2 2.5 1 5 0 0 75 120 energy
|
||||
-860173634 pistol_blaster_cdef_corsec "[15:20,20:33]" "[19:36,36:41]" "[35:46,46:76]" "[56:71,71:82]" "[1.81:3.14,3.14:3.7]" "[1.8:2,2:2.5]" "[2:2,2:5]" "[1:12,12:14.4]" 84 0 0 35 2 17 34 51 68 2 2.5 1 12 0 0 75 120 energy
|
||||
252668529 pistol_blaster_d18 "[-6:46,46:640]" "[22:42,42:48]" "[24:99,99:650]" "[66:84,84:96]" "[.54:2.13,2.13:3.57]" "[1.8:2,2:2.5]" "[1:13,13:51]" "[1:8,8:9.6]" 84 0 0 35 2 20 40 60 80 2 2.5 1 8 0 0 75 120 energy
|
||||
1866781530 pistol_de_10 "[129:198,198:247]" "[230:439,439:502]" "[263:534,534:772]" "[690:877,877:1002]" "[1.54:2.49,2.49:4.21]" "[1.8:2,2:2.5]" "[32:61,61:91]" "[1:20,20:24]" 84 0 0 35 2 209 418 627 835 2 2.5 1 20 0 0 75 120 energy
|
||||
-245080147 pistol_blaster_dh17 "[30:135,135:440]" "[112:215,215:246]" "[58:191,191:450]" "[339:431,431:492]" "[.42:.97,.97:3.75]" "[1.8:2,2:2.5]" "[7:28,28:58]" "[1:13,13:15.6]" 84 0 0 35 2 102 205 308 410 2 2.5 1 13 0 0 75 120 energy
|
||||
1684501073 pistol_blaster_dl44 "[0:75,75:490]" "[35:66,66:76]" "[52:186,186:536]" "[103:131,131:150]" "[.81:1.63,1.63:4.3]" "[1.8:2,2:2.5]" "[1:22,22:54]" "[1:9,9:10.8]" 84 0 0 35 2 32 63 94 125 2 2.5 1 9 0 0 75 120 energy
|
||||
-1925049902 pistol_blaster_dl44_metal "[-5:95,95:640]" "[228:434,434:496]" "[62:216,216:650]" "[681:866,866:990]" "[1:1.6,1.6:4.13]" "[1.8:2,2:2.5]" "[2:24,24:54]" "[1:9,9:10.8]" 84 0 0 35 2 207 413 619 825 2 2.5 1 9 0 0 75 120 energy
|
||||
-837691545 pistol_disrupter_dx2 "[87:141,141:290]" "[228:434,434:496]" "[135:240,240:552]" "[681:866,866:990]" "[.88:1.65,1.65:2.67]" "[1.8:2,2:2.5]" "[18:34,34:60]" "[1:16,16:19.2]" 84 0 0 35 2 207 413 619 825 2 2.5 1 16 0 0 75 120 energy
|
||||
-1792584100 pistol_flechette_fwg5 "[28:94,94:440]" "[228:434,434:496]" "[116:313,313:665]" "[681:866,866:990]" "[.42:.75,.75:3.19]" "[1.8:2,2:2.5]" "[10:27,27:49]" "[1:12,12:14.4]" 84 0 0 35 1 207 413 619 825 2 2.5 1 12 0 0 75 120 kinetic
|
||||
-1340116130 pistol_flechette_fwg5_quest "[53:79,79:108]" "[231:441,441:504]" "[146:230,230:382]" "[693:882,882:1008]" "[1:1.66,1.66:2.59]" "[1.8:2,2:2.5]" "[14:32,32:45]" "[1:12,12:14.4]" 84 0 0 35 1 210 420 630 840 2 2.5 1 12 0 0 75 120 kinetic
|
||||
-1400940656 pistol_geo_sonic_blaster "[56:163,163:300]" "[142:271,271:310]" "[87:343,343:747]" "[426:541,541:618]" "[.91:1.85,1.85:3.76]" "[1.8:2,2:2.5]" "[-3:36,36:63]" "[1:16,16:19.2]" 84 0 0 35 2 129 258 387 515 2 2.5 1 16 0 0 75 120 energy
|
||||
1980615506 pistol_launcher "[49:92,92:133]" "[63:121,121:138]" "[174:309,309:592]" "[190:242,242:276]" "[.52:1.67,1.67:3.33]" "[1.8:2,2:2.5]" "[22:41,41:56]" "[3:35,35:42]" 84 0 0 45 1 32 72 "('intAOEDamagePercent',2,'0.5'):('intWeaponType',0,'1'):('weaponType',0,'3')" 57 115 173 230 2 2.5 3 35 0 0 75 120 kinetic heat 40 80
|
||||
1687234741 pistol_blaster_power5 "[-4:114,114:350]" "[171:326,326:372]" "[85:247,247:623]" "[512:651,651:744]" "[1:1.94,1.94:4.1]" "[1.8:2,2:2.5]" "[5:29,29:56]" "[1:13,13:15.6]" 84 0 0 35 2 155 310 465 620 2 2.5 1 13 0 0 75 120 energy
|
||||
-2032619870 pistol_republic_blaster "[36:95,95:121]" "[217:413,413:472]" "[134:306,306:628]" "[648:824,824:942]" "[.85:1.28,1.28:3.79]" "[1.8:2,2:2.5]" "[17:36,36:62]" "[1:20,20:24]" 84 0 0 35 2 128 48 197 393 589 785 2 2.5 1 20 0 0 75 120 energy acid 1 60
|
||||
1070818136 pistol_republic_blaster_quest "[59:89,89:127]" "[228:434,434:496]" "[181:303,303:569]" "[681:866,866:990]" "[1.01:1.74,1.74:2.75]" "[1.8:2,2:2.5]" "[21:40,40:62]" "[3:25,25:30]" 84 0 0 35 2 207 413 619 825 2 2.5 3 25 0 0 75 120 energy
|
||||
322519616 pistol_scatter "[83:173,173:251]" "[228:434,434:496]" "[104:290,290:647]" "[681:866,866:990]" "[.01:.98,.98:3.03]" "[1.8:2,2:2.5]" "[21:48,48:68]" "[5:27,27:32.4]" 84 0 0 35 1 207 413 619 825 2 2.5 5 27 0 0 75 120 kinetic
|
||||
129228399 pistol_blaster_scout_trooper "[25:98,98:290]" "[46:87,87:100]" "[59:206,206:869]" "[136:173,173:198]" "[.54:.79,.79:3.78]" "[1.8:2,2:2.5]" "[4:25,25:55]" "[1:9,9:10.8]" 84 0 0 35 2 42 83 124 165 2 2.5 1 9 0 0 75 120 energy
|
||||
-1929515589 pistol_blaster_scout_trooper_corsec "[22:28,28:51]" "[46:87,87:100]" "[55:70,70:129]" "[136:173,173:198]" "[2.34:3.14,3.14:3.68]" "[1.8:2,2:2.5]" "[4:5,5:9]" "[1:11,11:13.2]" 84 0 0 35 2 42 83 124 165 2 2.5 1 11 0 0 75 120 energy
|
||||
1691705957 pistol_blaster_short_range_combat "[4:124,124:420]" "[162:310,310:354]" "[63:213,213:659]" "[487:620,620:708]" "[1:2.28,2.28:4.12]" "[1.8:2,2:2.5]" "[7:29,29:59]" "[1:17,17:20.4]" 84 0 0 25 2 64 27 147 295 443 590 2 2.5 1 17 0 0 75 120 energy cold 15 30
|
||||
-1919723538 pistol_projectile_striker "[6:124,124:440]" "[85:163,163:186]" "[31:187,187:450]" "[256:326,326:372]" "[1:1.31,1.31:4.24]" "[1.8:2,2:2.5]" "[4:29,29:53]" "[1:13,13:15.6]" 84 0 0 35 1 77 155 233 310 2 2.5 1 13 0 0 75 120 kinetic
|
||||
-937385248 rifle_tanlge_gun7 "[49:85,85:107]" "[178:339,339:388]" "[90:153,153:242]" "[532:677,677:774]" "[1.28:2.26,2.26:3.54]" "[2.25:2.5,2.5:3]" "[3:4,4:6]" "[2:4,4:4.8]" 104 0 0 35 1 162 323 484 645 2.5 3 2 4 0 0 95 140 kinetic
|
||||
685231719 quest_pistol_launcher "[17:19,19:23]" "[99:189,189:216]" "[87:100,100:121]" "[297:378,378:432]" "[3.81:5.19,5.19:5.96]" "[2.48:2.75,2.75:3.25]" "[12:13,13:15]" "[4:35,35:42]" 122 0 0 45 1 32 72 "('intAOEDamagePercent',2,'0.5'):('intWeaponType',0,'1'):('skillmod.bonus.pistol_speed',0,'3')" 90 180 270 360 2.75 3.25 4 35 0 0 115 150 kinetic heat 40 80
|
||||
-1340981329 quest_pistol_republic_blaster_quest "[20:22,22:27]" "[228:436,436:498]" "[93:109,109:152]" "[685:872,872:996]" "[3.22:4.21,4.21:4.8]" "[1.8:2,2:2.5]" "[15:15,15:18]" "[3:25,25:30]" 84 0 0 35 2 207 415 623 830 2 2.5 3 25 0 0 75 120 energy
|
||||
-1238955746 quest_rifle_flame_thrower "[14:15,15:17]" "[277:530,530:606]" "[149:165,165:196]" "[834:1061,1061:1212]" "[4.9:6.75,6.75:7.45]" "[2.48:2.75,2.75:3.25]" "[14:14,14:14]" "[2:19,19:22.8]" 122 0 0 25 2 32 126 "('intAOEDamagePercent',2,'1.0'):('intWeaponType',0,'3')" 252 505 758 1010 2.75 3.25 2 19 0 0 115 150 energy heat 70 140
|
||||
-656409820 quest_rifle_lightning "[13:14,14:17]" "[197:376,376:430]" "[125:140,140:175]" "[591:751,751:858]" "[4.49:6.17,6.17:7.12]" "[2.25:2.5,2.5:3]" "[11:11,11:12]" "[1:17,17:20.4]" 104 0 0 65 2 256 58 179 358 537 715 2.5 3 1 17 0 0 95 140 energy electric 30 65
|
||||
-67541093 rifle_acid_beam "[239:480,480:608]" "[121:231,231:264]" "[549:1071,1071:1393]" "[363:462,462:528]" "[2.99:3.69,3.69:6.43]" "[2.48:2.75,2.75:3.25]" "[29:55,55:67]" "[5:30,30:36]" 122 0 0 45 2 128 117 "('intWeaponType',0,'5'):('weaponType',0,'3')" 110 220 330 440 2.75 3.25 5 30 0 0 115 150 energy acid 65 130
|
||||
1223042704 rifle_beam "[53:174,174:246]" "[145:276,276:316]" "[103:287,287:416]" "[433:551,551:630]" "[2.02:3.22,3.22:6.12]" "[2.25:2.5,2.5:3]" "[9:61,61:67]" "[5:30,30:36]" 104 0 0 65 2 32 108 132 263 394 525 2.5 3 5 30 0 0 95 140 energy heat 60 120
|
||||
1646698389 rifle_berserker "[143:227,227:259]" "[212:405,405:463]" "[305:559,559:699]" "[637:811,811:926]" "[2.69:3.31,3.31:5.62]" "[2.25:2.5,2.5:3]" "[39:67,67:92]" "[5:35,35:42]" 104 0 0 65 1 193 386 579 772 2.5 3 5 35 0 0 95 140 kinetic
|
||||
-1930572145 bowcaster_assault "[64:189,189:486]" "[283:541,541:618]" "[109:347,347:911]" "[850:1082,1082:1236]" "[1.53:4.16,4.16:8.35]" "[2.25:2.5,2.5:3]" "[7:25,25:43]" "[2:25,25:30]" 104 0 0 65 1 257 515 773 1030 2.5 3 2 25 0 0 95 140 kinetic
|
||||
-1437726662 rifle_blaster_cdef "[15:23,23:85]" "[24:45,45:52]" "[31:49,49:178]" "[70:89,89:102]" "[1:3.63,3.63:4.49]" "[2.25:2.5,2.5:3]" "[4:11,11:44]" "[1:5,5:6]" 104 0 0 35 2 22 43 64 85 2.5 3 1 5 0 0 95 140 energy
|
||||
-2118141076 rifle_blaster_dlt20 "[47:144,144:305]" "[30:56,56:64]" "[65:228,228:466]" "[87:110,110:126]" "[1.64:4.83,4.83:7.63]" "[2.25:2.5,2.5:3]" "[1:23,23:47]" "[1:12,12:14.4]" 104 0 0 40 2 27 53 79 105 2.5 3 1 12 0 0 95 140 energy
|
||||
-1354942232 rifle_blaster_dlt20a "[52:153,153:446]" "[43:82,82:94]" "[79:241,241:551]" "[129:163,163:186]" "[1.4:4.5,4.5:7.79]" "[2.25:2.5,2.5:3]" "[3:23,23:53]" "[1:12,12:14.4]" 104 0 0 45 2 39 78 117 155 2.5 3 1 12 0 0 95 140 energy
|
||||
709369610 rifle_blaster_e11 "[35:148,148:290]" "[142:271,271:310]" "[82:258,258:469]" "[426:541,541:618]" "[1.87:3.74,3.74:6.34]" "[2.25:2.5,2.5:3]" "[4:30,30:46]" "[1:13,13:15.6]" 104 0 0 45 2 129 258 387 515 2.5 3 1 13 0 0 95 140 energy
|
||||
-205520309 rifle_flame_thrower "[251:711,711:771]" "[274:523,523:598]" "[560:1283,1283:1432]" "[822:1045,1045:1194]" "[1.67:3.01,3.01:6.02]" "[2.48:2.75,2.75:3.25]" "[15:28,28:50]" "[1:16,16:19.2]" 122 0 0 25 2 32 126 "('intAOEDamagePercent',2,'0.4'):('intWeaponType',0,'3'):('weaponType',0,'3')" 249 498 747 995 2.75 3.25 1 16 0 0 115 150 energy heat 70 140
|
||||
-603889252 rifle_blaster_ionization_jawa "[59:187,187:257]" "[213:407,407:466]" "[109:384,384:721]" "[640:814,814:930]" "[1.66:3.5,3.5:7.91]" "[2.25:2.5,2.5:3]" "[3:13,13:22]" "[1:5,5:6]" 104 0 0 65 2 256 117 194 388 582 775 2.5 3 1 5 0 0 95 140 energy electric 65 130
|
||||
-1321212581 rifle_blaster_laser_rifle "[12:101,101:610]" "[283:541,541:618]" "[296:605,605:1157]" "[850:1082,1082:1236]" "[1.88:3.9,3.9:7.15]" "[2.25:2.5,2.5:3]" "[10:35,35:51]" "[1:13,13:15.6]" 104 0 0 65 2 257 515 773 1030 2.5 3 1 13 0 0 95 140 energy
|
||||
397924793 rifle_lightning "[285:622,622:723]" "[151:287,287:328]" "[561:1100,1100:1656]" "[450:572,572:654]" "[1.92:2.8,2.8:5.23]" "[2.25:2.5,2.5:3]" "[13:38,38:50]" "[1:16,16:19.2]" 104 0 0 65 2 256 90 137 273 409 545 2.5 3 1 16 0 0 95 140 energy electric 50 100
|
||||
-1148251186 rifle_sonic_sg82 "[69:173,173:514]" "[57:109,109:125]" "[110:280,280:668]" "[172:218,218:250]" "[2:3.6,3.6:6.89]" "[2.25:2.5,2.5:3]" "[10:20,20:33]" "[1:18,18:21.6]" 104 0 0 40 2 52 104 156 208 2.5 3 1 18 0 0 95 140 energy
|
||||
2069010987 rifle_spray_stick_stohli "[3:61,61:86]" "[77:147,147:168]" "[87:242,242:415]" "[231:294,294:336]" "[.71:1.4,1.4:2.23]" "[2.25:2.5,2.5:3]" "[13:23,23:71]" "[1:22,22:26.4]" 104 0 0 65 1 32 99 70 140 210 280 2.5 3 1 22 0 0 95 140 kinetic heat 55 110
|
||||
-1374316705 rifle_t21 "[122:243,243:725]" "[283:541,541:618]" "[333:606,606:2787]" "[850:1082,1082:1236]" "[2:4.37,4.37:9.21]" "[2.25:2.5,2.5:3]" "[23:46,46:68]" "[1:29,29:34.8]" 104 0 0 65 2 257 515 773 1030 2.5 3 1 29 0 0 95 140 energy
|
||||
-1428709338 rifle_disruptor_dxr6 "[120:274,274:607]" "[213:406,406:464]" "[262:585,585:1659]" "[638:812,812:928]" "[2.22:3.57,3.57:6.79]" "[2.25:2.5,2.5:3]" "[37:67,67:96]" "[1:20,20:24]" 104 0 0 65 2 194 387 580 773 2.5 3 1 20 0 0 95 140 energy
|
||||
-2024883534 rifle_projectile_tusken "[44:149,149:465]" "[212:405,405:463]" "[71:225,225:799]" "[637:811,811:926]" "[1.25:6.56,6.56:9.8]" "[2.25:2.5,2.5:3]" "[0:22,22:62]" "[1:12,12:14.4]" 104 0 0 65 1 193 386 579 772 2.5 3 1 12 0 0 95 140 kinetic Min Damage Max Damage Speed
|
||||
-896708611 rifle_victor_projectile_tusken "[68:103,103:114]" "[215:410,410:468]" "[282:513,513:565]" "[644:819,819:936]" "[3.63:4.23,4.23:5.96]" "[2.25:2.5,2.5:3]" "[6:6,6:6]" "[1:17,17:20.4]" 104 0 0 65 1 195 390 585 780 2.5 3 1 17 0 0 95 140 kinetic Min Max Min Max Min Max Min Max Min Max Min Max Min Max Min Max
|
||||
1325615183 bug_bomb "[420:524,524:579]" "[178:339,339:388]" "[553:639,639:766]" "[532:677,677:774]" "[4.89:5.68,5.68:6.17]" "[10:10,10:12]" "[17:34,34:31]" "[0:5,5:6]" 65 0 0 "('weapon.intNoCertRequired',0,'1'):('effect_class',4,'bug')" 162 323 484 645 10 10 0 5 0 0 60 85 bug_bomb.iff 300 550 550 600 500 550 550 700 0 40 40 100 6 7 7 8
|
||||
1007504804 cryoban "[3:400,400:556]" "[142:271,271:310]" "[158:1045,1045:4018]" "[426:541,541:618]" "[.71:1.52,1.52:8.97]" "[10:10,10:12]" "[7:19,19:31]" "[0:5,5:6]" 65 0 0 "('effect_class',4,'cryoban'):('slowDuration',0,'10'):('slowIntensity',0,'10'):('reuseTimer',0,'15')" 129 258 387 515 10 10 0 5 0 0 60 85 cryoban.iff 10 30 30 60 140 800 800 1500 60 100 100 110 6 7 7 8
|
||||
1775069676 cryoban_loot_medium "[110:123,123:135]" "[106:203,203:232]" "[374:419,419:461]" "[319:405,405:463]" "[7.11:8.21,8.21:9.4]" "[10:10,10:12]" "[7:7,7:7]" "[0:5,5:6]" 65 0 0 "('effect_class',4,'cryoban'):('slowDuration',0,'10'):('slowIntensity',0,'10'):('reuseTimer',0,'15')" 96 193 290 386 10 10 0 5 0 0 60 85 cryoban_loot_medium.iff 90 110 110 120 300 450 450 550 0 50 50 60 6 7 7 8
|
||||
-1629773375 fragmentation "[4:402,402:451]" "[77:147,147:168]" "[108:1855,1855:5521]" "[231:294,294:336]" "[.34:3.25,3.25:5.18]" "[10:10,10:12]" "[6:17,17:33]" "[20:40,40:48]" 65 0 0 "('effect_class',4,'fragmentation'):('reuseTimer',0,'5')" 70 140 210 280 10 10 20 40 0 0 60 85 fragmentation.iff 20 350 350 550 160 1600 1600 3000 0 50 50 70 6 7 7 8
|
||||
1333331720 fragmentation_light "[65:281,281:323]" "[22:41,41:47]" "[250:1284,1284:1456]" "[64:81,81:92]" "[.41:1.72,1.72:4.82]" "[10:10,10:12]" "[8:20,20:20]" "[10:30,30:36]" 33 0 0 "('effect_class',4,'fragmentation'):('reuseTimer',0,'5')" 20 39 58 77 10 10 10 30 0 0 25 65 fragmentation_light.iff 20 250 250 350 80 1100 1100 1400 0 60 60 70 6 7 7 8
|
||||
869624722 glop "[4:219,219:505]" "[178:339,339:388]" "[-62:1000,1000:5015]" "[532:677,677:774]" "[.54:4.82,4.82:6.52]" "[10:10,10:12]" "[5:11,11:32]" "[5:10,10:12]" 88 0 0 "('effect_class',4,'glop'):('blindDuration',0,'10'):('blindChance',0,'50'):('reuseTimer',0,'25')" 162 323 484 645 10 10 5 10 0 0 85 100 glop.iff 50 400 400 600 180 1200 1200 3000 0 50 50 80 6 7 7 15
|
||||
247923643 imperial_detonator "[636:1356,1356:1430]" "[215:410,410:468]" "[1515:3154,3154:3762]" "[644:819,819:936]" "[.74:1.56,1.56:5]" "[10:10,10:12]" "[19:36,36:35]" "[5:10,10:12]" 94 0 0 "('effect_class',4,'imperial_detonator'):('reuseTimer',0,'20')" 195 390 585 780 10 10 5 10 0 0 90 110 imperial_detonator.iff 60 1100 1100 1500 300 2000 2000 3000 0 40 40 500 6 7 7 15
|
||||
-631441882 proton "[566:2218,2218:2137]" "[286:546,546:624]" "[1342:4718,4718:5430]" "[858:1092,1092:1248]" "[1.06:1.77,1.77:10.15]" "[10:10,10:12]" "[14:39,39:37]" "[0:0,0:0]" 108 0 0 "('effect_class',4,'proton'):('burnDuration',0,'30'):('burnIntensity',0,'10'):('reuseTimer',0,'25')" 260 520 780 1040 10 10 0 0 0 0 100 140 proton.iff 50 1600 1600 2200 160 600 600 3000 0 60 60 150 6 7 7 15
|
||||
-1328960537 thermal_detonator "[445:1248,1248:1451]" "[252:481,481:550]" "[1096:2946,2946:3207]" "[756:961,961:1098]" "[.64:1.96,1.96:4.78]" "[10:10,10:12]" "[15:36,36:34]" "[5:15,15:18]" 100 0 0 "('effect_class',4,'thermal_detonator'):('burnDuration',0,'40'):('burnIntensity',0,'30'):('reuseTimer',0,'60')" 229 458 687 915 10 10 5 15 0 0 95 120 thermal_detonator.iff 50 1000 1000 1500 200 1800 1800 3000 0 70 70 80 6 7 7 8
|
||||
@@ -0,0 +1,8 @@
|
||||
delete from purge_phases;
|
||||
|
||||
insert into purge_phases values (0, 'No Purge');
|
||||
insert into purge_phases values (1, 'Not Warned');
|
||||
insert into purge_phases values (2, 'Structure Purge Warning Sent');
|
||||
insert into purge_phases values (3, 'Structure Purge Accomplished');
|
||||
insert into purge_phases values (4, 'Character Purge Warning Sent');
|
||||
insert into purge_phases values (5, 'Purged');
|
||||
@@ -0,0 +1,514 @@
|
||||
create or replace package body login
|
||||
as
|
||||
|
||||
procedure register_new_cluster(p_cluster_name in varchar2, p_address in varchar2, p_cluster_id out number)
|
||||
as
|
||||
begin
|
||||
select id
|
||||
into p_cluster_id
|
||||
from cluster_list
|
||||
where name = p_cluster_name;
|
||||
|
||||
exception
|
||||
when no_data_found then
|
||||
insert into cluster_list (id,name,address,secret,locked, not_recommended,group_id,
|
||||
online_player_limit,online_free_trial_limit,free_trial_can_create_char, online_tutorial_limit)
|
||||
select nvl(max(id)+1,1), p_cluster_name,p_address,'N','N','N',1,
|
||||
2500,250,'Y',350
|
||||
from cluster_list;
|
||||
|
||||
select id
|
||||
into p_cluster_id
|
||||
from cluster_list
|
||||
where name = p_cluster_name;
|
||||
end;
|
||||
|
||||
function get_cluster_list (p_group in number) return refcursor
|
||||
as
|
||||
result_cursor refcursor;
|
||||
maxCharacterPerAccount number;
|
||||
begin
|
||||
select account_limit into maxCharacterPerAccount
|
||||
from default_char_limits;
|
||||
|
||||
open result_cursor for
|
||||
select id, name, address, port, secret, locked, not_recommended, maxCharacterPerAccount,
|
||||
online_player_limit,online_free_trial_limit,free_trial_can_create_char,online_tutorial_limit
|
||||
from cluster_list
|
||||
where group_id = p_group;
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
function get_avatar_list (p_station_id number, p_cluster_group number) return refcursor
|
||||
as
|
||||
result refcursor;
|
||||
begin
|
||||
open result for
|
||||
select
|
||||
c.character_name,
|
||||
c.template_id,
|
||||
c.object_id,
|
||||
c.cluster_id,
|
||||
c.character_type
|
||||
from
|
||||
swg_characters c, cluster_list l
|
||||
where
|
||||
c.cluster_id = l.id and
|
||||
l.group_id = p_cluster_group and
|
||||
station_id = p_station_id and
|
||||
enabled = 'Y';
|
||||
|
||||
return result;
|
||||
end;
|
||||
|
||||
function get_open_character_slots(p_station_id number, p_cluster_id number) return refcursor
|
||||
as
|
||||
result_cursor refcursor;
|
||||
over_account_limit number;
|
||||
over_cluster_limit number;
|
||||
begin
|
||||
-- does the account have too many characters, or does the cluster have too many characters?
|
||||
|
||||
select account_limit - account_counter.num, cluster_limit - cluster_list.num_characters
|
||||
into over_account_limit, over_cluster_limit
|
||||
from
|
||||
(select count(*) num from swg_characters
|
||||
where station_id = p_station_id and enabled ='Y' and cluster_id not in (select id from cluster_list where name in ('Corbantis', 'Europe-Infinity', 'Intrepid', 'Kauri', 'Kettemoor', 'Lowca', 'Naritus', 'Scylla', 'Tarquinas', 'Tempest', 'Valcyn', 'Wanderhome', 'Japan-Katana', 'Japan-Harla'))) account_counter,
|
||||
default_char_limits,
|
||||
cluster_list
|
||||
where
|
||||
cluster_list.id = p_cluster_id;
|
||||
|
||||
if (over_account_limit <= 0 or over_cluster_limit <= 0) then
|
||||
open result_cursor for
|
||||
select 0 character_type_id, 0 remaining_slots
|
||||
from dual
|
||||
where 1=2;
|
||||
|
||||
return result_cursor;
|
||||
end if;
|
||||
|
||||
-- if not, return the number of each type of character we're allowed to create
|
||||
|
||||
open result_cursor for
|
||||
select limits.character_type_id, limits.limit - nvl(existing.num,0) remaining_slots
|
||||
from
|
||||
(select def.character_type_id, def.num_slots + nvl(cls.num_extra_slots,0) limit
|
||||
from extra_character_slots cls, default_character_slots def
|
||||
where def.character_type_id = cls.character_type_id (+)
|
||||
and cls.station_id (+) = p_station_id
|
||||
and cls.cluster_id (+) = p_cluster_id) limits,
|
||||
|
||||
(select character_type, count(*) num
|
||||
from swg_characters
|
||||
where station_id = p_station_id
|
||||
and cluster_id = p_cluster_id
|
||||
and enabled = 'Y'
|
||||
group by character_type) existing
|
||||
where
|
||||
limits.character_type_id = existing.character_type (+);
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
-- unlike get_open_character_slots, this function ignores account and cluster limits
|
||||
function get_only_open_character_slots(p_station_id number, p_cluster_id number) return refcursor
|
||||
as
|
||||
result_cursor refcursor;
|
||||
begin
|
||||
-- return the number of each type of character we're allowed to create
|
||||
|
||||
open result_cursor for
|
||||
select limits.character_type_id, limits.limit - nvl(existing.num,0) remaining_slots
|
||||
from
|
||||
(select def.character_type_id, def.num_slots + nvl(cls.num_extra_slots,0) limit
|
||||
from extra_character_slots cls, default_character_slots def
|
||||
where def.character_type_id = cls.character_type_id (+)
|
||||
and cls.station_id (+) = p_station_id
|
||||
and cls.cluster_id (+) = p_cluster_id) limits,
|
||||
|
||||
(select character_type, count(*) num
|
||||
from swg_characters
|
||||
where station_id = p_station_id
|
||||
and cluster_id = p_cluster_id
|
||||
and enabled = 'Y'
|
||||
group by character_type) existing
|
||||
where
|
||||
limits.character_type_id = existing.character_type (+);
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
function is_cluster_at_limit(p_cluster_id number) return number
|
||||
as
|
||||
v_cluster_limit number;
|
||||
v_num_characters number;
|
||||
begin
|
||||
select cluster_limit
|
||||
into v_cluster_limit
|
||||
from default_char_limits;
|
||||
|
||||
select num_characters
|
||||
into v_num_characters
|
||||
from cluster_list
|
||||
where id = p_cluster_id;
|
||||
|
||||
if (v_num_characters >= v_cluster_limit) then
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
end if;
|
||||
|
||||
exception
|
||||
when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function is_account_at_limit(p_station_id number) return number
|
||||
as
|
||||
v_account_limit number;
|
||||
v_num_characters number;
|
||||
begin
|
||||
select account_limit
|
||||
into v_account_limit
|
||||
from default_char_limits;
|
||||
|
||||
select count(*)
|
||||
into v_num_characters
|
||||
from swg_characters
|
||||
where station_id = p_station_id and enabled ='Y' and cluster_id not in (select id from cluster_list where name in ('Corbantis', 'Europe-Infinity', 'Intrepid', 'Kauri', 'Kettemoor', 'Lowca', 'Naritus', 'Scylla', 'Tarquinas', 'Tempest', 'Valcyn', 'Wanderhome', 'Japan-Katana', 'Japan-Harla'));
|
||||
|
||||
if (v_num_characters >= v_account_limit) then
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
end if;
|
||||
|
||||
exception
|
||||
when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
procedure delete_character(p_cluster_id number, p_character_id number, p_station_id number)
|
||||
as
|
||||
begin
|
||||
delete from swg_characters
|
||||
where station_id = p_station_id
|
||||
and cluster_id = p_cluster_id
|
||||
and object_id = p_character_id;
|
||||
|
||||
update cluster_list
|
||||
set num_characters = num_characters - 1
|
||||
where cluster_list.id = p_cluster_id;
|
||||
|
||||
end;
|
||||
|
||||
procedure rename_character(p_cluster_id number, p_character_id number, p_new_name varchar2)
|
||||
as
|
||||
begin
|
||||
update swg_characters
|
||||
set character_name = p_new_name
|
||||
where cluster_id = p_cluster_id
|
||||
and object_id = p_character_id;
|
||||
end;
|
||||
|
||||
procedure create_character(p_cluster_id number, p_station_id number, p_character_name varchar2, p_character_id number, p_template_id number, p_character_type number)
|
||||
as
|
||||
begin
|
||||
insert into swg_characters (station_id, cluster_id, character_name, object_id, template_id, character_type)
|
||||
values (p_station_id, p_cluster_id, p_character_name, p_character_id, p_template_id, p_character_type);
|
||||
|
||||
update cluster_list
|
||||
set num_characters = nvl(num_characters,0) + 1
|
||||
where cluster_list.id = p_cluster_id;
|
||||
|
||||
exception when DUP_VAL_ON_INDEX then
|
||||
update swg_characters
|
||||
set object_id = p_character_id,
|
||||
template_id = p_template_id,
|
||||
character_type = p_character_type
|
||||
where cluster_id = p_cluster_id
|
||||
and station_id = p_station_id
|
||||
and character_name = p_character_name;
|
||||
end;
|
||||
|
||||
function restore_character(p_cluster_id number, p_station_id number, p_character_name varchar2, p_character_id number, p_template_id number, p_character_type number) return number
|
||||
-- Return codes:
|
||||
-- 1: restored
|
||||
-- 2: restored, but too many characters on the account now
|
||||
-- 3: database error
|
||||
as
|
||||
l_num_characters number;
|
||||
l_limit number;
|
||||
begin
|
||||
begin
|
||||
insert into swg_characters (station_id, cluster_id, character_name, object_id, template_id, character_type)
|
||||
values (p_station_id, p_cluster_id, p_character_name, p_character_id, p_template_id, p_character_type);
|
||||
|
||||
update cluster_list
|
||||
set num_characters = nvl(num_characters,0) + 1
|
||||
where cluster_list.id = p_cluster_id;
|
||||
|
||||
exception when DUP_VAL_ON_INDEX then
|
||||
null; -- already restored
|
||||
when others then
|
||||
return 3;
|
||||
end;
|
||||
|
||||
-- Check the account against the limits
|
||||
select count(*)
|
||||
into l_num_characters
|
||||
from swg_characters
|
||||
where station_id = p_station_id
|
||||
and character_type = p_character_type
|
||||
and enabled = 'Y'
|
||||
and cluster_id not in (select id from cluster_list where name in ('Corbantis', 'Europe-Infinity', 'Intrepid', 'Kauri', 'Kettemoor', 'Lowca', 'Naritus', 'Scylla', 'Tarquinas', 'Tempest', 'Valcyn', 'Wanderhome', 'Japan-Katana', 'Japan-Harla'));
|
||||
|
||||
select def.num_slots + nvl(cls.num_extra_slots,0)
|
||||
into l_limit
|
||||
from extra_character_slots cls, default_character_slots def
|
||||
where def.character_type_id = cls.character_type_id (+)
|
||||
and cls.station_id (+) = p_station_id
|
||||
and cls.cluster_id (+) = p_cluster_id
|
||||
and def.character_type_id = p_character_type;
|
||||
|
||||
if (l_num_characters > l_limit) then
|
||||
return 2;
|
||||
else
|
||||
return 1;
|
||||
end if;
|
||||
|
||||
exception
|
||||
when others then
|
||||
return 3;
|
||||
end;
|
||||
|
||||
procedure set_character_slots(p_cluster_id number, p_station_id number, p_slot_type number, p_num_slots number)
|
||||
as
|
||||
begin
|
||||
update extra_character_slots
|
||||
set num_extra_slots = p_num_slots
|
||||
where cluster_id = p_cluster_id
|
||||
and station_id = p_station_id
|
||||
and character_type_id = p_slot_type;
|
||||
|
||||
if (sql%rowcount = 0) then
|
||||
insert into extra_character_slots (station_id, cluster_id, character_type_id, num_extra_slots)
|
||||
values (p_station_id, p_cluster_id, p_slot_type, p_num_slots);
|
||||
end if;
|
||||
end;
|
||||
|
||||
procedure set_character_type(p_cluster_id number, p_station_id number, p_character_id number, p_slot_type number)
|
||||
as
|
||||
begin
|
||||
update swg_characters
|
||||
set character_type = p_slot_type
|
||||
where station_id = p_station_id
|
||||
and cluster_id = p_cluster_id
|
||||
and object_id = p_character_id;
|
||||
end;
|
||||
|
||||
function has_extra_character_slot(p_station_id number, p_character_type number) return number
|
||||
as
|
||||
rows number;
|
||||
total number;
|
||||
begin
|
||||
select count(*), sum(num_extra_slots)
|
||||
into rows, total
|
||||
from extra_character_slots
|
||||
where station_id = p_station_id
|
||||
and character_type_id = p_character_type;
|
||||
|
||||
if (rows <= 0 or total < 0) then
|
||||
total := 0;
|
||||
end if;
|
||||
|
||||
return total;
|
||||
exception
|
||||
when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
procedure toggle_disable_character(p_cluster_id number, p_character_id number, p_station_id number, p_enabled varchar2)
|
||||
as
|
||||
begin
|
||||
update swg_characters
|
||||
set enabled = p_enabled
|
||||
where station_id = p_station_id
|
||||
and cluster_id = p_cluster_id
|
||||
and object_id = p_character_id;
|
||||
|
||||
end;
|
||||
|
||||
function enable_disable_character(p_station_id number, p_character_id number, p_enabled varchar2) return number
|
||||
as
|
||||
begin
|
||||
update swg_characters
|
||||
set enabled = p_enabled
|
||||
where station_id = p_station_id and
|
||||
object_id = p_character_id;
|
||||
if (sql%rowcount > 0) then
|
||||
return 1;
|
||||
else
|
||||
return 2;
|
||||
end if;
|
||||
exception
|
||||
when others then
|
||||
return 3;
|
||||
end;
|
||||
|
||||
function get_completed_tutorial(p_station_id number) return refcursor
|
||||
as
|
||||
cnt number;
|
||||
result_cursor refcursor;
|
||||
begin
|
||||
select count (*) into cnt
|
||||
from account_info
|
||||
where station_id = p_station_id;
|
||||
|
||||
if (cnt = 0) then
|
||||
insert into account_info (station_id, completed_tutorial)
|
||||
values (p_station_id, 'N');
|
||||
end if;
|
||||
|
||||
open result_cursor for
|
||||
select completed_tutorial
|
||||
from account_info
|
||||
where station_id = p_station_id;
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
procedure toggle_completed_tutorial(p_station_id number, p_completed varchar2)
|
||||
as
|
||||
begin
|
||||
update account_info
|
||||
set completed_tutorial = p_completed
|
||||
where station_id = p_station_id;
|
||||
end;
|
||||
|
||||
function get_consumed_reward_events(p_station_id number) return refcursor
|
||||
as
|
||||
result_cursor refcursor;
|
||||
begin
|
||||
open result_cursor for
|
||||
select event_id, cluster_id, character_id
|
||||
from account_reward_events
|
||||
where station_id = p_station_id;
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
function get_claimed_reward_items(p_station_id number) return refcursor
|
||||
as
|
||||
result_cursor refcursor;
|
||||
begin
|
||||
open result_cursor for
|
||||
select item_id, cluster_id, character_id
|
||||
from account_reward_items
|
||||
where station_id = p_station_id;
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
function consume_reward_event(p_station_id number, p_character_id number, p_cluster_id number, p_event_id varchar2) return number
|
||||
as
|
||||
begin
|
||||
insert into account_reward_events (station_id, event_id, date_consumed, cluster_id, character_id)
|
||||
values (p_station_id, p_event_id, sysdate, p_cluster_id, p_character_id);
|
||||
|
||||
return 1;
|
||||
|
||||
exception
|
||||
when dup_val_on_index then
|
||||
-- Check whether previous claim was from the same character and cluster, if so, allow it
|
||||
declare
|
||||
previous_claim_cluster number;
|
||||
previous_claim_character number;
|
||||
begin
|
||||
select cluster_id, character_id
|
||||
into previous_claim_cluster, previous_claim_character
|
||||
from account_reward_events
|
||||
where station_id = p_station_id
|
||||
and event_id = p_event_id;
|
||||
|
||||
if ((p_cluster_id=previous_claim_cluster) and (p_character_id=previous_claim_character)) then
|
||||
return 1;
|
||||
end if;
|
||||
|
||||
return 0;
|
||||
end;
|
||||
when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function claim_reward_item(p_station_id number, p_character_id number, p_cluster_id number, p_item_id varchar2) return number
|
||||
as
|
||||
begin
|
||||
insert into account_reward_items (station_id, item_id, date_claimed, cluster_id, character_id)
|
||||
values (p_station_id, p_item_id, sysdate, p_cluster_id, p_character_id);
|
||||
|
||||
return 1;
|
||||
|
||||
exception
|
||||
when dup_val_on_index then
|
||||
-- Check whether previous claim was from the same character and cluster, if so, allow it
|
||||
declare
|
||||
previous_claim_cluster number;
|
||||
previous_claim_character number;
|
||||
begin
|
||||
select cluster_id, character_id
|
||||
into previous_claim_cluster, previous_claim_character
|
||||
from account_reward_items
|
||||
where station_id = p_station_id
|
||||
and item_id = p_item_id;
|
||||
|
||||
if ((p_cluster_id=previous_claim_cluster) and (p_character_id=previous_claim_character)) then
|
||||
return 1;
|
||||
end if;
|
||||
|
||||
return 0;
|
||||
exception
|
||||
when others then
|
||||
return 0;
|
||||
end;
|
||||
when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function get_feature_id_transactions(p_station_id in number, p_cluster_id in number, p_character_id in number) return refcursor
|
||||
as
|
||||
result_cursor refcursor;
|
||||
begin
|
||||
open result_cursor for
|
||||
select item_id, count
|
||||
from feature_id_transactions
|
||||
where station_id = p_station_id and cluster_id = p_cluster_id and character_id = p_character_id;
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
function update_feature_id_transaction(p_station_id in number, p_cluster_id in number, p_character_id in number, p_item_id in varchar2, p_count_adjustment in number) return number
|
||||
as
|
||||
begin
|
||||
update feature_id_transactions set date_updated = sysdate,
|
||||
count = count + p_count_adjustment
|
||||
where station_id = p_station_id
|
||||
and cluster_id = p_cluster_id
|
||||
and character_id = p_character_id
|
||||
and item_id = p_item_id;
|
||||
|
||||
if (sql%rowcount = 0) then
|
||||
insert into feature_id_transactions (station_id, cluster_id, character_id, item_id, date_updated, count)
|
||||
values (p_station_id, p_cluster_id, p_character_id, p_item_id, sysdate, p_count_adjustment);
|
||||
end if;
|
||||
|
||||
return 1;
|
||||
|
||||
exception
|
||||
when others then
|
||||
return 0;
|
||||
end;
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,32 @@
|
||||
create or replace package login
|
||||
as
|
||||
type refcursor is ref cursor;
|
||||
subtype objectid is number;
|
||||
|
||||
procedure register_new_cluster(p_cluster_name in varchar2, p_address in varchar2, p_cluster_id out number);
|
||||
function get_cluster_list(p_group in number) return refcursor;
|
||||
function get_avatar_list (p_station_id number, p_cluster_group number) return refcursor;
|
||||
function get_open_character_slots(p_station_id number, p_cluster_id number) return refcursor;
|
||||
function get_only_open_character_slots(p_station_id number, p_cluster_id number) return refcursor;
|
||||
function is_cluster_at_limit(p_cluster_id number) return number;
|
||||
function is_account_at_limit(p_station_id number) return number;
|
||||
procedure delete_character(p_cluster_id number, p_character_id number, p_station_id number);
|
||||
procedure rename_character(p_cluster_id number, p_character_id number, p_new_name varchar2);
|
||||
procedure create_character(p_cluster_id number, p_station_id number, p_character_name varchar2, p_character_id number, p_template_id number, p_character_type number);
|
||||
function restore_character(p_cluster_id number, p_station_id number, p_character_name varchar2, p_character_id number, p_template_id number, p_character_type number) return number;
|
||||
procedure set_character_slots(p_cluster_id number, p_station_id number, p_slot_type number, p_num_slots number);
|
||||
procedure set_character_type(p_cluster_id number, p_station_id number, p_character_id number, p_slot_type number);
|
||||
function has_extra_character_slot(p_station_id number, p_character_type number) return number;
|
||||
procedure toggle_disable_character(p_cluster_id number, p_character_id number, p_station_id number, p_enabled varchar2);
|
||||
function enable_disable_character(p_station_id number, p_character_id number, p_enabled varchar2) return number;
|
||||
function get_completed_tutorial(p_station_id number) return refcursor;
|
||||
procedure toggle_completed_tutorial(p_station_id number, p_completed varchar2);
|
||||
function get_consumed_reward_events(p_station_id number) return refcursor;
|
||||
function get_claimed_reward_items(p_station_id number) return refcursor;
|
||||
function consume_reward_event(p_station_id number, p_character_id number, p_cluster_id number, p_event_id varchar2) return number;
|
||||
function claim_reward_item(p_station_id number, p_character_id number, p_cluster_id number, p_item_id varchar2) return number;
|
||||
function get_feature_id_transactions(p_station_id in number, p_cluster_id in number, p_character_id in number) return refcursor;
|
||||
function update_feature_id_transaction(p_station_id in number, p_cluster_id in number, p_character_id in number, p_item_id in varchar2, p_count_adjustment in number) return number;
|
||||
end;
|
||||
/
|
||||
grant execute on login to public;
|
||||
@@ -0,0 +1,88 @@
|
||||
create or replace package body purge_process
|
||||
as
|
||||
procedure update_account_list (source_table varchar2) as
|
||||
begin
|
||||
--Add new status codes
|
||||
execute immediate
|
||||
'insert into statuses (id, description, do_purge, reviewed) ' ||
|
||||
'select distinct status, status_desc, ''N'', ''N'' ' ||
|
||||
'from ' || source_table || ' ' ||
|
||||
'where not exists (select * from statuses where statuses.id = ' || source_table || '.status)';
|
||||
|
||||
--Add any new accounts.
|
||||
execute immediate
|
||||
'insert into purge_accounts (station_id,purge_phase) ' ||
|
||||
'select user_id, 0 ' ||
|
||||
'from ' || source_table || ' ' ||
|
||||
'where not exists (select * from purge_accounts where purge_accounts.station_id = ' || source_table ||'.user_id)';
|
||||
|
||||
--Reset purge phase on existing accounts who may have reactivated:
|
||||
execute immediate
|
||||
'update purge_accounts ' ||
|
||||
'set purge_phase = 0, ' ||
|
||||
'purge_start_date = null ' ||
|
||||
'where purge_phase<>0 ' ||
|
||||
'and exists (select * from ' || source_table || ' , statuses ' ||
|
||||
'where ' || source_table || '.user_id = purge_accounts.station_id ' ||
|
||||
'and ' || source_table || '.status = statuses.id ' ||
|
||||
'and statuses.do_purge=''N'')';
|
||||
|
||||
--Start purge process on accounts who have deactivated:
|
||||
execute immediate
|
||||
'update purge_accounts ' ||
|
||||
'set purge_phase = 1, ' ||
|
||||
'purge_start_date=(select nvl(max(close_date),sysdate) from ' || source_table ||
|
||||
' where ' || source_table || '.user_id = purge_accounts.station_id) ' ||
|
||||
'where purge_phase=0 ' ||
|
||||
'and exists (select * from ' || source_table || ', statuses ' ||
|
||||
'where ' || source_table || '.user_id = purge_accounts.station_id ' ||
|
||||
'and ' || source_table || '.status = statuses.id ' ||
|
||||
'and statuses.do_purge=''Y'')';
|
||||
--TODO: immediate purge for banned accounts
|
||||
end;
|
||||
|
||||
function get_account_for_purge(p_purge_phase number, p_min_age number) return number
|
||||
-- Grabs one account from the list to be purged, and sets a lock on it so that no other process
|
||||
-- will attempt to purge it. (Ignores locks from more than 1 day ago, because those probably mean
|
||||
-- something in the process failed.)
|
||||
as
|
||||
result number;
|
||||
begin
|
||||
select station_id
|
||||
into result
|
||||
from purge_accounts
|
||||
where purge_accounts.purge_phase = p_purge_phase
|
||||
and sysdate - nvl(purge_accounts.purge_phase_date, purge_accounts.purge_start_date) > p_min_age
|
||||
and (purge_lock is null or sysdate - purge_lock > 1)
|
||||
and rownum < 2
|
||||
order by purge_accounts.purge_start_date
|
||||
for update;
|
||||
|
||||
update purge_accounts
|
||||
set purge_lock=sysdate
|
||||
where station_id = result;
|
||||
|
||||
return result;
|
||||
end;
|
||||
|
||||
procedure set_purge_status(p_station_id number, p_new_phase number)
|
||||
as
|
||||
begin
|
||||
if (p_new_phase = 0) then
|
||||
update purge_accounts
|
||||
set purge_phase = p_new_phase,
|
||||
purge_start_date = null,
|
||||
purge_phase_date = null,
|
||||
purge_lock = null
|
||||
where station_id = p_station_id;
|
||||
else
|
||||
update purge_accounts
|
||||
set purge_phase = p_new_phase,
|
||||
purge_phase_date = sysdate,
|
||||
purge_lock = null
|
||||
where station_id = p_station_id;
|
||||
end if;
|
||||
|
||||
end;
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,11 @@
|
||||
create or replace package purge_process
|
||||
as
|
||||
type refcursor is ref cursor;
|
||||
subtype objectid is number;
|
||||
|
||||
procedure update_account_list (source_table varchar2);
|
||||
function get_account_for_purge(p_purge_phase number, p_min_age number) return number;
|
||||
procedure set_purge_status(p_station_id number, p_new_phase number);
|
||||
end;
|
||||
/
|
||||
grant execute on purge_process to public;
|
||||
@@ -0,0 +1,14 @@
|
||||
create table account_extract -- NO_IMPORT
|
||||
(
|
||||
user_id number,
|
||||
subscription_id number,
|
||||
plan_id number,
|
||||
plan_desc varchar(255),
|
||||
status number,
|
||||
status_desc varchar2(60),
|
||||
close_date date,
|
||||
total_entitled_time number,
|
||||
constraint account_extract_pk primary key (user_id)
|
||||
);
|
||||
|
||||
grant select on account_extract to public;
|
||||
@@ -0,0 +1,8 @@
|
||||
create table account_info -- NO_IMPORT
|
||||
(
|
||||
station_id number not null,
|
||||
completed_tutorial char(1),
|
||||
constraint account_info_pk primary key (station_id)
|
||||
);
|
||||
|
||||
grant select on account_info to public;
|
||||
@@ -0,0 +1,11 @@
|
||||
create table account_reward_events --NO_IMPORT
|
||||
(
|
||||
station_id number,
|
||||
event_id varchar2(255),
|
||||
date_consumed date,
|
||||
cluster_id number,
|
||||
character_id number,
|
||||
constraint pk_account_reward_events PRIMARY KEY (station_id, event_id)
|
||||
);
|
||||
|
||||
grant select on account_reward_events to public;
|
||||
@@ -0,0 +1,11 @@
|
||||
create table account_reward_items --NO_IMPORT
|
||||
(
|
||||
station_id number,
|
||||
item_id varchar2(255),
|
||||
date_claimed date,
|
||||
cluster_id number,
|
||||
character_id number,
|
||||
constraint pk_account_reward_items PRIMARY KEY (station_id, item_id)
|
||||
);
|
||||
|
||||
grant select on account_reward_items to public;
|
||||
@@ -0,0 +1,7 @@
|
||||
create table character_types -- NO_IMPORT
|
||||
(
|
||||
id number not null,
|
||||
description varchar2(1000) not null,
|
||||
constraint pk_character_types primary key (id)
|
||||
);
|
||||
grant select on character_types to public;
|
||||
@@ -0,0 +1,19 @@
|
||||
create table cluster_list --NO_IMPORT
|
||||
(
|
||||
id number,
|
||||
name varchar2(255),
|
||||
num_characters number,
|
||||
address varchar2(255),
|
||||
port number,
|
||||
secret char(1),
|
||||
locked char(1),
|
||||
not_recommended char(1),
|
||||
group_id int default 1 not null,
|
||||
online_player_limit number,
|
||||
online_free_trial_limit number,
|
||||
free_trial_can_create_char char(1),
|
||||
online_tutorial_limit number default 350,
|
||||
constraint pk_cluster_list PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
grant select on cluster_list to public;
|
||||
@@ -0,0 +1,6 @@
|
||||
create table default_char_limits -- NO_IMPORT
|
||||
(
|
||||
account_limit number not null,
|
||||
cluster_limit number not null
|
||||
);
|
||||
grant select on default_char_limits to public;
|
||||
@@ -0,0 +1,7 @@
|
||||
create table default_character_slots -- NO_IMPORT
|
||||
(
|
||||
character_type_id number not null,
|
||||
num_slots number not null,
|
||||
constraint pk_default_character_slots primary key (character_type_id)
|
||||
);
|
||||
grant select on default_character_slots to public;
|
||||
@@ -0,0 +1,9 @@
|
||||
create table extra_character_slots -- NO_IMPORT
|
||||
(
|
||||
station_id number not null,
|
||||
cluster_id number not null,
|
||||
character_type_id number not null,
|
||||
num_extra_slots number not null,
|
||||
constraint pk_extra_character_slots primary key (station_id,cluster_id,character_type_id)
|
||||
);
|
||||
grant select on extra_character_slots to public;
|
||||
@@ -0,0 +1,12 @@
|
||||
create table feature_id_transactions --NO_IMPORT
|
||||
(
|
||||
station_id number,
|
||||
cluster_id number,
|
||||
character_id number,
|
||||
item_id varchar2(255),
|
||||
date_updated date,
|
||||
count number,
|
||||
constraint pk_feature_id_transactions PRIMARY KEY (station_id, cluster_id, character_id, item_id)
|
||||
);
|
||||
|
||||
grant select on feature_id_transactions to public;
|
||||
@@ -0,0 +1,11 @@
|
||||
create table purge_accounts -- NO_IMPORT
|
||||
(
|
||||
station_id number,
|
||||
purge_phase number,
|
||||
purge_start_date date,
|
||||
purge_phase_date date,
|
||||
purge_lock date,
|
||||
constraint purge_accounts_pk primary key (station_id)
|
||||
);
|
||||
|
||||
grant select on purge_accounts to public;
|
||||
@@ -0,0 +1,8 @@
|
||||
create table purge_phases -- NO_IMPORT
|
||||
(
|
||||
id number,
|
||||
description varchar2(200),
|
||||
constraint purge_phases_pk primary key (id)
|
||||
);
|
||||
|
||||
grant select on purge_phases to public;
|
||||
@@ -0,0 +1,10 @@
|
||||
create table statuses -- NO_IMPORT
|
||||
(
|
||||
id number,
|
||||
description varchar2(200),
|
||||
do_purge char(1),
|
||||
reviewed char(1),
|
||||
constraint statuses_pk primary key (id)
|
||||
);
|
||||
|
||||
grant select on statuses to public;
|
||||
@@ -0,0 +1,15 @@
|
||||
create table swg_characters -- NO_IMPORT
|
||||
(
|
||||
STATION_ID NUMBER NOT NULL,
|
||||
CLUSTER_ID NUMBER NOT NULL,
|
||||
CHARACTER_NAME VARCHAR2(127) NOT NULL,
|
||||
OBJECT_ID NUMBER,
|
||||
CHARACTER_TYPE NUMBER,
|
||||
TEMPLATE_ID NUMBER,
|
||||
ENABLED CHAR(1) DEFAULT 'Y' NOT NULL
|
||||
);
|
||||
|
||||
alter table SWG_CHARACTERS
|
||||
add constraint pk_swg_character PRIMARY KEY (station_id, cluster_id, character_name)
|
||||
;
|
||||
grant select on swg_characters to public;
|
||||
@@ -0,0 +1,6 @@
|
||||
-- Takes an Oracle database prepared by the makefile
|
||||
-- and sets it up to recieve data from a PostgreSQL
|
||||
-- migration
|
||||
|
||||
delete from free_object_ids;
|
||||
delete from clock;
|
||||
@@ -0,0 +1,24 @@
|
||||
--PostgreSQL script to export a database to text files
|
||||
|
||||
\copy attributes to attributes.txt
|
||||
\copy building_objects to building_objects.txt
|
||||
\copy cell_objects to cell_objects.txt
|
||||
\copy clock to clock.txt
|
||||
\copy containers to containers.txt
|
||||
\copy creature_objects to creature_objects.txt
|
||||
\copy free_object_ids to free_object_ids.txt
|
||||
\copy installation_objects to installation_objects.txt
|
||||
\copy object_variables to object_variables.txt
|
||||
\copy objects to objects.txt
|
||||
\copy planet_objects to planet_objects.txt
|
||||
\copy players to players.txt
|
||||
\copy resource_class_objects to resource_class_objects.txt
|
||||
\copy resource_pool_objects to resource_pool_objects.txt
|
||||
\copy resource_type_objects to resource_type_objects.txt
|
||||
\copy scripts to scripts.txt
|
||||
\copy server_log to server_log.txt
|
||||
\copy static_objects to static_objects.txt
|
||||
\copy tangible_objects to tangible_objects.txt
|
||||
\copy universe_objects to universe_objects.txt
|
||||
\copy vehicle_objects to vehicle_objects.txt
|
||||
\copy weapon_objects to weapon_objects.txt
|
||||
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# Given an export from Postgresql, convert it into a series of insert statements
|
||||
# that Oracle can understand.
|
||||
# Assumes the data is stored in files name <tablename>.txt
|
||||
|
||||
# This is suitable for small databases, but should not be used for large databases
|
||||
# because it inserts the data one row at a time.
|
||||
|
||||
foreach $filename (@ARGV)
|
||||
{
|
||||
print STDERR $filename."\n";
|
||||
|
||||
open (INFILE,$filename);
|
||||
$tablename=$filename;
|
||||
$tablename =~ s/\.txt//;
|
||||
|
||||
while (<INFILE>)
|
||||
{
|
||||
chop;
|
||||
$_="'".$_."'";
|
||||
s/\t/','/g;
|
||||
s/\'\\N\'/NULL/g;
|
||||
print "insert into $tablename values ($_);\n";
|
||||
if ((++$linecount)== 1000)
|
||||
{
|
||||
print "commit;\n";
|
||||
$linecount = 0;
|
||||
}
|
||||
}
|
||||
close (INFILE);
|
||||
}
|
||||
|
||||
print "commit;\n";
|
||||
@@ -0,0 +1,42 @@
|
||||
create table market_auctions_temp --NO_IMPORT
|
||||
(
|
||||
creator_id number(20), -- BIND_AS(DB::BindableNetworkId)
|
||||
min_bid number(20), -- BIND_AS(DB::BindableNetworkId)
|
||||
auction_timer number(20), -- BIND_AS(DB::BindableNetworkId)
|
||||
buy_now_price number(20), -- BIND_AS(DB::BindableNetworkId)
|
||||
user_description varchar2(4000),
|
||||
oob varchar2(4000),
|
||||
location varchar2(256),
|
||||
item_id number(20), -- BIND_AS(DB::BindableNetworkId)
|
||||
category number(20), -- BIND_AS(DB::BindableNetworkId)
|
||||
item_timer number(20), -- BIND_AS(DB::BindableNetworkId)
|
||||
item_name varchar2(4000),
|
||||
owner_id number(20), -- BIND_AS(DB::BindableNetworkId)
|
||||
active number(20), -- BIND_AS(DB::BindableNetworkId)
|
||||
constraint pk_market_auctions_temp primary key (item_id) using index tablespace indexes
|
||||
);
|
||||
|
||||
insert into market_auctions_temp select
|
||||
creator_id,
|
||||
min_bid,
|
||||
auction_timer,
|
||||
buy_now_price,
|
||||
dbms_lob.substr(user_description,dbms_lob.getlength(user_description),1),
|
||||
dbms_lob.substr(oob,dbms_lob.getlength(oob),1),
|
||||
location,
|
||||
item_id,
|
||||
category,
|
||||
item_timer,
|
||||
dbms_lob.substr(item_name,dbms_lob.getlength(item_name),1),
|
||||
owner_id,
|
||||
active
|
||||
from market_auctions;
|
||||
|
||||
rename market_auctions to market_auctions_old;
|
||||
|
||||
rename market_auctions_temp to market_auctions;
|
||||
|
||||
grant select on market_auctions to public;
|
||||
|
||||
/
|
||||
|
||||
@@ -0,0 +1,572 @@
|
||||
create or replace package body admin
|
||||
as
|
||||
|
||||
procedure move_to_player (p_object_id objectid, p_target_player objectid)
|
||||
as
|
||||
l_target_inventory objectid;
|
||||
begin
|
||||
l_target_inventory := admin.get_inventory_for_player(p_target_player);
|
||||
|
||||
if (l_target_inventory <> 0) then
|
||||
move_to_container(p_object_id, l_target_inventory, p_target_player);
|
||||
end if;
|
||||
end;
|
||||
|
||||
procedure move_to_player_bank (p_object_id objectid, p_target_player objectid)
|
||||
as
|
||||
l_target_bank objectid;
|
||||
begin
|
||||
l_target_bank := admin.get_bank_for_player(p_target_player);
|
||||
|
||||
if (l_target_bank <> 0) then
|
||||
move_to_container(p_object_id, l_target_bank, l_target_bank);
|
||||
end if;
|
||||
end;
|
||||
|
||||
procedure move_to_player_datapad (p_object_id objectid, p_target_player objectid, p_max_depth number)
|
||||
as
|
||||
l_target_datapad objectid;
|
||||
begin
|
||||
l_target_datapad := admin.get_datapad_for_player(p_target_player);
|
||||
|
||||
if (l_target_datapad <> 0) then
|
||||
move_to_container_depth(p_object_id, l_target_datapad, p_target_player, p_max_depth);
|
||||
end if;
|
||||
|
||||
exception
|
||||
when others then
|
||||
NULL;
|
||||
end;
|
||||
|
||||
procedure move_to_container_depth (p_object_id objectid, p_target_container objectid, p_target_load_with objectid, p_max_depth number)
|
||||
as
|
||||
begin
|
||||
update objects
|
||||
set contained_by = p_target_container,
|
||||
load_with = p_target_load_with,
|
||||
x = 0,
|
||||
y = 0,
|
||||
z = 0,
|
||||
node_x = 0,
|
||||
node_z = 0
|
||||
where object_id = p_object_id;
|
||||
|
||||
delete market_auctions
|
||||
where item_id = p_object_id;
|
||||
|
||||
fix_load_with_depth(p_object_id, p_target_load_with, p_max_depth);
|
||||
end;
|
||||
|
||||
procedure move_to_container (p_object_id objectid, p_target_container objectid, p_target_load_with objectid)
|
||||
as
|
||||
begin
|
||||
move_to_container_depth(p_object_id, p_target_container, p_target_load_with, -1);
|
||||
end;
|
||||
|
||||
function get_inventory_for_player (p_player_id objectid) return objectid
|
||||
as
|
||||
result objectid;
|
||||
begin
|
||||
select object_id
|
||||
into result
|
||||
from objects
|
||||
where contained_by = p_player_id
|
||||
and object_template_id = 2007924155
|
||||
and deleted = 0;
|
||||
|
||||
return result;
|
||||
|
||||
exception when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function get_bank_for_player (p_player_id objectid) return objectid
|
||||
as
|
||||
result objectid;
|
||||
begin
|
||||
select object_id
|
||||
into result
|
||||
from objects
|
||||
where contained_by = p_player_id
|
||||
and object_template_id = -172438875
|
||||
and deleted = 0;
|
||||
|
||||
return result;
|
||||
|
||||
exception when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function get_datapad_for_player (p_player_id objectid) return objectid
|
||||
as
|
||||
result objectid;
|
||||
begin
|
||||
select object_id
|
||||
into result
|
||||
from objects
|
||||
where contained_by = p_player_id
|
||||
and object_template_id = -1783727815
|
||||
and deleted = 0;
|
||||
|
||||
return result;
|
||||
|
||||
exception when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function get_player_for_player (p_player_id objectid) return objectid
|
||||
as
|
||||
result objectid;
|
||||
begin
|
||||
select object_id
|
||||
into result
|
||||
from objects
|
||||
where contained_by = p_player_id
|
||||
and object_template_id = -640104330
|
||||
and deleted = 0;
|
||||
|
||||
return result;
|
||||
|
||||
exception when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function get_container_for_object (p_object_id objectid) return objectid
|
||||
as
|
||||
result objectid;
|
||||
begin
|
||||
select contained_by
|
||||
into result
|
||||
from objects
|
||||
where object_id = p_object_id;
|
||||
return result;
|
||||
exception when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function get_object_template_id (p_object_id objectid) return number
|
||||
as
|
||||
result number;
|
||||
begin
|
||||
select object_template_id
|
||||
into result
|
||||
from objects
|
||||
where object_id = p_object_id;
|
||||
|
||||
return result;
|
||||
|
||||
exception when others then
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function restore_house (p_house_id objectid) return number -- 1=success, 2=no such object or not deleted
|
||||
-- result codes:
|
||||
-- 1 = success
|
||||
-- 2 = not a character or not deleted
|
||||
-- 3 = database error
|
||||
as
|
||||
cells number;
|
||||
begin
|
||||
|
||||
select count(*) into cells
|
||||
from objects
|
||||
where contained_by = p_house_id;
|
||||
|
||||
if (cells = 0) then
|
||||
return 3;
|
||||
end if;
|
||||
|
||||
update objects
|
||||
set deleted = 0, deleted_date = NULL, bank_balance = bank_balance + 1000 -- roughly 1 day maintenance
|
||||
where object_id = p_house_id
|
||||
and deleted <> 0;
|
||||
|
||||
if (sql%rowcount <> 1) then
|
||||
return 2;
|
||||
end if;
|
||||
|
||||
update tangible_objects
|
||||
set damage_taken = 0
|
||||
where object_id = p_house_id;
|
||||
|
||||
update objects
|
||||
set deleted = 0, deleted_date = NULL
|
||||
where object_id in (
|
||||
select object_id
|
||||
from objects
|
||||
start with object_id = p_house_id
|
||||
connect by prior object_id = contained_by) and
|
||||
deleted in (select reason_code
|
||||
from delete_reasons
|
||||
where tag in ('House', 'ContainerDeleted'));
|
||||
|
||||
fix_load_with (p_house_id, p_house_id);
|
||||
|
||||
return 1;
|
||||
|
||||
exception
|
||||
when others then
|
||||
return 3;
|
||||
end;
|
||||
|
||||
|
||||
function restore_character (p_player_id objectid, p_name out varchar2, p_account out number, p_template_id out number) return number
|
||||
-- result codes:
|
||||
-- 1 = success
|
||||
-- 2 = not a character or not deleted
|
||||
-- 3 = database error
|
||||
as
|
||||
character_reason number;
|
||||
begin
|
||||
select reason_code
|
||||
into character_reason
|
||||
from delete_reasons
|
||||
where tag='CharacterDeleted';
|
||||
|
||||
begin
|
||||
select station_id, object_name, object_template_id
|
||||
into p_account, p_name, p_template_id
|
||||
from players p, objects o
|
||||
where p.character_object = p_player_id
|
||||
and o.object_id = p_player_id
|
||||
and o.object_id = p.character_object;
|
||||
exception
|
||||
when no_data_found then
|
||||
return 2;
|
||||
end;
|
||||
|
||||
update objects
|
||||
set deleted = 0, deleted_date = NULL
|
||||
where object_id in (
|
||||
select object_id
|
||||
from objects
|
||||
start with object_id = p_player_id
|
||||
connect by prior object_id = contained_by
|
||||
and deleted = character_reason);
|
||||
|
||||
return 1;
|
||||
|
||||
exception
|
||||
when others then
|
||||
return 3;
|
||||
end;
|
||||
|
||||
function undelete_item (p_item_id objectid) return number -- 1=success, 2=no such object or not deleted
|
||||
-- result codes:
|
||||
-- 1 = success
|
||||
-- 2 = not exist
|
||||
-- 3 = database error
|
||||
-- 4 = success, items needs to be loaded
|
||||
as
|
||||
cnt number;
|
||||
l_type_id number;
|
||||
l_name varchar2(4000);
|
||||
l_account number;
|
||||
l_template_id number;
|
||||
l_load_with number;
|
||||
l_result number;
|
||||
begin
|
||||
select count(*) into cnt
|
||||
from objects
|
||||
where object_id = p_item_id;
|
||||
|
||||
if (cnt = 0) then
|
||||
return 2;
|
||||
end if;
|
||||
|
||||
select count(*) into cnt
|
||||
from objects
|
||||
where object_id = p_item_id and (deleted <> 0 or deleted_date is not null);
|
||||
|
||||
if (cnt = 0) then
|
||||
return 1;
|
||||
end if;
|
||||
|
||||
select type_id into l_type_id
|
||||
from objects
|
||||
where object_id = p_item_id;
|
||||
|
||||
select count(*) into cnt
|
||||
from players
|
||||
where character_object = p_item_id;
|
||||
|
||||
if (l_type_id = 1112885583) then
|
||||
-- 0x4255494f = 'BUIO', building objects
|
||||
l_result := restore_house(p_item_id);
|
||||
if (l_result = 1) then
|
||||
return 4;
|
||||
else
|
||||
return l_result;
|
||||
end if;
|
||||
else if (l_type_id = 1129465167 and cnt > 0) then
|
||||
-- 0x4352454f = 'CREO', creture objects and has a row in players table
|
||||
-- This is a player
|
||||
return restore_character(p_item_id, l_name, l_account, l_template_id);
|
||||
else
|
||||
update objects
|
||||
set deleted = 0, deleted_date = null
|
||||
where object_id in (
|
||||
select object_id
|
||||
from objects
|
||||
start with object_id = p_item_id
|
||||
connect by prior object_id = contained_by);
|
||||
|
||||
-- find out the top most load_with
|
||||
begin
|
||||
select count(*) into cnt
|
||||
from objects
|
||||
where (contained_by = 0 or load_contents = 'N') and rownum = 1
|
||||
start with object_id = p_item_id
|
||||
connect by object_id = prior contained_by;
|
||||
|
||||
if (cnt > 0) then
|
||||
select object_id into l_load_with
|
||||
from objects
|
||||
where (contained_by = 0 or load_contents = 'N') and rownum = 1
|
||||
start with object_id = p_item_id
|
||||
connect by object_id = prior contained_by;
|
||||
fix_load_with(p_item_id, l_load_with);
|
||||
else
|
||||
fix_load_with(p_item_id, p_item_id);
|
||||
end if;
|
||||
|
||||
exception
|
||||
when others then
|
||||
return 2;
|
||||
end;
|
||||
end if;
|
||||
end if;
|
||||
select count(*) into cnt
|
||||
from objects
|
||||
where object_id = p_item_id and
|
||||
type_id in (1112885583, -- BuildingObject
|
||||
1212763727, -- HarvesterInstallationObject
|
||||
1229869903, -- InstallationObject
|
||||
1296649807); -- ManufactureInstallationObject
|
||||
if (cnt = 0) then
|
||||
return 1;
|
||||
else
|
||||
return 4;
|
||||
end if;
|
||||
exception
|
||||
when others then
|
||||
return 2;
|
||||
end;
|
||||
|
||||
/**
|
||||
* move an object to a player
|
||||
parameters:
|
||||
p_object_id item object id to move
|
||||
p_target_player target player id
|
||||
result:
|
||||
1: success
|
||||
2: cannot find player's inventory
|
||||
3: object not found
|
||||
4: unknown database error
|
||||
5: object is a player
|
||||
|
||||
if you add an item type here, also add it to ConsoleCommandParserObject::performParsing()
|
||||
6: failed because object_template_id is 2007924155 (object/tangible/inventory/character_inventory.iff)
|
||||
7: failed because object_template_id is -1436615854 (object/tangible/mission_bag/mission_bag.iff)
|
||||
8: failed because object_template_id is -1783727815 (object/tangible/datapad/character_datapad.iff)
|
||||
9: failed because object_template_id is -172438875 (object/tangible/bank/character_bank.iff)
|
||||
10: failed because object_template_id is 2131722719 (object/weapon/melee/unarmed/unarmed_default_player.iff)
|
||||
11: failed because object_template_id is -640104330 (object/player/player.iff)
|
||||
12: failed because object_template_id is -1388112109 (object/cell/cell.iff)
|
||||
13: failed because object_template_id is -1324492681 (object/tangible/inventory/vendor_inventory.iff)
|
||||
14: failed because direct parent is a datapad object.
|
||||
15: failed because object is a building object (has an entry in the building_objects table)
|
||||
16: failed because object is an installation object (has an entry in the installation_objects table)
|
||||
17: failed because object is a ship object (has an entry in the ship_objects table)
|
||||
*/
|
||||
function move_item_to_player (p_object_id objectid, p_target_player objectid) return number
|
||||
as
|
||||
l_target_inventory objectid;
|
||||
l_object_player objectid;
|
||||
l_object_template_id number;
|
||||
l_container_id number;
|
||||
l_container_template_id number;
|
||||
l_row_count number;
|
||||
begin
|
||||
l_object_template_id := admin.get_object_template_id(p_object_id);
|
||||
l_object_player := admin.get_player_for_player(p_object_id);
|
||||
l_target_inventory := admin.get_inventory_for_player(p_target_player);
|
||||
|
||||
if (l_object_player <> 0) then
|
||||
return 5;
|
||||
end if;
|
||||
|
||||
if (l_object_template_id = 2007924155) then
|
||||
return 6;
|
||||
end if;
|
||||
|
||||
if (l_object_template_id = -1436615854) then
|
||||
return 7;
|
||||
end if;
|
||||
|
||||
if (l_object_template_id = -1783727815) then
|
||||
return 8;
|
||||
end if;
|
||||
|
||||
if (l_object_template_id = -172438875) then
|
||||
return 9;
|
||||
end if;
|
||||
|
||||
if (l_object_template_id = 2131722719) then
|
||||
return 10;
|
||||
end if;
|
||||
|
||||
if (l_object_template_id = -640104330) then
|
||||
return 11;
|
||||
end if;
|
||||
|
||||
if (l_object_template_id = -1388112109) then
|
||||
return 12;
|
||||
end if;
|
||||
|
||||
if (l_object_template_id = -1324492681) then
|
||||
return 13;
|
||||
end if;
|
||||
|
||||
-- check to see if our parent is a datapad.
|
||||
|
||||
l_container_id := admin.get_container_for_object(p_object_id);
|
||||
l_container_template_id := get_object_template_id(l_container_id);
|
||||
if (l_container_template_id = -1783727815) then
|
||||
return 14;
|
||||
end if;
|
||||
|
||||
-- check to see if we are a building
|
||||
select count(*)
|
||||
into l_row_count
|
||||
from building_objects
|
||||
where object_id = p_object_id;
|
||||
if (l_row_count > 0) then
|
||||
return 15;
|
||||
end if;
|
||||
|
||||
select count(*)
|
||||
into l_row_count
|
||||
from installation_objects
|
||||
where object_id = p_object_id;
|
||||
if (l_row_count > 0) then
|
||||
return 16;
|
||||
end if;
|
||||
|
||||
-- check to see if we're trying to move a ship object.
|
||||
select count(*)
|
||||
into l_row_count
|
||||
from ship_objects
|
||||
where object_id = p_object_id;
|
||||
if (l_row_count >0) then
|
||||
return 17;
|
||||
end if;
|
||||
|
||||
if (l_target_inventory <> 0) then
|
||||
update objects
|
||||
set contained_by = l_target_inventory,
|
||||
load_with = p_target_player,
|
||||
x = 0,
|
||||
y = 0,
|
||||
z = 0,
|
||||
node_x = 0,
|
||||
node_z = 0
|
||||
where object_id = p_object_id;
|
||||
if (sql%rowcount = 0) then
|
||||
return 3;
|
||||
end if;
|
||||
delete market_auctions
|
||||
where item_id = p_object_id;
|
||||
fix_load_with(p_object_id, p_target_player);
|
||||
else
|
||||
return 2;
|
||||
end if;
|
||||
return 1;
|
||||
exception
|
||||
when others then
|
||||
return 4;
|
||||
end;
|
||||
|
||||
/**
|
||||
* Fix the load_with values for anything contained by the specified object with a max depth or unlimited if max depth = -1
|
||||
*/
|
||||
procedure fix_load_with_depth (p_topmost_object objectid, p_starting_loadwith objectid, p_max_depth number) as
|
||||
oid_stack vaofnumber := vaofnumber(p_topmost_object); -- objects to look at
|
||||
load_with_stack vaofnumber := vaofnumber(p_starting_loadwith); -- the load_with to inherit from these objects
|
||||
stack_top number := 1;
|
||||
parent_object number := 0;
|
||||
parent_load_with number := 0;
|
||||
current_load_with number := 0;
|
||||
inherit_load_with number := 0;
|
||||
stack_top_depth vaofnumber := vaofnumber(0); -- the depth of the object at the top of the stack
|
||||
current_depth number := 0;
|
||||
topmost_load_contents char(1) := '';
|
||||
begin
|
||||
-- Depth-first search
|
||||
|
||||
update objects set load_with = p_starting_loadwith where object_id = p_topmost_object;
|
||||
|
||||
-- if the first object being fixed is demand loaded, set child object load_with values to this object
|
||||
if (sql%rowcount = 1) then
|
||||
select load_contents into topmost_load_contents from objects where object_id = p_topmost_object;
|
||||
if (topmost_load_contents = 'N') then
|
||||
load_with_stack(stack_top) := p_topmost_object;
|
||||
end if;
|
||||
end if;
|
||||
|
||||
while (stack_top <> 0) loop
|
||||
parent_object := oid_stack(stack_top);
|
||||
parent_load_with := load_with_stack(stack_top);
|
||||
current_depth := stack_top_depth(stack_top) + 1;
|
||||
stack_top := stack_top - 1;
|
||||
oid_stack.trim;
|
||||
load_with_stack.trim;
|
||||
|
||||
-- keep adding children unless at max depth
|
||||
if (p_max_depth = -1 or current_depth <= p_max_depth) then
|
||||
for x in (select object_id, player_controlled, deleted, load_contents from objects where contained_by = parent_object) loop
|
||||
-- look at child objects and set their load_withs
|
||||
|
||||
current_load_with := parent_load_with;
|
||||
inherit_load_with := parent_load_with;
|
||||
|
||||
-- load_with defaults to the parent's load with, except in special cases:
|
||||
|
||||
if (x.deleted <> 0 ) then -- deleted, load with is 0 for this and all its contents
|
||||
current_load_with := NULL;
|
||||
inherit_load_with := NULL;
|
||||
else
|
||||
if (x.player_controlled = 'Y') then -- player. load with = self for this and contents, even if container is deleted
|
||||
current_load_with := x.object_id;
|
||||
inherit_load_with := x.object_id;
|
||||
else
|
||||
if (x.load_contents = 'N' and current_load_with IS NOT NULL) then -- demand-load container. contents get this as their load_with except if a parent is deleted
|
||||
inherit_load_with := x.object_id;
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
|
||||
stack_top := stack_top + 1;
|
||||
oid_stack.extend;
|
||||
load_with_stack.extend;
|
||||
stack_top_depth.extend;
|
||||
oid_stack(stack_top) := x.object_id;
|
||||
load_with_stack(stack_top) := inherit_load_with;
|
||||
stack_top_depth(stack_top) := current_depth;
|
||||
|
||||
update objects set load_with = current_load_with where object_id = x.object_id;
|
||||
end loop;
|
||||
end if;
|
||||
end loop;
|
||||
end;
|
||||
|
||||
/**
|
||||
* Fix the load_with values for anything contained by the specified object
|
||||
*/
|
||||
procedure fix_load_with (p_topmost_object objectid, p_starting_loadwith objectid) as
|
||||
begin
|
||||
fix_load_with_depth(p_topmost_object, p_starting_loadwith, -1);
|
||||
end;
|
||||
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,27 @@
|
||||
create or replace package admin
|
||||
as
|
||||
type refcursor is ref cursor;
|
||||
subtype objectid is number;
|
||||
|
||||
procedure move_to_player (p_object_id objectid, p_target_player objectid);
|
||||
procedure move_to_player_bank (p_object_id objectid, p_target_player objectid);
|
||||
procedure move_to_player_datapad (p_object_id objectid, p_target_player objectid, p_max_depth number);
|
||||
procedure move_to_container (p_object_id objectid, p_target_container objectid, p_target_load_with objectid);
|
||||
procedure move_to_container_depth (p_object_id objectid, p_target_container objectid, p_target_load_with objectid, p_max_depth number);
|
||||
function get_inventory_for_player (p_player_id objectid) return objectid;
|
||||
function get_bank_for_player (p_player_id objectid) return objectid;
|
||||
function get_datapad_for_player (p_player_id objectid) return objectid;
|
||||
function get_player_for_player (p_player_id objectid) return objectid;
|
||||
function get_container_for_object(p_object_id objectid) return objectid;
|
||||
function get_object_template_id (p_object_id objectid) return number;
|
||||
function restore_house (p_house_id objectid) return number;
|
||||
|
||||
function restore_character (p_player_id objectid, p_name out varchar2, p_account out number, p_template_id out number) return number;
|
||||
function undelete_item (p_item_id objectid) return number;
|
||||
function move_item_to_player (p_object_id objectid, p_target_player objectid) return number;
|
||||
|
||||
procedure fix_load_with (p_topmost_object objectid, p_starting_loadwith objectid);
|
||||
procedure fix_load_with_depth (p_topmost_object objectid, p_starting_loadwith objectid, p_max_depth number);
|
||||
end;
|
||||
/
|
||||
grant execute on admin to public;
|
||||
@@ -0,0 +1,52 @@
|
||||
create or replace package body biography
|
||||
as
|
||||
procedure set_biography (p_owner objectid, p_biography varchar2)
|
||||
as
|
||||
|
||||
m_enable_db_logging INTEGER := 0;
|
||||
|
||||
begin
|
||||
if (p_biography is not null) then
|
||||
update biographies
|
||||
set biography = p_biography
|
||||
where object_id = p_owner;
|
||||
|
||||
if (sql%rowcount = 0) then
|
||||
insert into biographies (object_id, biography)
|
||||
values (p_owner, p_biography);
|
||||
end if;
|
||||
else
|
||||
delete biographies
|
||||
where object_id = p_owner;
|
||||
end if;
|
||||
exception
|
||||
when others then
|
||||
begin
|
||||
m_enable_db_logging := db_error_logger.getLogLevel();
|
||||
IF (m_enable_db_logging > 0) THEN
|
||||
db_error_logger.dblogerror(SQLCODE,'biography.set_biography : update error.');
|
||||
IF (m_enable_db_logging > 1) THEN
|
||||
db_error_logger.dblogerror_values('biography.set_biography','objectid','number',p_owner);
|
||||
db_error_logger.dblogerror_values('biography.set_biography','biography','varchar2',p_biography);
|
||||
END IF;
|
||||
END IF;
|
||||
IF (db_error_logger.reraisecheck('biography','set_biography') = 1) THEN
|
||||
-- RAISE;
|
||||
NULL;
|
||||
END IF;
|
||||
end;
|
||||
end;
|
||||
|
||||
function get_biography (p_owner objectid) return refcursor
|
||||
as
|
||||
rc refcursor;
|
||||
begin
|
||||
open rc for
|
||||
select biography
|
||||
from biographies
|
||||
where object_id = p_owner;
|
||||
|
||||
return rc;
|
||||
end;
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,10 @@
|
||||
create or replace package biography
|
||||
as
|
||||
type refcursor is ref cursor;
|
||||
subtype objectid is number;
|
||||
|
||||
procedure set_biography (p_owner objectid, p_biography varchar2);
|
||||
function get_biography (p_owner objectid) return refcursor;
|
||||
end;
|
||||
/
|
||||
grant execute on biography to public;
|
||||
@@ -0,0 +1,136 @@
|
||||
CREATE OR REPLACE PACKAGE BODY "BLOB_DATA_CONVERSION" as
|
||||
|
||||
function blob_encodeoob_old(v_blob blob) return varchar2
|
||||
is
|
||||
retstring varchar2(4000);
|
||||
b binary_integer;
|
||||
begin
|
||||
if utl_raw.length(v_blob) > 1 then
|
||||
for i in 1..trunc(utl_raw.length(v_blob)/2) loop
|
||||
begin
|
||||
b := utl_raw.CAST_TO_BINARY_INTEGER(utl_raw.SUBSTR(v_blob,(i*2)-1,2),2);
|
||||
if b = 0 then
|
||||
retstring := retstring || chr(15712191) || chr(1);
|
||||
elsif b = 65535 then
|
||||
retstring := retstring || chr(15712191) || chr(2);
|
||||
elsif b = 27 then
|
||||
retstring := retstring || chr(15712191) || chr(3);
|
||||
elsif b > 2048 then -- 3-byte encoding
|
||||
retstring := retstring || chr(((224 + mod(trunc(b / 4096), 16)) * 65536) + ((128 + mod(trunc(b / 64),64)) * 256) + (128 + mod(b, 64)));
|
||||
elsif b > 127 then -- 2-byte encoding
|
||||
retstring := retstring || chr((mod(trunc(b / 64),32) + 192) * 256 + (mod(b, 64) + 128));
|
||||
else
|
||||
retstring := retstring || chr(b);
|
||||
end if;
|
||||
exception
|
||||
when others then
|
||||
retstring := retstring || ' ';
|
||||
end;
|
||||
exit when length(retstring) >= 3996;
|
||||
end loop;
|
||||
retstring := retstring || chr(15712191) || chr(4);
|
||||
return retstring;
|
||||
else
|
||||
return null;
|
||||
end if;
|
||||
exception
|
||||
when others then
|
||||
return null;
|
||||
end;
|
||||
|
||||
function blob_encodeoob(v_blob blob) return varchar2
|
||||
is
|
||||
retstring varchar2(4000);
|
||||
b binary_integer;
|
||||
buf1 raw(10);
|
||||
buf2 raw(10);
|
||||
buf raw(10);
|
||||
begin
|
||||
if utl_raw.length(v_blob) > 1 then
|
||||
for i in 1..trunc(utl_raw.length(v_blob)/2) loop
|
||||
b := utl_raw.CAST_TO_BINARY_INTEGER(utl_raw.SUBSTR(v_blob,(i*2)-1,2),2);
|
||||
retstring := retstring || substr(to_char(b, '0XXXX'), 3);
|
||||
exit when length(retstring) >= 3998;
|
||||
end loop;
|
||||
return retstring;
|
||||
else
|
||||
return null;
|
||||
end if;
|
||||
exception
|
||||
when others then
|
||||
return null;
|
||||
end;
|
||||
|
||||
function blob_hexdump(v_blob blob) return varchar2
|
||||
is
|
||||
retstring varchar2(4000);
|
||||
b binary_integer;
|
||||
begin
|
||||
if utl_raw.length(v_blob) > 0 then
|
||||
for i in 1..utl_raw.length(v_blob) loop
|
||||
b := utl_raw.CAST_TO_BINARY_INTEGER(utl_raw.SUBSTR(v_blob,i,1));
|
||||
retstring := retstring || to_char(b, '0x');
|
||||
end loop;
|
||||
return retstring;
|
||||
else
|
||||
return null;
|
||||
end if;
|
||||
exception
|
||||
when others then
|
||||
return null;
|
||||
end;
|
||||
|
||||
|
||||
function blob_to_string(v_blob blob) return varchar2
|
||||
is
|
||||
retstring varchar2(2000);
|
||||
c char;
|
||||
b binary_integer;
|
||||
begin
|
||||
if utl_raw.length(v_blob) > 0 then
|
||||
-- assumes blob is in UTF16
|
||||
for i in 1..trunc(utl_raw.length(v_blob)/2) loop
|
||||
b := utl_raw.CAST_TO_BINARY_INTEGER(utl_raw.SUBSTR(v_blob,(i*2)-1,2),2);
|
||||
if b > 2048 then -- 3-byte encoding
|
||||
retstring := retstring || chr(((224 + mod(trunc(b / 4096), 16)) * 65536) + ((128 + mod(trunc(b / 64),64)) * 256) + (128 + mod(b, 64)));
|
||||
elsif b > 127 then -- 2-byte encoding
|
||||
retstring := retstring || chr((mod(trunc(b / 64),32) + 192) * 256 + (mod(b, 64) + 128));
|
||||
else
|
||||
retstring := retstring || chr(b);
|
||||
end if;
|
||||
end loop;
|
||||
return retstring;
|
||||
else
|
||||
return null;
|
||||
end if;
|
||||
exception
|
||||
when others then
|
||||
return null;
|
||||
end;
|
||||
|
||||
|
||||
function string_hexdump(v_string varchar2) return varchar2
|
||||
is
|
||||
begin
|
||||
return blob_hexdump(utl_raw.CAST_TO_RAW(v_string));
|
||||
exception
|
||||
when others then
|
||||
return null;
|
||||
end;
|
||||
|
||||
|
||||
procedure convert_blob_data(v_item_id number)
|
||||
is
|
||||
i number;
|
||||
begin
|
||||
-- update market_auctions
|
||||
-- set new_oob = blob_encodeoob(oob),
|
||||
-- new_item_name = blob_to_string(item_name),
|
||||
-- new_user_desc = blob_to_string(user_description)
|
||||
-- where item_id = v_item_id;
|
||||
-- commit;
|
||||
i := 0;
|
||||
end;
|
||||
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,10 @@
|
||||
CREATE OR REPLACE PACKAGE "BLOB_DATA_CONVERSION" as
|
||||
function blob_encodeoob (v_blob blob) return varchar2;
|
||||
function blob_hexdump (v_blob blob) return varchar2;
|
||||
function blob_encodeoob_old (v_blob blob) return varchar2;
|
||||
function blob_to_string (v_blob blob) return varchar2;
|
||||
function string_hexdump (v_string varchar2) return varchar2;
|
||||
procedure convert_blob_data(v_item_id number);
|
||||
end;
|
||||
/
|
||||
grant execute on blob_data_conversion to public;
|
||||
@@ -0,0 +1,94 @@
|
||||
CREATE OR REPLACE PACKAGE BODY cm_loader is
|
||||
|
||||
FUNCTION get_location_list RETURN swg_cur
|
||||
IS
|
||||
|
||||
swg_cur_out swg_cur;
|
||||
|
||||
BEGIN
|
||||
-- Clean up orphaned vendors
|
||||
DELETE from Auction_Locations
|
||||
WHERE owner_id > 0 and not exists
|
||||
(select 1 from objects where object_id = location_id and deleted = 0);
|
||||
commit;
|
||||
|
||||
OPEN swg_cur_out FOR
|
||||
SELECT location_id,
|
||||
owner_id,
|
||||
location_name,
|
||||
sales_tax,
|
||||
sales_tax_bank_id,
|
||||
empty_date,
|
||||
last_access_date,
|
||||
inactive_date,
|
||||
status,
|
||||
search_enabled,
|
||||
entrance_charge
|
||||
FROM auction_locations;
|
||||
|
||||
RETURN swg_cur_out;
|
||||
|
||||
END get_location_list;
|
||||
|
||||
FUNCTION get_bid_list RETURN swg_cur
|
||||
IS
|
||||
|
||||
swg_cur_out swg_cur;
|
||||
|
||||
BEGIN
|
||||
OPEN swg_cur_out FOR
|
||||
SELECT item_id,
|
||||
bidder_id,
|
||||
bid,
|
||||
max_proxy_bid
|
||||
FROM market_auction_bids;
|
||||
|
||||
RETURN swg_cur_out;
|
||||
|
||||
END get_bid_list;
|
||||
|
||||
FUNCTION get_auction_list RETURN swg_cur
|
||||
IS
|
||||
|
||||
swg_cur_out swg_cur;
|
||||
|
||||
BEGIN
|
||||
OPEN swg_cur_out FOR
|
||||
SELECT creator_id,
|
||||
min_bid,
|
||||
auction_timer,
|
||||
buy_now_price,
|
||||
user_description,
|
||||
oob,
|
||||
location_id,
|
||||
item_id,
|
||||
category,
|
||||
item_timer,
|
||||
item_name,
|
||||
owner_id,
|
||||
active,
|
||||
item_size,
|
||||
object_template_id
|
||||
FROM market_auctions WHERE object_template_id IS NOT NULL;
|
||||
|
||||
RETURN swg_cur_out;
|
||||
|
||||
END get_auction_list;
|
||||
|
||||
FUNCTION get_auction_attributes RETURN swg_cur
|
||||
IS
|
||||
|
||||
swg_cur_out swg_cur;
|
||||
|
||||
BEGIN
|
||||
OPEN swg_cur_out FOR
|
||||
SELECT item_id,
|
||||
attribute_name,
|
||||
attribute_value
|
||||
FROM market_auction_attributes;
|
||||
|
||||
RETURN swg_cur_out;
|
||||
|
||||
END get_auction_attributes;
|
||||
end cm_loader;
|
||||
/
|
||||
@@ -0,0 +1,21 @@
|
||||
CREATE OR REPLACE PACKAGE cm_loader is
|
||||
|
||||
TYPE swg_cur IS REF CURSOR;
|
||||
|
||||
FUNCTION get_location_list return swg_cur;
|
||||
--
|
||||
--
|
||||
--
|
||||
FUNCTION get_bid_list return swg_cur;
|
||||
--
|
||||
--
|
||||
--
|
||||
FUNCTION get_auction_list return swg_cur;
|
||||
--
|
||||
--
|
||||
--
|
||||
FUNCTION get_auction_attributes RETURN swg_cur;
|
||||
|
||||
end cm_loader;
|
||||
/
|
||||
grant execute on cm_loader to public;
|
||||
@@ -0,0 +1,285 @@
|
||||
CREATE OR REPLACE package body cm_persister
|
||||
as
|
||||
|
||||
procedure update_auction_locations (p_location_id VAOFSTRING,
|
||||
p_location_name VAOFSTRING,
|
||||
p_owner_id VAOFSTRING,
|
||||
p_sales_tax VAOFNUMBER,
|
||||
p_sales_tax_bank_id VAOFSTRING,
|
||||
p_empty_date VAOFNUMBER,
|
||||
p_last_access_date VAOFNUMBER,
|
||||
p_inactive_date VAOFNUMBER,
|
||||
p_status VAOFNUMBER,
|
||||
p_search_enabled VAOFSTRING,
|
||||
p_entrance_charge VAOFNUMBER,
|
||||
p_chunk_size number)
|
||||
as
|
||||
errors number;
|
||||
dml_errors EXCEPTION;
|
||||
PRAGMA exception_init(dml_errors, -24381);
|
||||
begin
|
||||
FORALL i in 1..p_chunk_size save exceptions
|
||||
UPDATE AUCTION_LOCATIONS Set
|
||||
location_name = DECODE(p_location_name(i), NULL, location_name, p_location_name(i)),
|
||||
owner_id = DECODE(p_owner_id(i), NULL, owner_id, p_owner_id(i)),
|
||||
sales_tax = DECODE(p_sales_tax(i), NULL, sales_tax, p_sales_tax(i)),
|
||||
sales_tax_bank_id = DECODE(p_sales_tax_bank_id(i), NULL, sales_tax_bank_id, p_sales_tax_bank_id(i)),
|
||||
empty_date = DECODE(p_empty_date(i), NULL, empty_date, p_empty_date(i)),
|
||||
last_access_date = DECODE(p_last_access_date(i), NULL, last_access_date, p_last_access_date(i)),
|
||||
inactive_date = DECODE(p_inactive_date(i), NULL, inactive_date, p_inactive_date(i)),
|
||||
status = DECODE(p_status(i), NULL, status, p_status(i)),
|
||||
search_enabled = DECODE(p_search_enabled(i), NULL, search_enabled, p_search_enabled(i)),
|
||||
entrance_charge = DECODE(p_entrance_charge(i), NULL, entrance_charge, p_entrance_charge(i))
|
||||
WHERE
|
||||
location_id = p_location_id(i);
|
||||
exception
|
||||
when dml_errors then
|
||||
errors := SQL%BULK_EXCEPTIONS.count;
|
||||
end;
|
||||
|
||||
procedure insert_auction_locations (p_location_id VAOFSTRING,
|
||||
p_location_name VAOFSTRING,
|
||||
p_owner_id VAOFSTRING,
|
||||
p_sales_tax VAOFNUMBER,
|
||||
p_sales_tax_bank_id VAOFSTRING,
|
||||
p_empty_date VAOFNUMBER,
|
||||
p_last_access_date VAOFNUMBER,
|
||||
p_inactive_date VAOFNUMBER,
|
||||
p_status VAOFNUMBER,
|
||||
p_search_enabled VAOFSTRING,
|
||||
p_entrance_charge VAOFNUMBER,
|
||||
p_chunk_size number)
|
||||
as
|
||||
errors number;
|
||||
k number;
|
||||
dml_errors EXCEPTION;
|
||||
PRAGMA exception_init(dml_errors, -24381);
|
||||
begin
|
||||
FORALL i in 1..p_chunk_size save exceptions
|
||||
INSERT into auction_locations (
|
||||
location_id,
|
||||
location_name,
|
||||
owner_id,
|
||||
sales_tax,
|
||||
sales_tax_bank_id,
|
||||
empty_date,
|
||||
last_access_date,
|
||||
inactive_date,
|
||||
status,
|
||||
search_enabled,
|
||||
entrance_charge )
|
||||
VALUES (
|
||||
p_location_id(i),
|
||||
p_location_name(i),
|
||||
p_owner_id(i),
|
||||
p_sales_tax(i),
|
||||
p_sales_tax_bank_id(i),
|
||||
p_empty_date(i),
|
||||
p_last_access_date(i),
|
||||
p_inactive_date(i),
|
||||
p_status(i),
|
||||
p_search_enabled(i),
|
||||
p_entrance_charge(i) );
|
||||
exception
|
||||
when dml_errors then
|
||||
errors := SQL%BULK_EXCEPTIONS.count;
|
||||
for j in 1..errors loop
|
||||
k := SQL%BULK_EXCEPTIONS(j).ERROR_INDEX;
|
||||
UPDATE auction_locations Set
|
||||
location_name = p_location_name(k),
|
||||
owner_id = p_owner_id(k),
|
||||
sales_tax = p_sales_tax(k),
|
||||
sales_tax_bank_id = p_sales_tax_bank_id(k),
|
||||
empty_date = p_empty_date(k),
|
||||
last_access_date = p_last_access_date(k),
|
||||
inactive_date = p_inactive_date(k),
|
||||
status = p_status(k),
|
||||
search_enabled = p_search_enabled(k),
|
||||
entrance_charge = p_entrance_charge(k)
|
||||
WHERE
|
||||
location_id = p_location_id(k);
|
||||
end loop;
|
||||
end;
|
||||
|
||||
procedure delete_auction_locations (p_location_id VAOFSTRING, p_chunk_size number)
|
||||
as
|
||||
errors number;
|
||||
dml_errors EXCEPTION;
|
||||
PRAGMA exception_init(dml_errors, -24381);
|
||||
begin
|
||||
FORALL i in 1..p_chunk_size save exceptions
|
||||
delete from auction_locations
|
||||
where location_id = p_location_id(i);
|
||||
exception
|
||||
when dml_errors then
|
||||
errors := SQL%BULK_EXCEPTIONS.count;
|
||||
end;
|
||||
|
||||
procedure insert_market_auction_bids (p_item_id VAOFSTRING,
|
||||
p_bidder_id VAOFSTRING,
|
||||
p_bid VAOFNUMBER,
|
||||
p_max_proxy_bid VAOFNUMBER,
|
||||
p_chunk_size number)
|
||||
as
|
||||
errors number;
|
||||
k number;
|
||||
dml_errors EXCEPTION;
|
||||
PRAGMA exception_init(dml_errors, -24381);
|
||||
begin
|
||||
FORALL i in 1..p_chunk_size save exceptions
|
||||
INSERT into market_auction_bids (
|
||||
item_id,
|
||||
bidder_id,
|
||||
bid,
|
||||
max_proxy_bid )
|
||||
VALUES (
|
||||
p_item_id(i),
|
||||
p_bidder_id(i),
|
||||
p_bid(i),
|
||||
p_max_proxy_bid(i) );
|
||||
exception
|
||||
when dml_errors then
|
||||
errors := SQL%BULK_EXCEPTIONS.count;
|
||||
for j in 1..errors loop
|
||||
k := SQL%BULK_EXCEPTIONS(j).ERROR_INDEX;
|
||||
UPDATE market_auction_bids Set
|
||||
bidder_id = p_bidder_id(k),
|
||||
bid = p_bid(k),
|
||||
max_proxy_bid = p_max_proxy_bid(k)
|
||||
WHERE
|
||||
item_id = p_item_id(k);
|
||||
end loop;
|
||||
end;
|
||||
|
||||
procedure update_market_auctions (p_item_id VAOFSTRING,
|
||||
p_owner_id VAOFSTRING,
|
||||
p_active VAOFNUMBER,
|
||||
p_chunk_size number)
|
||||
as
|
||||
errors number;
|
||||
dml_errors EXCEPTION;
|
||||
PRAGMA exception_init(dml_errors, -24381);
|
||||
begin
|
||||
FORALL i in 1..p_chunk_size save exceptions
|
||||
UPDATE market_auctions Set
|
||||
owner_id = DECODE(p_owner_id(i), NULL, owner_id, p_owner_id(i)),
|
||||
active = DECODE(p_active(i), NULL, active, p_active(i))
|
||||
WHERE
|
||||
item_id = p_item_id(i);
|
||||
exception
|
||||
when dml_errors then
|
||||
errors := SQL%BULK_EXCEPTIONS.count;
|
||||
end;
|
||||
|
||||
procedure insert_market_auctions (p_item_id VAOFSTRING,
|
||||
p_owner_id VAOFSTRING,
|
||||
p_creator_id VAOFSTRING,
|
||||
p_location_id VAOFSTRING,
|
||||
p_min_bid VAOFNUMBER,
|
||||
p_buy_now_price VAOFNUMBER,
|
||||
p_auction_timer VAOFNUMBER,
|
||||
p_oob VAOFLONGSTRING,
|
||||
p_user_description VAOFLONGSTRING,
|
||||
p_category VAOFNUMBER,
|
||||
p_item_name VAOFLONGSTRING,
|
||||
p_item_timer VAOFNUMBER,
|
||||
p_active VAOFNUMBER,
|
||||
p_item_size VAOFNUMBER,
|
||||
p_object_template_id VAOFNUMBER,
|
||||
p_chunk_size number)
|
||||
as
|
||||
errors number;
|
||||
k number;
|
||||
dml_errors EXCEPTION;
|
||||
PRAGMA exception_init(dml_errors, -24381);
|
||||
begin
|
||||
FORALL i in 1..p_chunk_size save exceptions
|
||||
INSERT into market_auctions (
|
||||
item_id,
|
||||
owner_id,
|
||||
creator_id,
|
||||
location_id,
|
||||
min_bid,
|
||||
buy_now_price,
|
||||
auction_timer,
|
||||
oob,
|
||||
user_description,
|
||||
category,
|
||||
item_name,
|
||||
item_timer,
|
||||
active,
|
||||
item_size,
|
||||
object_template_id )
|
||||
VALUES (
|
||||
p_item_id(i),
|
||||
p_owner_id(i),
|
||||
p_creator_id(i),
|
||||
p_location_id(i),
|
||||
p_min_bid(i),
|
||||
p_buy_now_price(i),
|
||||
p_auction_timer(i),
|
||||
p_oob(i),
|
||||
p_user_description(i),
|
||||
p_category(i),
|
||||
p_item_name(i),
|
||||
p_item_timer(i),
|
||||
p_active(i),
|
||||
p_item_size(i),
|
||||
p_object_template_id(i) );
|
||||
exception
|
||||
when dml_errors then
|
||||
errors := SQL%BULK_EXCEPTIONS.count;
|
||||
for j in 1..errors loop
|
||||
k := SQL%BULK_EXCEPTIONS(j).ERROR_INDEX;
|
||||
UPDATE market_auctions Set
|
||||
owner_id = p_owner_id(k),
|
||||
creator_id = p_creator_id(k),
|
||||
location_id = p_location_id(k),
|
||||
min_bid = p_min_bid(k),
|
||||
buy_now_price = p_buy_now_price(k),
|
||||
auction_timer = p_auction_timer(k),
|
||||
oob = p_oob(k),
|
||||
user_description = p_user_description(k),
|
||||
category = p_category(k),
|
||||
item_name = p_item_name(k),
|
||||
item_timer = p_item_timer(k),
|
||||
active = p_active(k),
|
||||
item_size = p_item_size(k),
|
||||
object_template_id = p_object_template_id(k)
|
||||
WHERE
|
||||
item_id = p_item_id(k);
|
||||
end loop;
|
||||
end;
|
||||
|
||||
procedure delete_market_auctions (p_item_id VAOFSTRING, p_chunk_size number)
|
||||
as
|
||||
errors number;
|
||||
dml_errors EXCEPTION;
|
||||
PRAGMA exception_init(dml_errors, -24381);
|
||||
begin
|
||||
FORALL i in 1..p_chunk_size save exceptions
|
||||
delete from market_auction_attributes
|
||||
where item_id = p_item_id(i);
|
||||
|
||||
FORALL i in 1..p_chunk_size save exceptions
|
||||
delete from market_auctions
|
||||
where item_id = p_item_id(i);
|
||||
--exception
|
||||
--when dml_errors then
|
||||
--errors := SQL%BULK_EXCEPTIONS.count;
|
||||
end;
|
||||
|
||||
procedure insert_auction_attributes (p_item_id VAOFSTRING, p_attribute_name VAOFSTRING, p_attribute_value VAOFSTRING, p_chunk_size number)
|
||||
as
|
||||
dml_errors EXCEPTION;
|
||||
PRAGMA exception_init(dml_errors, -24381);
|
||||
begin
|
||||
FORALL i in 1..p_chunk_size save exceptions
|
||||
insert into market_auction_attributes (item_id, attribute_name, attribute_value)
|
||||
values (p_item_id(i), p_attribute_name(i), p_attribute_value(i));
|
||||
exception when dml_errors then
|
||||
null;
|
||||
end;
|
||||
end;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
CREATE OR REPLACE package cm_persister
|
||||
as
|
||||
type refcursor is ref cursor;
|
||||
subtype objectid is number;
|
||||
|
||||
procedure update_auction_locations (p_location_id VAOFSTRING,
|
||||
p_location_name VAOFSTRING,
|
||||
p_owner_id VAOFSTRING,
|
||||
p_sales_tax VAOFNUMBER,
|
||||
p_sales_tax_bank_id VAOFSTRING,
|
||||
p_empty_date VAOFNUMBER,
|
||||
p_last_access_date VAOFNUMBER,
|
||||
p_inactive_date VAOFNUMBER,
|
||||
p_status VAOFNUMBER,
|
||||
p_search_enabled VAOFSTRING,
|
||||
p_entrance_charge VAOFNUMBER,
|
||||
p_chunk_size number);
|
||||
procedure insert_auction_locations (p_location_id VAOFSTRING,
|
||||
p_location_name VAOFSTRING,
|
||||
p_owner_id VAOFSTRING,
|
||||
p_sales_tax VAOFNUMBER,
|
||||
p_sales_tax_bank_id VAOFSTRING,
|
||||
p_empty_date VAOFNUMBER,
|
||||
p_last_access_date VAOFNUMBER,
|
||||
p_inactive_date VAOFNUMBER,
|
||||
p_status VAOFNUMBER,
|
||||
p_search_enabled VAOFSTRING,
|
||||
p_entrance_charge VAOFNUMBER,
|
||||
p_chunk_size number);
|
||||
procedure delete_auction_locations (p_location_id VAOFSTRING, p_chunk_size number);
|
||||
|
||||
procedure insert_market_auction_bids (p_item_id VAOFSTRING,
|
||||
p_bidder_id VAOFSTRING,
|
||||
p_bid VAOFNUMBER,
|
||||
p_max_proxy_bid VAOFNUMBER,
|
||||
p_chunk_size number);
|
||||
|
||||
procedure update_market_auctions (p_item_id VAOFSTRING,
|
||||
p_owner_id VAOFSTRING,
|
||||
p_active VAOFNUMBER,
|
||||
p_chunk_size number);
|
||||
procedure insert_market_auctions (p_item_id VAOFSTRING,
|
||||
p_owner_id VAOFSTRING,
|
||||
p_creator_id VAOFSTRING,
|
||||
p_location_id VAOFSTRING,
|
||||
p_min_bid VAOFNUMBER,
|
||||
p_buy_now_price VAOFNUMBER,
|
||||
p_auction_timer VAOFNUMBER,
|
||||
p_oob VAOFLONGSTRING,
|
||||
p_user_description VAOFLONGSTRING,
|
||||
p_category VAOFNUMBER,
|
||||
p_item_name VAOFLONGSTRING,
|
||||
p_item_timer VAOFNUMBER,
|
||||
p_active VAOFNUMBER,
|
||||
p_item_size VAOFNUMBER,
|
||||
p_object_template_id VAOFNUMBER,
|
||||
p_chunk_size number);
|
||||
procedure delete_market_auctions (p_item_id VAOFSTRING, p_chunk_size number);
|
||||
|
||||
procedure insert_auction_attributes (p_item_id VAOFSTRING, p_attribute_name VAOFSTRING, p_attribute_value VAOFSTRING, p_chunk_size number);
|
||||
|
||||
end;
|
||||
/
|
||||
|
||||
grant execute on cm_persister to public;
|
||||
@@ -0,0 +1,130 @@
|
||||
create or replace package body custserv_procs
|
||||
as
|
||||
|
||||
function get_characters_for_account
|
||||
(
|
||||
station_id_in IN players.station_id%TYPE
|
||||
)
|
||||
return cursortype
|
||||
is
|
||||
result cursortype;
|
||||
begin
|
||||
open result for
|
||||
select
|
||||
character_object, uc_character_name
|
||||
from
|
||||
players
|
||||
where
|
||||
station_id = station_id_in;
|
||||
return result;
|
||||
end get_characters_for_account;
|
||||
|
||||
function get_deleted_items
|
||||
(
|
||||
character_id_in IN objects.load_with%TYPE,
|
||||
start_page_in IN number
|
||||
)
|
||||
return cursortype
|
||||
is
|
||||
result cursortype;
|
||||
begin
|
||||
open result for
|
||||
select * from
|
||||
(select a.*, rownum RN from
|
||||
( select
|
||||
o.object_id, name_string_table, name_string_text, object_name
|
||||
from objects o,
|
||||
(select object_id from objects where contained_by = character_id_in and object_template_id = -1783727815) datapad,
|
||||
(select object_id from tangible_objects where owner_id = character_id_in) tangibles
|
||||
where
|
||||
( deleted > 0 )
|
||||
and ( o.object_id = tangibles.object_id
|
||||
or contained_by = datapad.object_id)
|
||||
order by deleted_date desc ) a
|
||||
where rownum <= start_page_in * 20 + 20)
|
||||
where rn >= start_page_in * 20;
|
||||
return result;
|
||||
end get_deleted_items;
|
||||
|
||||
function get_structures
|
||||
(
|
||||
character_id_in IN objects.object_id%TYPE
|
||||
)
|
||||
return cursortype
|
||||
is
|
||||
result cursortype;
|
||||
begin
|
||||
open result for
|
||||
select o.object_id as object_id,
|
||||
o.x as x,
|
||||
o.y as y,
|
||||
o.z as z,
|
||||
o.scene_id as scene_id,
|
||||
o.name_string_text as object_template,
|
||||
o.deleted as deleted
|
||||
from objects o, tangible_objects tan
|
||||
where tan.owner_id = character_id_in
|
||||
and tan.object_id = o.object_id
|
||||
and ( (o.object_id in (select object_id from building_objects ) )
|
||||
or ( o.object_id in (select object_id from installation_objects) ) );
|
||||
return result;
|
||||
end get_structures;
|
||||
|
||||
function get_player_id
|
||||
(
|
||||
character_name_in IN players.uc_character_name%TYPE
|
||||
)
|
||||
return cursortype
|
||||
is
|
||||
result cursortype;
|
||||
begin
|
||||
open result for
|
||||
select character_object, station_id
|
||||
from players
|
||||
where upper(uc_character_name) = upper(character_name_in);
|
||||
return result;
|
||||
end get_player_id;
|
||||
|
||||
procedure move_player
|
||||
(
|
||||
character_id_in IN objects.object_id%TYPE,
|
||||
x_in IN objects.x%TYPE,
|
||||
y_in IN objects.y%TYPE,
|
||||
z_in IN objects.z%TYPE,
|
||||
scene_in IN objects.scene_id%TYPE
|
||||
)
|
||||
as
|
||||
begin
|
||||
update objects
|
||||
set x = x_in,
|
||||
y = y_in,
|
||||
z = z_in,
|
||||
scene_id = scene_in
|
||||
where object_id = character_id_in;
|
||||
end move_player;
|
||||
|
||||
procedure undelete_item
|
||||
(
|
||||
character_id_in IN objects.object_id%TYPE,
|
||||
object_in IN objects.object_id%TYPE,
|
||||
move_in IN number
|
||||
)
|
||||
as
|
||||
restore_result number;
|
||||
begin
|
||||
restore_result := admin.undelete_item(object_in);
|
||||
if ((restore_result != 1) and (restore_result != 4)) then
|
||||
return;
|
||||
end if;
|
||||
|
||||
if (move_in > 0) then
|
||||
restore_result := admin.move_item_to_player(object_in, character_id_in);
|
||||
end if;
|
||||
return;
|
||||
exception
|
||||
when others then
|
||||
return;
|
||||
end undelete_item;
|
||||
|
||||
end custserv_procs;
|
||||
/
|
||||
@@ -0,0 +1,49 @@
|
||||
create or replace package custserv_procs
|
||||
as
|
||||
type cursortype is ref cursor;
|
||||
function get_characters_for_account
|
||||
(
|
||||
station_id_in IN players.station_id%TYPE
|
||||
)
|
||||
return cursortype;
|
||||
|
||||
function get_deleted_items
|
||||
(
|
||||
character_id_in IN objects.load_with%TYPE,
|
||||
start_page_in IN number
|
||||
)
|
||||
return cursortype;
|
||||
|
||||
function get_structures
|
||||
(
|
||||
character_id_in IN objects.object_id%TYPE
|
||||
)
|
||||
return cursortype;
|
||||
|
||||
function get_player_id
|
||||
(
|
||||
character_name_in IN players.uc_character_name%TYPE
|
||||
)
|
||||
return cursortype;
|
||||
|
||||
procedure move_player
|
||||
(
|
||||
character_id_in IN objects.object_id%TYPE,
|
||||
x_in IN objects.x%TYPE,
|
||||
y_in IN objects.y%TYPE,
|
||||
z_in IN objects.z%TYPE,
|
||||
scene_in IN objects.scene_id%TYPE
|
||||
);
|
||||
|
||||
procedure undelete_item
|
||||
(
|
||||
character_id_in IN objects.object_id%TYPE,
|
||||
object_in IN objects.object_id%TYPE,
|
||||
move_in IN number
|
||||
);
|
||||
|
||||
end custserv_procs;
|
||||
|
||||
/
|
||||
grant execute on custserv_procs to public;
|
||||
|
||||
@@ -0,0 +1,306 @@
|
||||
create or replace package body data_cleanup
|
||||
as
|
||||
procedure run_cleanup as
|
||||
begin
|
||||
delete messages
|
||||
where not exists (
|
||||
select 1 from objects
|
||||
where objects.object_id = messages.target);
|
||||
end;
|
||||
|
||||
procedure run_fix_bad_cells as
|
||||
|
||||
v_count PLS_INTEGER := 0;
|
||||
|
||||
begin
|
||||
|
||||
FOR x IN
|
||||
(
|
||||
SELECT * from
|
||||
(
|
||||
SELECT a.object_id, a.contained_by, a.load_with, a.deleted,
|
||||
(select contained_by from objects where object_id = a.contained_by) contained_by_value
|
||||
FROM objects a, cell_objects b
|
||||
WHERE a.object_id = b.object_id
|
||||
)
|
||||
where contained_by_value = 0 and
|
||||
contained_by != load_with
|
||||
)
|
||||
LOOP
|
||||
|
||||
UPDATE objects
|
||||
SET load_with = x.contained_by
|
||||
where object_id = x.object_id;
|
||||
|
||||
v_count := v_count + 1;
|
||||
IF (MOD(v_count, 1000) = 0) then
|
||||
COMMIT;
|
||||
END IF;
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
|
||||
run_fix_houses_w_bad_cells;
|
||||
|
||||
end;
|
||||
|
||||
procedure run_fix_houses_w_bad_cells as
|
||||
|
||||
v_count PLS_INTEGER := 0;
|
||||
v_last_contained_by NUMBER := -1;
|
||||
v_current_contained_by NUMBER := 0;
|
||||
v_retval NUMBER;
|
||||
|
||||
begin
|
||||
|
||||
FOR x IN
|
||||
(
|
||||
select o1.object_id, o1.contained_by
|
||||
from cell_objects c, objects o1, objects o2
|
||||
where c.object_id = o1.object_id
|
||||
and o1.deleted > 0
|
||||
and o2.object_id = o1.contained_by
|
||||
and o2.deleted = 0
|
||||
order by o1.contained_by
|
||||
)
|
||||
LOOP
|
||||
|
||||
v_current_contained_by := x.contained_by;
|
||||
|
||||
UPDATE objects
|
||||
SET deleted = 13,
|
||||
deleted_date = SYSDATE + 100
|
||||
where object_id = x.object_id;
|
||||
|
||||
IF (((v_current_contained_by != v_last_contained_by) and v_last_contained_by >=0)) THEN
|
||||
|
||||
UPDATE objects
|
||||
SET deleted = 13,
|
||||
deleted_date = SYSDATE + 100
|
||||
where object_id = v_last_contained_by;
|
||||
|
||||
v_retval := admin.restore_house (v_last_contained_by);
|
||||
-- result codes:
|
||||
-- 1 = success
|
||||
-- 2 = not a character or not deleted
|
||||
-- 3 = database error
|
||||
|
||||
|
||||
END IF;
|
||||
|
||||
|
||||
v_count := v_count + 1;
|
||||
IF (MOD(v_count, 1000) = 0) then
|
||||
COMMIT;
|
||||
END IF;
|
||||
|
||||
v_last_contained_by := v_current_contained_by;
|
||||
|
||||
END LOOP;
|
||||
|
||||
UPDATE objects
|
||||
SET deleted = 13,
|
||||
deleted_date = SYSDATE + 100
|
||||
where object_id = v_last_contained_by;
|
||||
|
||||
v_retval := admin.restore_house (v_last_contained_by);
|
||||
|
||||
|
||||
COMMIT;
|
||||
|
||||
end;
|
||||
|
||||
function getObjectsWithExpMessages return cursortype as
|
||||
result_cursor cursortype;
|
||||
begin
|
||||
open result_cursor for
|
||||
select target from messages where method='C++experience' group by target having count(*) > 100 order by count(*) desc;
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
function getExperienceGrants(p_object_id objectid) return cursortype as
|
||||
result_cursor cursortype;
|
||||
begin
|
||||
open result_cursor for
|
||||
select data from messages where target=p_object_id and method='C++experience';
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
procedure delete_experience(p_object_id objectid) as
|
||||
begin
|
||||
delete messages where target=p_object_id and method='C++experience';
|
||||
end;
|
||||
|
||||
procedure grant_experience(p_object_id objectid, p_experience_data varchar2) as
|
||||
begin
|
||||
insert into messages (message_id, target, method, data, call_time, guaranteed, delivery_type)
|
||||
values (objectidmanager.get_single_id(), p_object_id, 'C++experience', p_experience_data, 0, 'Y', 0);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Delete 10,000 unused object variables at a time
|
||||
function object_variable_name_cleanup return number
|
||||
as
|
||||
begin
|
||||
delete from object_variable_names where id not in (select name_id from object_variables group by name_id) and rownum < 10000;
|
||||
commit;
|
||||
return sql%rowcount;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
-- Delete 25,000 orphaned rows at a time
|
||||
function orphaned_object_cleanup return number
|
||||
as
|
||||
begin
|
||||
update objects set deleted = 7 where contained_by != 0 and contained_by not in (select object_id from objects) and deleted = 0 and rownum < 25000;
|
||||
commit;
|
||||
return sql%rowcount;
|
||||
end;
|
||||
|
||||
|
||||
-- Delete 10,000 orphaned attribute rows at a time
|
||||
function market_attributes_cleanup return number
|
||||
as
|
||||
begin
|
||||
delete from market_auction_attributes where market_auction_attributes.ITEM_ID not in (select market_auctions.ITEM_ID from market_auctions group by market_auctions.ITEM_ID) and rownum < 10000;
|
||||
commit;
|
||||
return sql%rowcount;
|
||||
end;
|
||||
|
||||
|
||||
-- Delete 50,000 orphaned message rows at a time
|
||||
function messages_cleanup return number
|
||||
as
|
||||
begin
|
||||
|
||||
delete messages
|
||||
where not exists (
|
||||
select 1 from objects
|
||||
where objects.object_id = messages.target) and rownum < 50000;
|
||||
commit;
|
||||
return sql%rowcount;
|
||||
end;
|
||||
|
||||
|
||||
-- Delete 25,000 orphaned vendor object rows at a time
|
||||
function vendor_object_cleanup return number
|
||||
as
|
||||
begin
|
||||
update objects set deleted = 9 where
|
||||
deleted = 0
|
||||
and
|
||||
object_id not in (select item_id from market_auctions)
|
||||
and
|
||||
contained_by in (select object_id from objects where script_list like '%terminal.vendor:%')
|
||||
and
|
||||
rownum < 25000;
|
||||
|
||||
commit;
|
||||
return sql%rowcount;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
-- Delete 10,000 broken object rows at a time
|
||||
function broken_object_cleanup return number
|
||||
as
|
||||
numrows number;
|
||||
begin
|
||||
numrows := 0;
|
||||
|
||||
|
||||
delete from building_objects where not exists ( select 1 from objects where objects.object_id = building_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from cell_objects where not exists ( select 1 from objects where objects.object_id = cell_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from city_objects where not exists ( select 1 from objects where objects.object_id = city_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from creature_objects where not exists ( select 1 from objects where objects.object_id = creature_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from factory_objects where not exists ( select 1 from objects where objects.object_id = factory_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from harvester_installation_objects where not exists ( select 1 from objects where objects.object_id = harvester_installation_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from installation_objects where not exists ( select 1 from objects where objects.object_id = installation_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from intangible_objects where not exists ( select 1 from objects where objects.object_id = intangible_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from manf_schematic_objects where not exists ( select 1 from objects where objects.object_id = manf_schematic_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from manufacture_inst_objects where not exists ( select 1 from objects where objects.object_id = manufacture_inst_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from mission_objects where not exists ( select 1 from objects where objects.object_id = mission_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from planet_objects where not exists ( select 1 from objects where objects.object_id = planet_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from player_objects where not exists ( select 1 from objects where objects.object_id = player_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from ship_objects where not exists ( select 1 from objects where objects.object_id = ship_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from static_objects where not exists ( select 1 from objects where objects.object_id = static_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from tangible_objects where not exists ( select 1 from objects where objects.object_id = tangible_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from token_objects where not exists ( select 1 from objects where objects.object_id = token_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from universe_objects where not exists ( select 1 from objects where objects.object_id = universe_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from vehicle_objects where not exists ( select 1 from objects where objects.object_id = vehicle_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
delete from weapon_objects where not exists ( select 1 from objects where objects.object_id = weapon_objects.object_id ) and rownum < 10000;
|
||||
commit;
|
||||
numrows := numrows + sql%rowcount;
|
||||
|
||||
return numrows;
|
||||
end;
|
||||
|
||||
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,20 @@
|
||||
CREATE OR REPLACE package data_cleanup
|
||||
as
|
||||
type cursortype is ref cursor;
|
||||
subtype objectid is number;
|
||||
|
||||
procedure run_fix_bad_cells;
|
||||
procedure run_fix_houses_w_bad_cells;
|
||||
function getObjectsWithExpMessages return cursortype;
|
||||
function getExperienceGrants(p_object_id objectid) return cursortype;
|
||||
procedure delete_experience(p_object_id objectid);
|
||||
procedure grant_experience(p_object_id objectid, p_experience_data varchar2);
|
||||
function object_variable_name_cleanup return number;
|
||||
function orphaned_object_cleanup return number;
|
||||
function market_attributes_cleanup return number;
|
||||
function messages_cleanup return number;
|
||||
function vendor_object_cleanup return number;
|
||||
function broken_object_cleanup return number;
|
||||
end;
|
||||
/
|
||||
grant execute on data_cleanup to public;
|
||||
@@ -0,0 +1,99 @@
|
||||
create or replace package body datalookup
|
||||
as
|
||||
|
||||
function check_character_name(p_name varchar2) return number as
|
||||
obj_id number;
|
||||
begin
|
||||
select character_object
|
||||
into obj_id
|
||||
from players
|
||||
where uc_character_name = p_name;
|
||||
|
||||
if (obj_id is null) then
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
end if;
|
||||
|
||||
exception
|
||||
when no_data_found then
|
||||
return 0;
|
||||
|
||||
when too_many_rows then
|
||||
return 1;
|
||||
end;
|
||||
|
||||
function get_structures_for_purge(p_station_id number) return refcursor
|
||||
as
|
||||
result_cursor refcursor;
|
||||
begin
|
||||
open result_cursor for
|
||||
select o.object_id, t.owner_id
|
||||
from players p, tangible_objects t, objects o
|
||||
where p.station_id = p_station_id
|
||||
and p.character_object = t.owner_id
|
||||
and t.object_id = o.object_id
|
||||
and o.contained_by = 0
|
||||
and o.deleted = 0
|
||||
and o.type_id in (1112885583, 1212763727, 1296649807) --house, harvester, factory
|
||||
-- exclude city halls and faction hqs
|
||||
and o.object_template_id not in
|
||||
(2104917241, -1402078881, -1650739949, 1078805016, -1085193189, -2036447549,
|
||||
-1503538066, 1083153409, -1889839602, 2103485856, -1318727266, -447776542,
|
||||
-278088733, 456016075, 2103180392, -1782254683, 1221154416, 943757712,
|
||||
344955127, -1651881206, -1428516812, 121334480, -1391658348, 585958560,
|
||||
1568866170, -970221632, 1490696786, -274776875, 1419804026, -1907246,
|
||||
-714325274, -2102543938, -382786695);
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
function get_vendors_for_purge(p_station_id number) return refcursor
|
||||
as
|
||||
result_cursor refcursor;
|
||||
begin
|
||||
open result_cursor for
|
||||
-- get all vendors owned by this station_id
|
||||
select o.object_id, t.owner_id, o.object_name
|
||||
from players p, tangible_objects t, objects o
|
||||
where p.station_id = p_station_id
|
||||
and p.character_object = t.owner_id
|
||||
and t.object_id = o.object_id
|
||||
and o.deleted = 0
|
||||
and o.script_list like '%terminal.vendor:%'
|
||||
|
||||
union
|
||||
-- plus all vendors in purge structures owned by this station_id
|
||||
select t.object_id, t.owner_id, o.object_name
|
||||
from tangible_objects t, objects o
|
||||
where t.object_id in
|
||||
(
|
||||
select object_id
|
||||
from objects
|
||||
where deleted = 0
|
||||
and script_list like '%terminal.vendor:%'
|
||||
start with object_id in
|
||||
(
|
||||
select o.object_id
|
||||
from players p, tangible_objects t, objects o
|
||||
where p.station_id = p_station_id
|
||||
and p.character_object = t.owner_id
|
||||
and t.object_id = o.object_id
|
||||
and o.deleted = 0
|
||||
and o.type_id in (1112885583, 1212763727, 1296649807) --house, harvester, factory
|
||||
-- exclude city halls and faction hqs
|
||||
and o.object_template_id not in
|
||||
(2104917241, -1402078881, -1650739949, 1078805016, -1085193189, -2036447549,
|
||||
-1503538066, 1083153409, -1889839602, 2103485856, -1318727266, -447776542,
|
||||
-278088733, 456016075, 2103180392, -1782254683, 1221154416, 943757712,
|
||||
344955127, -1651881206, -1428516812, 121334480, -1391658348, 585958560,
|
||||
1568866170, -970221632, 1490696786, -274776875, 1419804026, -1907246,
|
||||
-714325274, -2102543938, -382786695)
|
||||
)
|
||||
connect by contained_by = prior object_id
|
||||
) and t.object_id = o.object_id;
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,11 @@
|
||||
create or replace package datalookup
|
||||
as
|
||||
type refcursor is ref cursor;
|
||||
|
||||
function check_character_name(p_name varchar2) return number;
|
||||
function get_structures_for_purge(p_station_id number) return refcursor;
|
||||
function get_vendors_for_purge(p_station_id number) return refcursor;
|
||||
|
||||
end;
|
||||
/
|
||||
grant execute on datalookup to public;
|
||||
@@ -0,0 +1,20 @@
|
||||
create or replace package body gold_override as
|
||||
|
||||
function load_objvar_overrides(p_schema varchar2) return cursortype
|
||||
as
|
||||
result_cursor cursortype;
|
||||
begin
|
||||
open result_cursor for
|
||||
'select /*+ ORDERED USE_NL(T)*/ ' ||
|
||||
't.object_id, t.name_id, t.type, t.value ' ||
|
||||
'from ' ||
|
||||
p_schema || 'object_list l, ' ||
|
||||
'object_variables t ' ||
|
||||
'where l.object_id = t.object_id ' ||
|
||||
'and nvl(t.detached,0) = 0';
|
||||
|
||||
return result_cursor;
|
||||
end;
|
||||
|
||||
end;
|
||||
/
|
||||
@@ -0,0 +1,8 @@
|
||||
create or replace package gold_override
|
||||
as
|
||||
type cursortype is ref cursor;
|
||||
|
||||
function load_objvar_overrides(p_schema varchar2) return cursortype;
|
||||
end;
|
||||
/
|
||||
grant execute on gold_override to public;
|
||||
@@ -0,0 +1,109 @@
|
||||
create or replace package body lazy_deleter as
|
||||
|
||||
procedure purge_one_object (object_in in number) as
|
||||
BEGIN
|
||||
DELETE FROM armor WHERE object_id = object_in;
|
||||
DELETE FROM battlefield_marker_objects WHERE object_id = object_in;
|
||||
DELETE FROM battlefield_participants WHERE region_object_id = object_in;
|
||||
DELETE FROM battlefield_participants WHERE character_object_id = object_in;
|
||||
DELETE FROM biographies WHERE object_id = object_in;
|
||||
DELETE FROM building_objects WHERE object_id = object_in;
|
||||
DELETE FROM cell_objects WHERE object_id = object_in;
|
||||
DELETE FROM city_objects WHERE object_id = object_in;
|
||||
DELETE FROM creature_objects WHERE object_id = object_in;
|
||||
DELETE FROM experience_points WHERE object_id = object_in;
|
||||
DELETE FROM factory_objects WHERE object_id = object_in;
|
||||
DELETE FROM guild_objects WHERE object_id = object_in;
|
||||
DELETE FROM harvester_installation_objects WHERE object_id = object_in;
|
||||
DELETE FROM installation_objects WHERE object_id = object_in;
|
||||
DELETE FROM intangible_objects WHERE object_id = object_in;
|
||||
DELETE FROM location_lists WHERE object_id = object_in;
|
||||
DELETE FROM manf_schematic_attributes WHERE object_id = object_in;
|
||||
DELETE FROM manf_schematic_objects WHERE object_id = object_in;
|
||||
DELETE FROM manufacture_inst_objects WHERE object_id = object_in;
|
||||
DELETE FROM mission_objects WHERE object_id = object_in;
|
||||
DELETE FROM object_variables WHERE object_id = object_in;
|
||||
DELETE FROM planet_objects WHERE object_id = object_in;
|
||||
DELETE FROM player_objects WHERE object_id = object_in;
|
||||
DELETE FROM player_quest_objects WHERE object_id = object_in;
|
||||
DELETE FROM property_lists WHERE object_id = object_in;
|
||||
DELETE FROM resource_container_objects WHERE object_id = object_in;
|
||||
DELETE FROM scripts WHERE object_id = object_in;
|
||||
DELETE FROM ship_objects WHERE object_id = object_in;
|
||||
DELETE FROM static_objects WHERE object_id = object_in;
|
||||
DELETE FROM swg_characters WHERE object_id = object_in;
|
||||
DELETE FROM tangible_objects WHERE object_id = object_in;
|
||||
DELETE FROM temp_characters WHERE object_id = object_in;
|
||||
DELETE FROM token_objects WHERE object_id = object_in;
|
||||
DELETE FROM universe_objects WHERE object_id = object_in;
|
||||
DELETE FROM vehicle_objects WHERE object_id = object_in;
|
||||
DELETE FROM waypoints WHERE object_id = object_in;
|
||||
DELETE FROM weapon_objects WHERE object_id = object_in;
|
||||
DELETE FROM messages WHERE target = object_in;
|
||||
DELETE FROM objects WHERE object_id = object_in;
|
||||
END purge_one_object;
|
||||
|
||||
procedure purge_objects_bulk(p_object_id VAOFSTRING, p_chunk_size number, p_enable_db_logging number )
|
||||
as
|
||||
|
||||
errors NUMBER;
|
||||
|
||||
begin
|
||||
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM armor WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM battlefield_marker_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM battlefield_participants WHERE region_object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM battlefield_participants WHERE character_object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM biographies WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM building_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM cell_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM city_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM creature_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM experience_points WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM factory_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM guild_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM harvester_installation_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM installation_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM intangible_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM location_lists WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM manf_schematic_attributes WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM manf_schematic_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM manufacture_inst_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM mission_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM object_variables WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM planet_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM player_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM player_quest_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM property_lists WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM resource_container_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM scripts WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM static_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM swg_characters WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM tangible_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM temp_characters WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM token_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM universe_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM vehicle_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM waypoints WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM weapon_objects WHERE object_id = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM messages WHERE target = p_object_id(i);
|
||||
FORALL i in 1..p_chunk_size SAVE EXCEPTIONS DELETE FROM objects WHERE object_id = p_object_id(i);
|
||||
|
||||
exception when others then
|
||||
if ( p_enable_db_logging > 0 ) then
|
||||
errors:=SQL%BULK_EXCEPTIONS.COUNT;
|
||||
FOR x IN 1..errors LOOP
|
||||
db_error_logger.dblogerror( -SQL%BULK_EXCEPTIONS(x).ERROR_CODE, 'procedure purge_objects_bulk: error occurred in FORALL DELETE during iteration: ' || SQL%BULK_EXCEPTIONS(x).ERROR_INDEX );
|
||||
if ( p_enable_db_logging > 1 ) then
|
||||
db_error_logger.dblogerror_values( 'lazy deleter', 'object_id' , 'number', p_object_id(to_number(SQL%BULK_EXCEPTIONS(x).ERROR_INDEX)));
|
||||
end if;
|
||||
END LOOP;
|
||||
|
||||
else
|
||||
NULL;
|
||||
end if;
|
||||
|
||||
end;
|
||||
|
||||
end lazy_deleter;
|
||||
/
|
||||
@@ -0,0 +1,6 @@
|
||||
create or replace package lazy_deleter as
|
||||
procedure purge_one_object(object_in in number);
|
||||
procedure purge_objects_bulk(p_object_id VAOFSTRING, p_chunk_size number, p_enable_db_logging number);
|
||||
end lazy_deleter;
|
||||
/
|
||||
grant execute on lazy_deleter to public;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user