mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-14 00:01:30 -04:00
1445 lines
57 KiB
SQL
1445 lines
57 KiB
SQL
CREATE OR REPLACE PACKAGE "HOTFIX_3" as
|
|
procedure StartItemConversion (rbs_to_use varchar2 default null, conversion_id number default 1);
|
|
procedure DoSingleObject (objectId number, conversion_id number default 1);
|
|
end;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY "HOTFIX_3" as
|
|
-- private type defs
|
|
type objVarType is record (
|
|
object_id number := NULL,
|
|
objvar_name varchar2(500) := NULL,
|
|
objvar_type number := NULL,
|
|
objvar_value varchar2(1000) := NULL,
|
|
objvar_name_id number := 0,
|
|
old_objvar_name_id number := 0);
|
|
|
|
type objRowType is record (
|
|
object_id number,
|
|
object_template_id number,
|
|
object_name varchar2(127), name_string_table varchar2(500), name_string_text varchar2(500),
|
|
objvar_0_name varchar2(50), objvar_0_type number, objvar_0_value varchar2(50),
|
|
objvar_1_name varchar2(50), objvar_1_type number, objvar_1_value varchar2(50),
|
|
objvar_2_name varchar2(50), objvar_2_type number, objvar_2_value varchar2(50),
|
|
objvar_3_name varchar2(50), objvar_3_type number, objvar_3_value varchar2(50),
|
|
objvar_4_name varchar2(50), objvar_4_type number, objvar_4_value varchar2(50),
|
|
objvar_5_name varchar2(50), objvar_5_type number, objvar_5_value varchar2(50),
|
|
objvar_6_name varchar2(50), objvar_6_type number, objvar_6_value varchar2(50),
|
|
objvar_7_name varchar2(50), objvar_7_type number, objvar_7_value varchar2(50),
|
|
objvar_8_name varchar2(50), objvar_8_type number, objvar_8_value varchar2(50),
|
|
objvar_9_name varchar2(50), objvar_9_type number, objvar_9_value varchar2(50),
|
|
objvar_10_name varchar2(50), objvar_10_type number, objvar_10_value varchar2(50),
|
|
objvar_11_name varchar2(50), objvar_11_type number, objvar_11_value varchar2(50),
|
|
objvar_12_name varchar2(50), objvar_12_type number, objvar_12_value varchar2(50),
|
|
objvar_13_name varchar2(50), objvar_13_type number, objvar_13_value varchar2(50),
|
|
objvar_14_name varchar2(50), objvar_14_type number, objvar_14_value varchar2(50),
|
|
objvar_15_name varchar2(50), objvar_15_type number, objvar_15_value varchar2(50),
|
|
objvar_16_name varchar2(50), objvar_16_type number, objvar_16_value varchar2(50),
|
|
objvar_17_name varchar2(50), objvar_17_type number, objvar_17_value varchar2(50),
|
|
objvar_18_name varchar2(50), objvar_18_type number, objvar_18_value varchar2(50),
|
|
objvar_19_name varchar2(50), objvar_19_type number, objvar_19_value varchar2(50),
|
|
scriptlist varchar2(2000));
|
|
|
|
type objVarRowType is record (
|
|
object_id number,
|
|
objvar_name_id number,
|
|
objvar_name varchar2(500),
|
|
objvar_type number,
|
|
objvar_value varchar2(1000));
|
|
|
|
type weaponRowType is record (
|
|
object_id number,
|
|
min_damage number,
|
|
max_damage number,
|
|
attack_speed float,
|
|
wound_chance float,
|
|
accuracy number,
|
|
attack_cost number,
|
|
min_range float,
|
|
max_range float,
|
|
damage_type number,
|
|
elemental_type number,
|
|
elemental_value number);
|
|
|
|
type manfSchematicRowType is record (
|
|
object_id number,
|
|
draft_schematic number);
|
|
|
|
type manfAttributeRowType is record (
|
|
object_id number,
|
|
attribute varchar2(500),
|
|
value float);
|
|
|
|
type rangeType is varray(4) of number;
|
|
|
|
type rangeTableType is table of rangeType;
|
|
|
|
type numTable is table of number;
|
|
|
|
type varcharTable is table of varchar2(500);
|
|
|
|
type numTableVarchar is table of number
|
|
index by varchar2(500);
|
|
|
|
type varcharTableNum is table of varchar2(500)
|
|
index by binary_integer;
|
|
|
|
type objectObjVarArray is varray(20) of objVarType;
|
|
|
|
type objVarTable is table of objVarType
|
|
index by varchar2(500);
|
|
|
|
type dotObjVarTable is table of objVarType
|
|
index by varchar2(10);
|
|
|
|
type dotArrayVarchar is table of dotObjVarTable
|
|
index by varchar2(500);
|
|
|
|
type numTableNumber is table of number
|
|
index by binary_integer;
|
|
|
|
type dotsMatrixType is table of numTableNumber index by varchar2(50);
|
|
|
|
type manfAttributesTable is table of manfAttributeRowType
|
|
index by varchar2(500);
|
|
|
|
-- private global containers
|
|
use_rbs varchar2(50);
|
|
object_id number;
|
|
free_slots numTable; -- empty OBJECTS ObjVar columns
|
|
slot_map numTableVarchar; -- map from ObjVar name to OBJECTS slot
|
|
Obj_ObjVars objectObjVarArray; -- array of ObjVars in OBJECTS
|
|
OV_ObjVars objVarTable; -- map by name of ObjVars in OBJECT_VARIABLES
|
|
dot_list dotArrayVarchar; -- map from extracted DoT name and class to ObjVar
|
|
-- example: dot_list('actionShot1')('type')
|
|
isObjModified boolean; -- tracks if any of the OBJECTS data has changed
|
|
updated_objvars varcharTable; -- list of updated ObjVar names in OBJECT_VARIABLES
|
|
deleted_objvars varcharTable; -- list of deleted ObjVar names in OBJECT_VARIABLES
|
|
added_objvars varcharTable; -- list of added ObjVar names in OBJECT_VARIABLES
|
|
isSchematic boolean; -- tracks if the object has MANF_SCHEMATIC_OBJECTS data
|
|
isFactory boolean;
|
|
script_list varchar2(2000);
|
|
object_name varchar2(127);
|
|
name_table varchar2(500);
|
|
name_text varchar2(500);
|
|
template_id number;
|
|
new_template_id number;
|
|
new_schematic_id number;
|
|
err_num number;
|
|
|
|
-- private lookup tables
|
|
templateIdSet numTableNumber; -- set of template ids to be converted
|
|
objvarNameIdMap numTableVarchar; -- map from ObjVar name to OBJECT_VARIABLES_NAMES ID
|
|
schematic_map numTableNumber; -- map of schematic to created template
|
|
templateNameTable varcharTableNum; -- map of new template ids to string_name_table
|
|
templateNameText varcharTableNum; -- map of new template ids to string_name_text
|
|
|
|
|
|
-- private constants
|
|
blankObjVar objVarType; -- can't use CONSTANT properly with records :(
|
|
|
|
-- private function declaration
|
|
procedure DoItemConversionBatch(start_objectid number, end_objectid number, conversion_id number);
|
|
function InitializeData return boolean;
|
|
|
|
procedure AddObjVar (objvar_name varchar2, objvar_type number, objvar_value varchar2);
|
|
procedure DeleteObjVar (objVarName in varchar2);
|
|
procedure ModifyObjVar (oldObjVarName varchar2, objvar_name varchar2, objvar_type number, objvar_value varchar2);
|
|
procedure ModifyObjVar (oldObjVarName varchar2, objvar_name varchar2, objvar_type number, rangeTable rangeTableType);
|
|
procedure RenameObjVar (oldObjVarName varchar2, objvar_name varchar2);
|
|
function GetObjVarValue (objvar_name varchar2) return varchar2;
|
|
procedure AddScript (newScript varchar2);
|
|
procedure RemoveScript (oldScript varchar2);
|
|
procedure SetNewTemplateId (newTemplateId number);
|
|
procedure SetTemplateText (newTemplateId number);
|
|
procedure InvalidateSchematic;
|
|
|
|
procedure SetGenProtection(rangeTable rangeTableType);
|
|
procedure SetArmorCondLevelCat(condition varchar2, lev varchar2, category varchar2);
|
|
procedure SetArmorLevel(lev varchar);
|
|
procedure SetArmorCategory(category varchar2);
|
|
procedure SetGpAndCond(gp_name varchar2, gp_val varchar2, cond_name varchar2, cond_val varchar2);
|
|
|
|
procedure DeleteCraftingComponents;
|
|
|
|
function ConvertValue (oldvalue number, rangeTable rangeTableType) return number;
|
|
|
|
function SchematicMap(schematic_id number)
|
|
return number;
|
|
|
|
-- public function definitions
|
|
procedure StartItemConversion (rbs_to_use varchar2, conversion_id number)
|
|
is
|
|
maxObjectId number;
|
|
startObjectId number := 0;
|
|
starttime date := sysdate;
|
|
begin
|
|
use_rbs := rbs_to_use;
|
|
if use_rbs is not null then
|
|
execute immediate 'set transaction use rollback segment ' || use_rbs;
|
|
end if;
|
|
if (InitializeData) then
|
|
-- loop through all objects in batches
|
|
select max(object_id) into maxObjectId from objects;
|
|
while startObjectId < maxObjectId loop
|
|
dbms_output.put_line('starting batch: ' || startObjectId || ' time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
DoItemConversionBatch(startObjectId, startObjectId + 19999999999, conversion_id);
|
|
commit;
|
|
if use_rbs is not null then
|
|
execute immediate 'set transaction use rollback segment ' || use_rbs;
|
|
end if;
|
|
startObjectId := startObjectId + 20000000000;
|
|
end loop;
|
|
end if;
|
|
dbms_output.put_line('start time = ' || to_char(starttime, 'MM/DD/YY HH24:MI:SS'));
|
|
dbms_output.put_line('final time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
dbms_output.put_line('total time = ' || to_char(trunc((sysdate - starttime)*24*60)) || ' mins');
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error in StartItemConversion - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in StartItemConversion');
|
|
end;
|
|
|
|
procedure DoSingleObject (objectId number, conversion_id number)
|
|
is
|
|
begin
|
|
if (InitializeData) then
|
|
DoItemConversionBatch(objectId, objectId, conversion_id);
|
|
end if;
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error in DoSingleObject - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in ObjVarUpdates');
|
|
end;
|
|
|
|
-- private function definitions
|
|
procedure DoItemConversionBatch(start_objectid number, end_objectid number, conversion_id number)
|
|
is
|
|
-- cursors
|
|
objRow objRowType;
|
|
cursor objCursor (start_id number, end_id number) is
|
|
select
|
|
o.object_id,
|
|
o.object_template_id,
|
|
o.object_name, o.name_string_table, o.name_string_text,
|
|
o.objvar_0_name, o.objvar_0_type, o.objvar_0_value,
|
|
o.objvar_1_name, o.objvar_1_type, o.objvar_1_value,
|
|
o.objvar_2_name, o.objvar_2_type, o.objvar_2_value,
|
|
o.objvar_3_name, o.objvar_3_type, o.objvar_3_value,
|
|
o.objvar_4_name, o.objvar_4_type, o.objvar_4_value,
|
|
o.objvar_5_name, o.objvar_5_type, o.objvar_5_value,
|
|
o.objvar_6_name, o.objvar_6_type, o.objvar_6_value,
|
|
o.objvar_7_name, o.objvar_7_type, o.objvar_7_value,
|
|
o.objvar_8_name, o.objvar_8_type, o.objvar_8_value,
|
|
o.objvar_9_name, o.objvar_9_type, o.objvar_9_value,
|
|
o.objvar_10_name, o.objvar_10_type, o.objvar_10_value,
|
|
o.objvar_11_name, o.objvar_11_type, o.objvar_11_value,
|
|
o.objvar_12_name, o.objvar_12_type, o.objvar_12_value,
|
|
o.objvar_13_name, o.objvar_13_type, o.objvar_13_value,
|
|
o.objvar_14_name, o.objvar_14_type, o.objvar_14_value,
|
|
o.objvar_15_name, o.objvar_15_type, o.objvar_15_value,
|
|
o.objvar_16_name, o.objvar_16_type, o.objvar_16_value,
|
|
o.objvar_17_name, o.objvar_17_type, o.objvar_17_value,
|
|
o.objvar_18_name, o.objvar_18_type, o.objvar_18_value,
|
|
o.objvar_19_name, o.objvar_19_type, o.objvar_19_value,
|
|
script_list
|
|
from objects o
|
|
where object_id between start_id and end_id
|
|
and object_template_id in
|
|
(-983864428, 1594162622, -1438161694, 2042493214, 1210744947, 1120303977)
|
|
order by object_id;
|
|
|
|
objVarRow objVarRowType;
|
|
cursor objVarCursor (start_id number, end_id number) is
|
|
select
|
|
v.object_id,
|
|
v.name_id,
|
|
nvl(n.name, to_char(n.id)),
|
|
v.type,
|
|
v.value
|
|
from object_variables v, object_variable_names n
|
|
where v.object_id between start_id and end_id
|
|
and nvl(v.detached,0) = 0
|
|
and v.name_id = n.id
|
|
order by v.object_id;
|
|
|
|
-- local variables
|
|
i number;
|
|
n number;
|
|
idx number := 0;
|
|
cnt number := 0;
|
|
cvt number := 0;
|
|
bool boolean;
|
|
tempObjVar objVarType;
|
|
stmt varchar2(4000);
|
|
prefix varchar2(100);
|
|
begin
|
|
dbms_output.put_line('start time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
open objCursor (start_objectid, end_objectid);
|
|
fetch objCursor into objRow;
|
|
dbms_output.put_line('object cursor time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
open objVarCursor (start_objectid, end_objectid);
|
|
fetch objVarCursor into objVarRow;
|
|
dbms_output.put_line('objvar cursor time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
|
|
while objCursor%found loop
|
|
begin
|
|
-- Clear Data
|
|
free_slots.delete;
|
|
free_slots := numTable(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
|
|
slot_map.delete;
|
|
for i in 1..20 loop
|
|
Obj_ObjVars(i) := blankObjVar;
|
|
end loop;
|
|
OV_ObjVars.delete;
|
|
updated_objvars.trim(updated_objvars.count);
|
|
deleted_objvars.trim(deleted_objvars.count);
|
|
added_objvars.trim(added_objvars.count);
|
|
isObjModified := FALSE;
|
|
isSchematic := FALSE;
|
|
isFactory := FALSE;
|
|
prefix := 'crafting_components.';
|
|
new_schematic_id := 0;
|
|
|
|
-- Load the data into variables
|
|
object_id := objRow.object_id;
|
|
script_list := objRow.scriptList;
|
|
object_name := objRow.object_name;
|
|
name_table := objRow.name_string_table;
|
|
name_text := objRow.name_string_text;
|
|
template_id := objRow.object_template_id;
|
|
new_template_id := template_id;
|
|
|
|
Obj_ObjVars(1).object_id := objRow.object_id; -- might be able to eliminate
|
|
Obj_ObjVars(1).objvar_name := objRow.objvar_0_name;
|
|
Obj_ObjVars(1).objvar_type := objRow.objvar_0_type;
|
|
Obj_ObjVars(1).objvar_value := objRow.objvar_0_value;
|
|
if ((objRow.objvar_0_name is not null) and (objRow.objvar_0_type != -1))then
|
|
slot_map(objRow.objvar_0_name) := 1;
|
|
free_slots.delete(1);
|
|
end if;
|
|
|
|
Obj_ObjVars(2).object_id := objRow.object_id;
|
|
Obj_ObjVars(2).objvar_name := objRow.objvar_1_name;
|
|
Obj_ObjVars(2).objvar_type := objRow.objvar_1_type;
|
|
Obj_ObjVars(2).objvar_value := objRow.objvar_1_value;
|
|
if ((objRow.objvar_1_name is not null) and (objRow.objvar_1_type != -1))then
|
|
slot_map(objRow.objvar_1_name) := 2;
|
|
free_slots.delete(2);
|
|
end if;
|
|
|
|
Obj_ObjVars(3).object_id := objRow.object_id;
|
|
Obj_ObjVars(3).objvar_name := objRow.objvar_2_name;
|
|
Obj_ObjVars(3).objvar_type := objRow.objvar_2_type;
|
|
Obj_ObjVars(3).objvar_value := objRow.objvar_2_value;
|
|
if ((objRow.objvar_2_name is not null) and (objRow.objvar_2_type != -1))then
|
|
slot_map(objRow.objvar_2_name) := 3;
|
|
free_slots.delete(3);
|
|
end if;
|
|
|
|
Obj_ObjVars(4).object_id := objRow.object_id;
|
|
Obj_ObjVars(4).objvar_name := objRow.objvar_3_name;
|
|
Obj_ObjVars(4).objvar_type := objRow.objvar_3_type;
|
|
Obj_ObjVars(4).objvar_value := objRow.objvar_3_value;
|
|
if ((objRow.objvar_3_name is not null) and (objRow.objvar_3_type != -1))then
|
|
slot_map(objRow.objvar_3_name) := 4;
|
|
free_slots.delete(4);
|
|
end if;
|
|
|
|
Obj_ObjVars(5).object_id := objRow.object_id;
|
|
Obj_ObjVars(5).objvar_name := objRow.objvar_4_name;
|
|
Obj_ObjVars(5).objvar_type := objRow.objvar_4_type;
|
|
Obj_ObjVars(5).objvar_value := objRow.objvar_4_value;
|
|
if ((objRow.objvar_4_name is not null) and (objRow.objvar_4_type != -1))then
|
|
slot_map(objRow.objvar_4_name) := 5;
|
|
free_slots.delete(5);
|
|
end if;
|
|
|
|
Obj_ObjVars(6).object_id := objRow.object_id;
|
|
Obj_ObjVars(6).objvar_name := objRow.objvar_5_name;
|
|
Obj_ObjVars(6).objvar_type := objRow.objvar_5_type;
|
|
Obj_ObjVars(6).objvar_value := objRow.objvar_5_value;
|
|
if ((objRow.objvar_5_name is not null) and (objRow.objvar_5_type != -1))then
|
|
slot_map(objRow.objvar_5_name) := 6;
|
|
free_slots.delete(6);
|
|
end if;
|
|
|
|
Obj_ObjVars(7).object_id := objRow.object_id;
|
|
Obj_ObjVars(7).objvar_name := objRow.objvar_6_name;
|
|
Obj_ObjVars(7).objvar_type := objRow.objvar_6_type;
|
|
Obj_ObjVars(7).objvar_value := objRow.objvar_6_value;
|
|
if ((objRow.objvar_6_name is not null) and (objRow.objvar_6_type != -1))then
|
|
slot_map(objRow.objvar_6_name) := 7;
|
|
free_slots.delete(7);
|
|
end if;
|
|
|
|
Obj_ObjVars(8).object_id := objRow.object_id;
|
|
Obj_ObjVars(8).objvar_name := objRow.objvar_7_name;
|
|
Obj_ObjVars(8).objvar_type := objRow.objvar_7_type;
|
|
Obj_ObjVars(8).objvar_value := objRow.objvar_7_value;
|
|
if ((objRow.objvar_7_name is not null) and (objRow.objvar_7_type != -1))then
|
|
slot_map(objRow.objvar_7_name) := 8;
|
|
free_slots.delete(8);
|
|
end if;
|
|
|
|
Obj_ObjVars(9).object_id := objRow.object_id;
|
|
Obj_ObjVars(9).objvar_name := objRow.objvar_8_name;
|
|
Obj_ObjVars(9).objvar_type := objRow.objvar_8_type;
|
|
Obj_ObjVars(9).objvar_value := objRow.objvar_8_value;
|
|
if ((objRow.objvar_8_name is not null) and (objRow.objvar_8_type != -1))then
|
|
slot_map(objRow.objvar_8_name) := 9;
|
|
free_slots.delete(9);
|
|
end if;
|
|
|
|
Obj_ObjVars(10).object_id := objRow.object_id;
|
|
Obj_ObjVars(10).objvar_name := objRow.objvar_9_name;
|
|
Obj_ObjVars(10).objvar_type := objRow.objvar_9_type;
|
|
Obj_ObjVars(10).objvar_value := objRow.objvar_9_value;
|
|
if ((objRow.objvar_9_name is not null) and (objRow.objvar_9_type != -1))then
|
|
slot_map(objRow.objvar_9_name) := 10;
|
|
free_slots.delete(10);
|
|
end if;
|
|
|
|
Obj_ObjVars(11).object_id := objRow.object_id;
|
|
Obj_ObjVars(11).objvar_name := objRow.objvar_10_name;
|
|
Obj_ObjVars(11).objvar_type := objRow.objvar_10_type;
|
|
Obj_ObjVars(11).objvar_value := objRow.objvar_10_value;
|
|
if ((objRow.objvar_10_name is not null) and (objRow.objvar_10_type != -1))then
|
|
slot_map(objRow.objvar_10_name) := 11;
|
|
free_slots.delete(11);
|
|
end if;
|
|
|
|
Obj_ObjVars(12).object_id := objRow.object_id;
|
|
Obj_ObjVars(12).objvar_name := objRow.objvar_11_name;
|
|
Obj_ObjVars(12).objvar_type := objRow.objvar_11_type;
|
|
Obj_ObjVars(12).objvar_value := objRow.objvar_11_value;
|
|
if ((objRow.objvar_11_name is not null) and (objRow.objvar_11_type != -1))then
|
|
slot_map(objRow.objvar_11_name) := 12;
|
|
free_slots.delete(12);
|
|
end if;
|
|
|
|
Obj_ObjVars(13).object_id := objRow.object_id;
|
|
Obj_ObjVars(13).objvar_name := objRow.objvar_12_name;
|
|
Obj_ObjVars(13).objvar_type := objRow.objvar_12_type;
|
|
Obj_ObjVars(13).objvar_value := objRow.objvar_12_value;
|
|
if ((objRow.objvar_12_name is not null) and (objRow.objvar_12_type != -1))then
|
|
slot_map(objRow.objvar_12_name) := 13;
|
|
free_slots.delete(13);
|
|
end if;
|
|
|
|
Obj_ObjVars(14).object_id := objRow.object_id;
|
|
Obj_ObjVars(14).objvar_name := objRow.objvar_13_name;
|
|
Obj_ObjVars(14).objvar_type := objRow.objvar_13_type;
|
|
Obj_ObjVars(14).objvar_value := objRow.objvar_13_value;
|
|
if ((objRow.objvar_13_name is not null) and (objRow.objvar_13_type != -1))then
|
|
slot_map(objRow.objvar_13_name) := 14;
|
|
free_slots.delete(14);
|
|
end if;
|
|
|
|
Obj_ObjVars(15).object_id := objRow.object_id;
|
|
Obj_ObjVars(15).objvar_name := objRow.objvar_14_name;
|
|
Obj_ObjVars(15).objvar_type := objRow.objvar_14_type;
|
|
Obj_ObjVars(15).objvar_value := objRow.objvar_14_value;
|
|
if ((objRow.objvar_14_name is not null) and (objRow.objvar_14_type != -1))then
|
|
slot_map(objRow.objvar_14_name) := 15;
|
|
free_slots.delete(15);
|
|
end if;
|
|
|
|
Obj_ObjVars(16).object_id := objRow.object_id;
|
|
Obj_ObjVars(16).objvar_name := objRow.objvar_15_name;
|
|
Obj_ObjVars(16).objvar_type := objRow.objvar_15_type;
|
|
Obj_ObjVars(16).objvar_value := objRow.objvar_15_value;
|
|
if ((objRow.objvar_15_name is not null) and (objRow.objvar_15_type != -1))then
|
|
slot_map(objRow.objvar_15_name) := 16;
|
|
free_slots.delete(16);
|
|
end if;
|
|
|
|
Obj_ObjVars(17).object_id := objRow.object_id;
|
|
Obj_ObjVars(17).objvar_name := objRow.objvar_16_name;
|
|
Obj_ObjVars(17).objvar_type := objRow.objvar_16_type;
|
|
Obj_ObjVars(17).objvar_value := objRow.objvar_16_value;
|
|
if ((objRow.objvar_16_name is not null) and (objRow.objvar_16_type != -1))then
|
|
slot_map(objRow.objvar_16_name) := 17;
|
|
free_slots.delete(17);
|
|
end if;
|
|
|
|
Obj_ObjVars(18).object_id := objRow.object_id;
|
|
Obj_ObjVars(18).objvar_name := objRow.objvar_17_name;
|
|
Obj_ObjVars(18).objvar_type := objRow.objvar_17_type;
|
|
Obj_ObjVars(18).objvar_value := objRow.objvar_17_value;
|
|
if ((objRow.objvar_17_name is not null) and (objRow.objvar_17_type != -1))then
|
|
slot_map(objRow.objvar_17_name) := 18;
|
|
free_slots.delete(18);
|
|
end if;
|
|
|
|
Obj_ObjVars(19).object_id := objRow.object_id;
|
|
Obj_ObjVars(19).objvar_name := objRow.objvar_18_name;
|
|
Obj_ObjVars(19).objvar_type := objRow.objvar_18_type;
|
|
Obj_ObjVars(19).objvar_value := objRow.objvar_18_value;
|
|
if ((objRow.objvar_18_name is not null) and (objRow.objvar_18_type != -1))then
|
|
slot_map(objRow.objvar_18_name) := 19;
|
|
free_slots.delete(19);
|
|
end if;
|
|
|
|
Obj_ObjVars(20).object_id := objRow.object_id;
|
|
Obj_ObjVars(20).objvar_name := objRow.objvar_19_name;
|
|
Obj_ObjVars(20).objvar_type := objRow.objvar_19_type;
|
|
Obj_ObjVars(20).objvar_value := objRow.objvar_19_value;
|
|
if ((objRow.objvar_19_name is not null) and (objRow.objvar_19_type != -1))then
|
|
slot_map(objRow.objvar_19_name) := 20;
|
|
free_slots.delete(20);
|
|
end if;
|
|
|
|
|
|
while (objVarCursor%found and objVarRow.object_id <= objRow.object_id) loop
|
|
if objVarRow.object_id = objRow.object_id then
|
|
tempObjVar := blankObjVar;
|
|
tempObjVar.object_id := objVarRow.object_id;
|
|
tempObjVar.objvar_name := objVarRow.objvar_name;
|
|
tempObjVar.objvar_type := objVarRow.objvar_type;
|
|
tempObjVar.objvar_value := objVarRow.objvar_value;
|
|
tempObjVar.objvar_name_id := objVarRow.objvar_name_id;
|
|
OV_ObjVars(objVarRow.objvar_name) := tempObjVar;
|
|
slot_map(objVarRow.objvar_name) := 21;
|
|
end if;
|
|
fetch objVarCursor into objVarRow;
|
|
end loop;
|
|
|
|
-- check to see if it a weapon (162889564) or armor (1120303977) factory crate
|
|
-- or food (-200781577) or chemicals (-1966544754)
|
|
-- or electronics (-754298423) or clothing (-1207917085)
|
|
if template_id = 162889564 or template_id = 1120303977
|
|
or template_id = -200781577 or template_id = -1966544754
|
|
or template_id = -754298423 or template_id = -1207917085 then
|
|
if slot_map.exists('draftSchematic') then
|
|
if slot_map('draftSchematic') < 21 then
|
|
template_id := SchematicMap(to_number(Obj_ObjVars(slot_map('draftSchematic')).objvar_value));
|
|
else
|
|
template_id := SchematicMap(to_number(OV_ObjVars('draftSchematic').objvar_value));
|
|
end if;
|
|
isFactory := TRUE;
|
|
prefix := 'crafting_attributes.crafting:';
|
|
DeleteObjVar('ingr.*');
|
|
end if;
|
|
end if;
|
|
|
|
-- Do the conversions (-983864428, 1594162622, -1438161694, 2042493214, 1210744947)
|
|
if template_id = 1594162622 or template_id = -14381616948 or template_id = 2042493214 then
|
|
isObjModified := TRUE;
|
|
RenameObjVar(prefix || 'armor_general_protection',prefix || 'general_protection');
|
|
RenameObjVar(prefix || 'armor_condition',prefix || 'condition');
|
|
if isFactory = TRUE then
|
|
script_list := 'systems.crafting.armor.component.crafting_new_armor_segment:';
|
|
else
|
|
RemoveScript('systems.crafting.armor.component.crafting_armor_component_attribute');
|
|
RemoveScript('item.armor.new_armor'); -- to prevent two copies of same script
|
|
AddScript('item.armor.new_armor');
|
|
end if;
|
|
elsif template_id = -983864428 then
|
|
isObjModified := TRUE;
|
|
RenameObjVar(prefix || 'armor_general_protection',prefix || 'general_protection');
|
|
RenameObjVar(prefix || 'armor_condition',prefix || 'condition');
|
|
if isFactory = TRUE then
|
|
script_list := 'systems.crafting.armor.component.crafting_new_armor_advanced_layer_1:';
|
|
else
|
|
RemoveScript('systems.crafting.armor.component.crafting_armor_component_attribute');
|
|
RemoveScript('item.armor.new_armor'); -- to prevent two copies of same script
|
|
AddScript('item.armor.new_armor');
|
|
end if;
|
|
elsif template_id = 1210744947 then
|
|
isObjModified := TRUE;
|
|
RenameObjVar(prefix || 'armor_general_protection',prefix || 'general_protection');
|
|
RenameObjVar(prefix || 'armor_condition',prefix || 'condition');
|
|
if isFactory = TRUE then
|
|
script_list := 'systems.crafting.armor.component.crafting_new_armor_advanced_layer_1:';
|
|
else
|
|
RemoveScript('item.armor.new_armor'); -- to prevent two copies of same script
|
|
AddScript('item.armor.new_armor');
|
|
end if;
|
|
end if;
|
|
-- Save the changes
|
|
if isObjModified = TRUE then
|
|
begin
|
|
stmt := 'update objects set '
|
|
|| 'objvar_0_name = :o0n, objvar_0_type = :o0t, objvar_0_value = :o0v, '
|
|
|| 'objvar_1_name = :o1n, objvar_1_type = :o1t, objvar_1_value = :o1v, '
|
|
|| 'objvar_2_name = :o2n, objvar_2_type = :o2t, objvar_2_value = :o2v, '
|
|
|| 'objvar_3_name = :o3n, objvar_3_type = :o3t, objvar_3_value = :o3v, '
|
|
|| 'objvar_4_name = :o4n, objvar_4_type = :o4t, objvar_4_value = :o4v, '
|
|
|| 'objvar_5_name = :o5n, objvar_5_type = :o5t, objvar_5_value = :o5v, '
|
|
|| 'objvar_6_name = :o6n, objvar_6_type = :o6t, objvar_6_value = :o6v, '
|
|
|| 'objvar_7_name = :o7n, objvar_7_type = :o7t, objvar_7_value = :o7v, '
|
|
|| 'objvar_8_name = :o8n, objvar_8_type = :o8t, objvar_8_value = :o8v, '
|
|
|| 'objvar_9_name = :o9n, objvar_9_type = :o9t, objvar_9_value = :o9v, '
|
|
|| 'objvar_10_name = :o10n, objvar_10_type = :o10t, objvar_10_value = :o10v, '
|
|
|| 'objvar_11_name = :o11n, objvar_11_type = :o11t, objvar_11_value = :o11v, '
|
|
|| 'objvar_12_name = :o12n, objvar_12_type = :o12t, objvar_12_value = :o12v, '
|
|
|| 'objvar_13_name = :o13n, objvar_13_type = :o13t, objvar_13_value = :o13v, '
|
|
|| 'objvar_14_name = :o14n, objvar_14_type = :o14t, objvar_14_value = :o14v, '
|
|
|| 'objvar_15_name = :o15n, objvar_15_type = :o15t, objvar_15_value = :o15v, '
|
|
|| 'objvar_16_name = :o16n, objvar_16_type = :o16t, objvar_16_value = :o16v, '
|
|
|| 'objvar_17_name = :o17n, objvar_17_type = :o17t, objvar_17_value = :o17v, '
|
|
|| 'objvar_18_name = :o18n, objvar_18_type = :o18t, objvar_18_value = :o18v, '
|
|
|| 'objvar_19_name = :o19n, objvar_19_type = :o19t, objvar_19_value = :o19v, '
|
|
|| 'script_list = :sl, object_template_id = :otid, '
|
|
|| 'object_name = :obn, name_string_table = :nstb, name_string_text = :nstx, '
|
|
|| 'conversion_id = :version '
|
|
|| 'where object_id = :id';
|
|
|
|
execute immediate stmt using
|
|
Obj_ObjVars(1).objvar_name, Obj_ObjVars(1).objvar_type, Obj_ObjVars(1).objvar_value,
|
|
Obj_ObjVars(2).objvar_name, Obj_ObjVars(2).objvar_type, Obj_ObjVars(2).objvar_value,
|
|
Obj_ObjVars(3).objvar_name, Obj_ObjVars(3).objvar_type, Obj_ObjVars(3).objvar_value,
|
|
Obj_ObjVars(4).objvar_name, Obj_ObjVars(4).objvar_type, Obj_ObjVars(4).objvar_value,
|
|
Obj_ObjVars(5).objvar_name, Obj_ObjVars(5).objvar_type, Obj_ObjVars(5).objvar_value,
|
|
Obj_ObjVars(6).objvar_name, Obj_ObjVars(6).objvar_type, Obj_ObjVars(6).objvar_value,
|
|
Obj_ObjVars(7).objvar_name, Obj_ObjVars(7).objvar_type, Obj_ObjVars(7).objvar_value,
|
|
Obj_ObjVars(8).objvar_name, Obj_ObjVars(8).objvar_type, Obj_ObjVars(8).objvar_value,
|
|
Obj_ObjVars(9).objvar_name, Obj_ObjVars(9).objvar_type, Obj_ObjVars(9).objvar_value,
|
|
Obj_ObjVars(10).objvar_name, Obj_ObjVars(10).objvar_type, Obj_ObjVars(10).objvar_value,
|
|
Obj_ObjVars(11).objvar_name, Obj_ObjVars(11).objvar_type, Obj_ObjVars(11).objvar_value,
|
|
Obj_ObjVars(12).objvar_name, Obj_ObjVars(12).objvar_type, Obj_ObjVars(12).objvar_value,
|
|
Obj_ObjVars(13).objvar_name, Obj_ObjVars(13).objvar_type, Obj_ObjVars(13).objvar_value,
|
|
Obj_ObjVars(14).objvar_name, Obj_ObjVars(14).objvar_type, Obj_ObjVars(14).objvar_value,
|
|
Obj_ObjVars(15).objvar_name, Obj_ObjVars(15).objvar_type, Obj_ObjVars(15).objvar_value,
|
|
Obj_ObjVars(16).objvar_name, Obj_ObjVars(16).objvar_type, Obj_ObjVars(16).objvar_value,
|
|
Obj_ObjVars(17).objvar_name, Obj_ObjVars(17).objvar_type, Obj_ObjVars(17).objvar_value,
|
|
Obj_ObjVars(18).objvar_name, Obj_ObjVars(18).objvar_type, Obj_ObjVars(18).objvar_value,
|
|
Obj_ObjVars(19).objvar_name, Obj_ObjVars(19).objvar_type, Obj_ObjVars(19).objvar_value,
|
|
Obj_ObjVars(20).objvar_name, Obj_ObjVars(20).objvar_type, Obj_ObjVars(20).objvar_value,
|
|
script_list, new_template_id,
|
|
object_name, name_table, name_text,
|
|
conversion_id,
|
|
object_id;
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error in object update(' || object_id || ') - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in object update');
|
|
end;
|
|
end if;
|
|
|
|
i := deleted_objvars.first;
|
|
while i is not null loop
|
|
begin
|
|
stmt := 'delete from object_variables '
|
|
|| 'where object_id = :id and name_id = :oldname';
|
|
|
|
execute immediate stmt using
|
|
object_id,
|
|
OV_ObjVars(deleted_objvars(i)).old_objvar_name_id;
|
|
|
|
i := deleted_objvars.next(i);
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error (' || SQLERRM(err_num) || ') with deleted_objvars(' || object_id || ') - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error with deleted_objvars');
|
|
i := deleted_objvars.next(i);
|
|
end;
|
|
end loop;
|
|
|
|
i := added_objvars.first;
|
|
while i is not null loop
|
|
begin
|
|
stmt := 'insert into object_variables values '
|
|
|| '(:id, :name, :type, :value, 0)';
|
|
|
|
execute immediate stmt using
|
|
object_id,
|
|
OV_ObjVars(added_objvars(i)).objvar_name_id,
|
|
OV_ObjVars(added_objvars(i)).objvar_type,
|
|
OV_ObjVars(added_objvars(i)).objvar_value;
|
|
|
|
i := added_objvars.next(i);
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error (' || SQLERRM(err_num) || ') with added_objvars(' || object_id || ') - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error with added_objvars');
|
|
i := added_objvars.next(i);
|
|
end;
|
|
end loop;
|
|
|
|
i := updated_objvars.first;
|
|
while i is not null loop
|
|
begin
|
|
stmt := 'update object_variables set '
|
|
|| 'name_id = :name, type = :type, value = :value '
|
|
|| 'where object_id = :id and name_id = :oldname';
|
|
|
|
execute immediate stmt using
|
|
objvarNameIdMap(OV_ObjVars(updated_objvars(i)).objvar_name),
|
|
OV_ObjVars(updated_objvars(i)).objvar_type,
|
|
OV_ObjVars(updated_objvars(i)).objvar_value,
|
|
object_id,
|
|
OV_ObjVars(updated_objvars(i)).old_objvar_name_id;
|
|
|
|
i := updated_objvars.next(i);
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error (' || SQLERRM(err_num) || ') with updated_objvars(' || object_id || ') - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error with updated_objvars');
|
|
i := updated_objvars.next(i);
|
|
end;
|
|
end loop;
|
|
|
|
cvt := cvt + 1;
|
|
idx := idx + 1;
|
|
-- commit every 100,000 records
|
|
if idx > 99999 then
|
|
commit;
|
|
if use_rbs is not null then
|
|
execute immediate 'set transaction use rollback segment ' || use_rbs;
|
|
end if;
|
|
dbms_output.put_line('100,000 rows = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
cnt := cnt + idx;
|
|
idx := 0;
|
|
end if;
|
|
end;
|
|
fetch objCursor into objRow;
|
|
end loop;
|
|
--commit;
|
|
close objVarCursor;
|
|
close objCursor;
|
|
cnt := cnt + idx;
|
|
dbms_output.put_line('end time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
dbms_output.put_line('converted = ' || to_char(cvt));
|
|
dbms_output.put_line('total count = ' || to_char(cnt));
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error (' || SQLERRM(err_num) || ') in DoItemConversionBatch (' || object_id || ') - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in DoItemConversionBatch');
|
|
end;
|
|
|
|
function InitializeData return boolean
|
|
is
|
|
objvarNameIdRow object_variable_names%rowtype;
|
|
-- ALL added/updated objvar names MUST be in this list
|
|
cursor objvarNameIdCursor is
|
|
select id, name from object_variable_names
|
|
where name in (
|
|
'armor.armorCategory',
|
|
'armor.armorLevel',
|
|
'armor.armorencumbrance',
|
|
'armor.condition',
|
|
'armor.effectiveness',
|
|
'armor.encumbrance',
|
|
'armor.encumbranceSplit',
|
|
'armor.general_protection',
|
|
'armor.layer0',
|
|
'armor.layer13',
|
|
'armor.layer14',
|
|
'armor.layer15',
|
|
'armor.mandDeconstruct',
|
|
'armor.rating',
|
|
'armor.recharge_rate',
|
|
'armor.risDeconstruct',
|
|
'armor.special.1',
|
|
'armor.special.1024',
|
|
'armor.special.128',
|
|
'armor.special.16',
|
|
'armor.special.2',
|
|
'armor.special.2048',
|
|
'armor.special.256',
|
|
'armor.special.32',
|
|
'armor.special.4',
|
|
'armor.special.4096',
|
|
'armor.special.512',
|
|
'armor.special.64',
|
|
'armor.special.8',
|
|
'armor.vulnerability',
|
|
'armorCategory',
|
|
'armorLevel',
|
|
'biolink.faction_points',
|
|
'blindChance',
|
|
'blindDuration',
|
|
'buff_name',
|
|
'burnDuration',
|
|
'burnIntensity',
|
|
'crafting_attributes.crafting:accuracy',
|
|
'crafting_attributes.crafting:armor_condition',
|
|
'crafting_attributes.crafting:armor_general_protection',
|
|
'crafting_attributes.crafting:armor_layer0',
|
|
'crafting_attributes.crafting:armor_layer1',
|
|
'crafting_attributes.crafting:armor_layer2',
|
|
'crafting_attributes.crafting:armor_layer4',
|
|
'crafting_attributes.crafting:armor_layer5',
|
|
'crafting_attributes.crafting:armor_layer6',
|
|
'crafting_attributes.crafting:armor_layer7',
|
|
'crafting_attributes.crafting:armor_layer12',
|
|
'crafting_attributes.crafting:attackActionCost',
|
|
'crafting_attributes.crafting:attackCost',
|
|
'crafting_attributes.crafting:attackHealthCost',
|
|
'crafting_attributes.crafting:attackMindCost',
|
|
'crafting_attributes.crafting:attackSpeed',
|
|
'crafting_attributes.crafting:condition',
|
|
'crafting_attributes.crafting:damageType',
|
|
'crafting_attributes.crafting:effect',
|
|
'crafting_attributes.crafting:efficiency',
|
|
'crafting_attributes.crafting:elementalType',
|
|
'crafting_attributes.crafting:elementalValue',
|
|
'crafting_attributes.crafting:flavor',
|
|
'crafting_attributes.crafting:general_protection',
|
|
'crafting_attributes.crafting:hitPoints',
|
|
'crafting_attributes.crafting:maxDamage',
|
|
'crafting_attributes.crafting:maxRange',
|
|
'crafting_attributes.crafting:maxRangeMod',
|
|
'crafting_attributes.crafting:midRange',
|
|
'crafting_attributes.crafting:midRangeMod',
|
|
'crafting_attributes.crafting:minDamage',
|
|
'crafting_attributes.crafting:minRange',
|
|
'crafting_attributes.crafting:minRangeMod',
|
|
'crafting_attributes.crafting:nutrition',
|
|
'crafting_attributes.crafting:power',
|
|
'crafting_attributes.crafting:woundChance',
|
|
'crafting_attributes.crafting:zeroRangeMod',
|
|
'crafting_components.accuracy',
|
|
'crafting_components.armor_armorencumbrance',
|
|
'crafting_components.armor_condition',
|
|
'crafting_components.armor_general_protection',
|
|
'crafting_components.armor_layer0',
|
|
'crafting_components.armor_layer1',
|
|
'crafting_components.armor_layer2',
|
|
'crafting_components.armor_layer4',
|
|
'crafting_components.armor_layer5',
|
|
'crafting_components.armor_layer6',
|
|
'crafting_components.armor_layer7',
|
|
'crafting_components.armor_layer12',
|
|
'crafting_components.attackActionCost',
|
|
'crafting_components.attackCost',
|
|
'crafting_components.attackHealthCost',
|
|
'crafting_components.attackMindCost',
|
|
'crafting_components.attackSpeed',
|
|
'crafting_components.attribute.bonus.0',
|
|
'crafting_components.attribute.bonus.1',
|
|
'crafting_components.attribute.bonus.2',
|
|
'crafting_components.attribute.bonus.3',
|
|
'crafting_components.attribute.bonus.4',
|
|
'crafting_components.attribute.bonus.5',
|
|
'crafting_components.attribute.bonus.6',
|
|
'crafting_components.attribute.bonus.7',
|
|
'crafting_components.attribute.bonus.8',
|
|
'crafting_components.condition',
|
|
'crafting_components.damageType',
|
|
'crafting_components.elementalType',
|
|
'crafting_components.elementalValue',
|
|
'crafting_components.general_protection',
|
|
'crafting_components.hitPoints',
|
|
'crafting_components.layer13',
|
|
'crafting_components.layer14',
|
|
'crafting_components.layer15',
|
|
'crafting_components.maxDamage',
|
|
'crafting_components.maxRange',
|
|
'crafting_components.maxRangeMod',
|
|
'crafting_components.midRange',
|
|
'crafting_components.midRangeMod',
|
|
'crafting_components.minDamage',
|
|
'crafting_components.minRange',
|
|
'crafting_components.minRangeMod',
|
|
'crafting_components.recharge_rate',
|
|
'crafting_components.woundChance',
|
|
'crafting_components.zeroRangeMod',
|
|
'draftSchematic',
|
|
'duration',
|
|
'effect_class',
|
|
'effectiveness',
|
|
'filling',
|
|
'ImAnInvalidSchematic',
|
|
'intAOEDamagePercent',
|
|
'intWeaponType',
|
|
'jedi.crystal.stats.accuracy',
|
|
'jedi.crystal.stats.attack_cost',
|
|
'jedi.crystal.stats.damage_type',
|
|
'jedi.crystal.stats.elemental_type',
|
|
'jedi.crystal.stats.elemental_value',
|
|
'jedi.crystal.stats.force',
|
|
'jedi.crystal.stats.max_dmg',
|
|
'jedi.crystal.stats.max_rng',
|
|
'jedi.crystal.stats.min_dmg',
|
|
'jedi.crystal.stats.min_rng',
|
|
'jedi.crystal.stats.speed',
|
|
'jedi.crystal.stats.wound',
|
|
'jedi.saber.base_stats.accuracy',
|
|
'jedi.saber.base_stats.attack_cost',
|
|
'jedi.saber.base_stats.damage_type',
|
|
'jedi.saber.base_stats.elemental_type',
|
|
'jedi.saber.base_stats.elemental_value',
|
|
'jedi.saber.base_stats.force',
|
|
'jedi.saber.base_stats.max_dmg',
|
|
'jedi.saber.base_stats.max_rng',
|
|
'jedi.saber.base_stats.min_dmg',
|
|
'jedi.saber.base_stats.min_rng',
|
|
'jedi.saber.base_stats.speed',
|
|
'jedi.saber.base_stats.wound',
|
|
'jedi.saber.force',
|
|
'healing.power',
|
|
'powerup.accuracy',
|
|
'powerup.actionCost',
|
|
'powerup.damage',
|
|
'powerup.effect',
|
|
'powerup.efficiency',
|
|
'powerup.speed',
|
|
'powerup.usesLeft',
|
|
'powerup.wound',
|
|
'reuseTimer',
|
|
'skillmod.bonus.pistol_speed',
|
|
'slowDuration',
|
|
'slowIntensity',
|
|
'spice.name',
|
|
'strWeaponType',
|
|
'weapon.intNoCertRequired',
|
|
'weaponType'
|
|
);
|
|
maxNameId number;
|
|
|
|
schematicRow schematic_templates%rowtype;
|
|
cursor schematicCursor is
|
|
select schematic_id, object_template_id
|
|
from schematic_templates;
|
|
|
|
v varchar2(500);
|
|
stmt varchar2(4000);
|
|
begin
|
|
-- initialize
|
|
free_slots := numTable(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
|
|
Obj_ObjVars := objectObjVarArray();
|
|
Obj_Objvars.extend(20);
|
|
updated_objvars := varcharTable();
|
|
deleted_objvars := varcharTable();
|
|
added_objvars := varcharTable();
|
|
|
|
objvarNameIdMap('armor.armorCategory') := 0;
|
|
objvarNameIdMap('armor.armorLevel') := 0;
|
|
objvarNameIdMap('armor.armorencumbrance') := 0;
|
|
objvarNameIdMap('armor.condition') := 0;
|
|
objvarNameIdMap('armor.effectiveness') := 0;
|
|
objvarNameIdMap('armor.encumbrance') := 0;
|
|
objvarNameIdMap('armor.encumbranceSplit') := 0;
|
|
objvarNameIdMap('armor.general_protection') := 0;
|
|
objvarNameIdMap('armor.layer0') := 0;
|
|
objvarNameIdMap('armor.layer14') := 0;
|
|
objvarNameIdMap('armor.layer13') := 0;
|
|
objvarNameIdMap('armor.layer15') := 0;
|
|
objvarNameIdMap('armor.mandDeconstruct') := 0;
|
|
objvarNameIdMap('armor.rating') := 0;
|
|
objvarNameIdMap('armor.recharge_rate') := 0;
|
|
objvarNameIdMap('armor.risDeconstruct') := 0;
|
|
objvarNameIdMap('armor.special.1') := 0;
|
|
objvarNameIdMap('armor.special.1024') := 0;
|
|
objvarNameIdMap('armor.special.128') := 0;
|
|
objvarNameIdMap('armor.special.16') := 0;
|
|
objvarNameIdMap('armor.special.2') := 0;
|
|
objvarNameIdMap('armor.special.2048') := 0;
|
|
objvarNameIdMap('armor.special.256') := 0;
|
|
objvarNameIdMap('armor.special.32') := 0;
|
|
objvarNameIdMap('armor.special.4') := 0;
|
|
objvarNameIdMap('armor.special.4096') := 0;
|
|
objvarNameIdMap('armor.special.512') := 0;
|
|
objvarNameIdMap('armor.special.64') := 0;
|
|
objvarNameIdMap('armor.special.8') := 0;
|
|
objvarNameIdMap('armor.vulnerability') := 0;
|
|
objvarNameIdMap('armorCategory') := 0;
|
|
objvarNameIdMap('armorLevel') := 0;
|
|
objvarNameIdMap('biolink.faction_points') := 0;
|
|
objvarNameIdMap('blindChance') := 0;
|
|
objvarNameIdMap('blindDuration') := 0;
|
|
objvarNameIdMap('buff_name') := 0;
|
|
objvarNameIdMap('burnDuration') := 0;
|
|
objvarNameIdMap('burnIntensity') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:accuracy') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_general_protection') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_condition') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_layer0') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_layer1') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_layer2') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_layer4') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_layer5') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_layer6') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_layer7') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:armor_layer12') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:attackActionCost') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:attackCost') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:attackHealthCost') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:attackMindCost') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:attackSpeed') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:condition') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:damageType') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:effect') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:efficiency') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:elementalType') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:elementalValue') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:flavor') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:general_protection') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:hitPoints') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:maxDamage') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:maxRange') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:maxRangeMod') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:midRange') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:midRangeMod') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:minDamage') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:minRange') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:minRangeMod') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:nutrition') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:power') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:woundChance') := 0;
|
|
objvarNameIdMap('crafting_attributes.crafting:zeroRangeMod') := 0;
|
|
objvarNameIdMap('crafting_components.accuracy') := 0;
|
|
objvarNameIdMap('crafting_components.armor_armorencumbrance') := 0;
|
|
objvarNameIdMap('crafting_components.armor_condition') := 0;
|
|
objvarNameIdMap('crafting_components.armor_general_protection') := 0;
|
|
objvarNameIdMap('crafting_components.armor_layer0') := 0;
|
|
objvarNameIdMap('crafting_components.armor_layer1') := 0;
|
|
objvarNameIdMap('crafting_components.armor_layer2') := 0;
|
|
objvarNameIdMap('crafting_components.armor_layer4') := 0;
|
|
objvarNameIdMap('crafting_components.armor_layer5') := 0;
|
|
objvarNameIdMap('crafting_components.armor_layer6') := 0;
|
|
objvarNameIdMap('crafting_components.armor_layer7') := 0;
|
|
objvarNameIdMap('crafting_components.armor_layer12') := 0;
|
|
objvarNameIdMap('crafting_components.attackActionCost') := 0;
|
|
objvarNameIdMap('crafting_components.attackCost') := 0;
|
|
objvarNameIdMap('crafting_components.attackHealthCost') := 0;
|
|
objvarNameIdMap('crafting_components.attackMindCost') := 0;
|
|
objvarNameIdMap('crafting_components.attackSpeed') := 0;
|
|
objvarNameIdMap('crafting_components.attribute.bonus.0') := 0;
|
|
objvarNameIdMap('crafting_components.attribute.bonus.1') := 0;
|
|
objvarNameIdMap('crafting_components.attribute.bonus.2') := 0;
|
|
objvarNameIdMap('crafting_components.attribute.bonus.3') := 0;
|
|
objvarNameIdMap('crafting_components.attribute.bonus.4') := 0;
|
|
objvarNameIdMap('crafting_components.attribute.bonus.5') := 0;
|
|
objvarNameIdMap('crafting_components.attribute.bonus.6') := 0;
|
|
objvarNameIdMap('crafting_components.attribute.bonus.7') := 0;
|
|
objvarNameIdMap('crafting_components.attribute.bonus.8') := 0;
|
|
objvarNameIdMap('crafting_components.condition') := 0;
|
|
objvarNameIdMap('crafting_components.damageType') := 0;
|
|
objvarNameIdMap('crafting_components.elementalType') := 0;
|
|
objvarNameIdMap('crafting_components.elementalValue') := 0;
|
|
objvarNameIdMap('crafting_components.general_protection') := 0;
|
|
objvarNameIdMap('crafting_components.hitPoints') := 0;
|
|
objvarNameIdMap('crafting_components.layer13') := 0;
|
|
objvarNameIdMap('crafting_components.layer14') := 0;
|
|
objvarNameIdMap('crafting_components.layer15') := 0;
|
|
objvarNameIdMap('crafting_components.maxDamage') := 0;
|
|
objvarNameIdMap('crafting_components.maxRange') := 0;
|
|
objvarNameIdMap('crafting_components.maxRangeMod') := 0;
|
|
objvarNameIdMap('crafting_components.midRange') := 0;
|
|
objvarNameIdMap('crafting_components.midRangeMod') := 0;
|
|
objvarNameIdMap('crafting_components.minDamage') := 0;
|
|
objvarNameIdMap('crafting_components.minRange') := 0;
|
|
objvarNameIdMap('crafting_components.minRangeMod') := 0;
|
|
objvarNameIdMap('crafting_components.recharge_rate') := 0;
|
|
objvarNameIdMap('crafting_components.woundChance') := 0;
|
|
objvarNameIdMap('crafting_components.zeroRangeMod') := 0;
|
|
objvarNameIdMap('draftSchematic') := 0;
|
|
objvarNameIdMap('duration') := 0;
|
|
objvarNameIdMap('effect_class') := 0;
|
|
objvarNameIdMap('effectiveness') := 0;
|
|
objvarNameIdMap('filling') := 0;
|
|
objvarNameIdMap('ImAnInvalidSchematic') := 0;
|
|
objvarNameIdMap('intAOEDamagePercent') := 0;
|
|
objvarNameIdMap('intWeaponType') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.accuracy') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.attack_cost') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.damage_type') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.elemental_type') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.elemental_value') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.force') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.max_dmg') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.max_rng') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.min_dmg') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.min_rng') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.speed') := 0;
|
|
objvarNameIdMap('jedi.crystal.stats.wound') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.accuracy') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.attack_cost') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.damage_type') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.elemental_type') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.elemental_value') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.force') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.max_dmg') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.max_rng') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.min_dmg') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.min_rng') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.speed') := 0;
|
|
objvarNameIdMap('jedi.saber.base_stats.wound') := 0;
|
|
objvarNameIdMap('jedi.saber.force') := 0;
|
|
objvarNameIdMap('healing.power') := 0;
|
|
objvarNameIdMap('powerup.accuracy') := 0;
|
|
objvarNameIdMap('powerup.actionCost') := 0;
|
|
objvarNameIdMap('powerup.damage') := 0;
|
|
objvarNameIdMap('powerup.effect') := 0;
|
|
objvarNameIdMap('powerup.efficiency') := 0;
|
|
objvarNameIdMap('powerup.speed') := 0;
|
|
objvarNameIdMap('powerup.usesLeft') := 0;
|
|
objvarNameIdMap('powerup.wound') := 0;
|
|
objvarNameIdMap('reuseTimer') := 0;
|
|
objvarNameIdMap('skillmod.bonus.pistol_speed') := 0;
|
|
objvarNameIdMap('slowDuration') := 0;
|
|
objvarNameIdMap('slowIntensity') := 0;
|
|
objvarNameIdMap('spice.name') := 0;
|
|
objvarNameIdMap('strWeaponType') := 0;
|
|
objvarNameIdMap('weapon.intNoCertRequired') := 0;
|
|
objvarNameIdMap('weaponType') := 0;
|
|
|
|
open objvarNameIdCursor;
|
|
fetch objvarNameIdCursor into objvarNameIdRow;
|
|
while objvarNameIdCursor%found loop
|
|
objvarNameIdMap(objvarNameIdRow.name) := objvarNameIdRow.id;
|
|
fetch objvarNameIdCursor into objvarNameIdRow;
|
|
end loop;
|
|
close objvarNameIdCursor;
|
|
|
|
select max(id) into maxNameId from object_variable_names;
|
|
|
|
v := objvarNameIdMap.first;
|
|
while v is not null loop
|
|
if objvarNameIdMap(v) = 0 then
|
|
maxNameId := maxNameId + 1;
|
|
stmt := 'insert into object_variable_names values (:id, :name)';
|
|
execute immediate stmt using maxNameId, v;
|
|
objvarNameIdMap(v) := maxNameId;
|
|
end if;
|
|
v := objvarNameIdMap.next(v);
|
|
end loop;
|
|
commit;
|
|
if use_rbs is not null then
|
|
execute immediate 'set transaction use rollback segment ' || use_rbs;
|
|
end if;
|
|
|
|
open schematicCursor;
|
|
fetch schematicCursor into schematicRow;
|
|
while schematicCursor%found loop
|
|
schematic_map(schematicRow.schematic_id) := schematicRow.object_template_id;
|
|
fetch schematicCursor into schematicRow;
|
|
end loop;
|
|
close schematicCursor;
|
|
|
|
return TRUE;
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error in InitializeData - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in InitializeData');
|
|
return FALSE;
|
|
end;
|
|
|
|
procedure AddObjVar (objvar_name varchar2, objvar_type number, objvar_value varchar2)
|
|
is
|
|
n number;
|
|
tempObjVar objVarType;
|
|
oldName varchar2(500);
|
|
begin
|
|
if slot_map.exists(objvar_name) then
|
|
ModifyObjVar(objvar_name, objvar_name, objvar_type, objvar_value);
|
|
else
|
|
if free_slots.count > 0 and length(objvar_name) <= 50 then
|
|
n := free_slots(free_slots.first);
|
|
Obj_ObjVars(n).objvar_name := objvar_name;
|
|
Obj_ObjVars(n).objvar_type := objvar_type;
|
|
Obj_ObjVars(n).objvar_value := objvar_value;
|
|
free_slots.delete(n);
|
|
isObjModified := TRUE;
|
|
else
|
|
if deleted_objvars.count > 0 then
|
|
oldName := deleted_objvars(deleted_objvars.last);
|
|
deleted_objvars.trim(1);
|
|
OV_ObjVars(oldName).objvar_name := objvar_name;
|
|
OV_ObjVars(oldName).objvar_type := objvar_type;
|
|
OV_ObjVars(oldName).objvar_value := objvar_value;
|
|
updated_objvars.extend(1);
|
|
updated_objvars(updated_objvars.last) := oldName;
|
|
else
|
|
tempObjVar.object_id := object_id;
|
|
tempObjVar.objvar_name := objvar_name;
|
|
tempObjVar.objvar_type := objvar_type;
|
|
tempObjVar.objvar_value := objvar_value;
|
|
tempObjVar.objvar_name_id := objvarNameIdMap(objvar_name);
|
|
OV_ObjVars(objvar_name) := tempObjVar;
|
|
added_objvars.extend(1);
|
|
added_objvars(added_objvars.last) := objvar_name;
|
|
end if;
|
|
end if;
|
|
end if;
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error in AddObjVar - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in AddObjVar');
|
|
end;
|
|
|
|
procedure DeleteObjVar (objVarName in varchar2)
|
|
is
|
|
n number;
|
|
v varchar2(500);
|
|
begin
|
|
if slot_map.exists(objVarName) then
|
|
if slot_map(objVarName) < 21 then
|
|
n := slot_map(objVarName);
|
|
if Obj_ObjVars(n).objvar_name = objVarName then
|
|
Obj_ObjVars(n).objvar_name := NULL;
|
|
Obj_ObjVars(n).objvar_type := NULL;
|
|
Obj_ObjVars(n).objvar_value := NULL;
|
|
free_slots(n) := n;
|
|
isObjModified := TRUE;
|
|
end if;
|
|
else
|
|
if OV_ObjVars(objVarName).objvar_name = objVarName then
|
|
OV_ObjVars(objVarName).old_objvar_name_id := OV_ObjVars(objVarName).objvar_name_id;
|
|
OV_ObjVars(objVarName).objvar_name := NULL;
|
|
OV_ObjVars(objVarName).objvar_type := NULL;
|
|
OV_ObjVars(objVarName).objvar_value := NULL;
|
|
deleted_objvars.extend(1);
|
|
deleted_objvars(deleted_objvars.last) := objVarName;
|
|
end if;
|
|
end if;
|
|
elsif instr(objVarName,'*') > 0 then
|
|
n := instr(objVarName,'*') -1;
|
|
v := slot_map.first;
|
|
while v is not null loop
|
|
if substr(v,1,n) = substr(objVarName,1,n) then
|
|
DeleteObjVar(v);
|
|
end if;
|
|
v := slot_map.next(v);
|
|
end loop;
|
|
end if;
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error in DeleteObjVar - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in DeleteObjVar');
|
|
end;
|
|
|
|
procedure ModifyObjVar (oldObjVarName varchar2, objvar_name varchar2, objvar_type number, objvar_value varchar2)
|
|
is
|
|
n number;
|
|
begin
|
|
if slot_map.exists(oldObjVarName) then
|
|
if slot_map(oldObjVarName) < 21 then
|
|
n := slot_map(oldObjVarName);
|
|
Obj_ObjVars(n).objvar_name := objvar_name;
|
|
Obj_ObjVars(n).objvar_type := objvar_type;
|
|
Obj_ObjVars(n).objvar_value := objvar_value;
|
|
isObjModified := TRUE;
|
|
else
|
|
OV_ObjVars(oldObjVarName).old_objvar_name_id := OV_ObjVars(oldObjVarName).objvar_name_id;
|
|
OV_ObjVars(oldObjVarName).objvar_name := objvar_name;
|
|
OV_ObjVars(oldObjVarName).objvar_type := objvar_type;
|
|
OV_ObjVars(oldObjVarName).objvar_value := objvar_value;
|
|
updated_objvars.extend(1);
|
|
updated_objvars(updated_objvars.last) := oldObjVarName;
|
|
end if;
|
|
end if;
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error in ModifyObjVar - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in ModifyObjVar');
|
|
end;
|
|
|
|
procedure ModifyObjVar (oldObjVarName varchar2, objvar_name varchar2, objvar_type number, rangeTable rangeTableType)
|
|
is
|
|
n number;
|
|
begin
|
|
if slot_map.exists(oldObjVarName) then
|
|
if slot_map(oldObjVarName) < 21 then
|
|
n := slot_map(oldObjVarName);
|
|
Obj_ObjVars(n).objvar_name := objvar_name;
|
|
Obj_ObjVars(n).objvar_type := objvar_type;
|
|
Obj_ObjVars(n).objvar_value := ConvertValue (to_number(Obj_ObjVars(n).objvar_value), rangeTable);
|
|
isObjModified := TRUE;
|
|
else
|
|
if OV_ObjVars(oldObjVarName).old_objvar_name_id = 0 then
|
|
OV_ObjVars(oldObjVarName).old_objvar_name_id := OV_ObjVars(oldObjVarName).objvar_name_id;
|
|
end if;
|
|
OV_ObjVars(oldObjVarName).objvar_name := objvar_name;
|
|
OV_ObjVars(oldObjVarName).objvar_type := objvar_type;
|
|
OV_ObjVars(oldObjVarName).objvar_value := ConvertValue (to_number(OV_ObjVars(oldObjVarName).objvar_value), rangeTable);
|
|
updated_objvars.extend(1);
|
|
updated_objvars(updated_objvars.last) := oldObjVarName;
|
|
end if;
|
|
end if;
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error in ModifyObjVar - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in ModifyObjVar');
|
|
end;
|
|
|
|
procedure RenameObjVar (oldObjVarName varchar2, objvar_name varchar2)
|
|
is
|
|
n number;
|
|
begin
|
|
if slot_map.exists(oldObjVarName) then
|
|
if slot_map(oldObjVarName) < 21 then
|
|
n := slot_map(oldObjVarName);
|
|
Obj_ObjVars(n).objvar_name := objvar_name;
|
|
isObjModified := TRUE;
|
|
else
|
|
OV_ObjVars(oldObjVarName).old_objvar_name_id := OV_ObjVars(oldObjVarName).objvar_name_id;
|
|
OV_ObjVars(oldObjVarName).objvar_name := objvar_name;
|
|
updated_objvars.extend(1);
|
|
updated_objvars(updated_objvars.last) := oldObjVarName;
|
|
end if;
|
|
end if;
|
|
exception
|
|
when others then
|
|
err_num := SQLCODE;
|
|
dbms_output.put_line('Error in ModifyObjVar - time = ' || to_char(sysdate, 'MM/DD/YY HH24:MI:SS'));
|
|
db_error_logger.dblogerror(err_num, 'Error in ModifyObjVar');
|
|
end;
|
|
|
|
function GetObjVarValue (objvar_name varchar2) return varchar2
|
|
is
|
|
begin
|
|
if slot_map.exists(objvar_name) then
|
|
if slot_map(objvar_name) < 21 then
|
|
return Obj_ObjVars(slot_map(objvar_name)).objvar_value;
|
|
else
|
|
return OV_ObjVars(objvar_name).objvar_value;
|
|
end if;
|
|
else
|
|
return null;
|
|
end if;
|
|
end;
|
|
|
|
procedure AddScript (newScript varchar2)
|
|
is
|
|
begin
|
|
script_list := trim(script_list) || newScript || ':';
|
|
isObjModified := TRUE;
|
|
end;
|
|
|
|
procedure RemoveScript (oldScript varchar2)
|
|
is
|
|
begin
|
|
script_list := replace(script_list, oldScript || ':');
|
|
isObjModified := TRUE;
|
|
end;
|
|
|
|
procedure SetNewTemplateId (newTemplateId number)
|
|
is
|
|
begin
|
|
new_template_id := newTemplateId;
|
|
SetTemplateText (newTemplateId);
|
|
end;
|
|
|
|
procedure SetTemplateText (newTemplateId number)
|
|
is
|
|
begin
|
|
if templateNameText.exists(newTemplateId) then
|
|
object_name := null;
|
|
name_text := templateNameText(newTemplateId);
|
|
if templateNameTable.exists(newTemplateId) then
|
|
name_table := templateNameTable(newTemplateId);
|
|
end if;
|
|
end if;
|
|
end;
|
|
|
|
procedure InvalidateSchematic
|
|
is
|
|
begin
|
|
AddObjVar('ImAnInvalidSchematic',0,1);
|
|
isObjModified := TRUE;
|
|
end;
|
|
|
|
procedure SetGenProtection(rangeTable rangeTableType)
|
|
is
|
|
begin
|
|
if isFactory= TRUE then
|
|
ModifyObjVar('crafting_attributes.crafting:armor_effectiveness','crafting_attributes.crafting:general_protection',2,rangeTable);
|
|
else
|
|
ModifyObjVar('armor.effectiveness','armor.general_protection',2,rangeTable);
|
|
end if;
|
|
end;
|
|
|
|
procedure SetArmorCondLevelCat(condition varchar2, lev varchar2, category varchar2)
|
|
is
|
|
begin
|
|
if isFactory= TRUE then
|
|
AddObjVar('crafting_attributes.crafting:condition',2,condition);
|
|
AddObjVar('armorLevel',0,lev);
|
|
AddObjVar('armorCategory',0,category);
|
|
else
|
|
AddObjVar('armor.condition',2,condition);
|
|
AddObjVar('armor.armorLevel',0,lev);
|
|
AddObjVar('armor.armorCategory',0,category);
|
|
end if;
|
|
end;
|
|
|
|
procedure SetArmorLevel(lev varchar)
|
|
is
|
|
begin
|
|
if isFactory= TRUE then
|
|
AddObjVar('armorLevel',0,lev);
|
|
else
|
|
AddObjVar('armor.armorLevel',0,lev);
|
|
end if;
|
|
end;
|
|
|
|
procedure SetArmorCategory(category varchar2)
|
|
is
|
|
begin
|
|
if isFactory= TRUE then
|
|
AddObjVar('armorCategory',0,category);
|
|
else
|
|
AddObjVar('armor.armorCategory',0,category);
|
|
end if;
|
|
end;
|
|
|
|
procedure SetGpAndCond(gp_name varchar2, gp_val varchar2, cond_name varchar2, cond_val varchar2)
|
|
is
|
|
begin
|
|
AddObjVar(gp_name,2,gp_val);
|
|
AddObjVar(cond_name,2,cond_val);
|
|
end;
|
|
|
|
procedure DeleteCraftingComponents
|
|
is
|
|
begin
|
|
DeleteObjVar('crafting_components.*');
|
|
DeleteObjVar('item_attrib_keys');
|
|
DeleteObjVar('item_attrib_values');
|
|
end;
|
|
|
|
function ConvertValue (oldvalue number, rangeTable rangeTableType)
|
|
return number
|
|
is
|
|
retval number;
|
|
i number;
|
|
begin
|
|
retval := rangeTable(rangeTable.first)(3); -- default to min value
|
|
if oldvalue >= rangeTable(rangeTable.last)(2) then
|
|
retval := rangeTable(rangeTable.last)(4);
|
|
else
|
|
i := rangeTable.first;
|
|
while i is not null loop
|
|
if oldvalue >= rangeTable(i)(1) and oldvalue < rangeTable(i)(2) then
|
|
retval := (( (oldvalue - rangeTable(i)(1)) *
|
|
((rangeTable(i)(4)-rangeTable(i)(3))/(rangeTable(i)(2)-rangeTable(i)(1))) )
|
|
+ rangeTable(i)(3) );
|
|
exit;
|
|
end if;
|
|
i := rangeTable.next(i);
|
|
end loop;
|
|
end if;
|
|
|
|
return retval;
|
|
end;
|
|
|
|
function SchematicMap(schematic_id number)
|
|
return number
|
|
is
|
|
retval number := 0;
|
|
begin
|
|
if schematic_map.exists(schematic_id) then
|
|
retval := schematic_map(schematic_id);
|
|
end if;
|
|
return retval;
|
|
end;
|
|
end;
|
|
/
|