Ok, I was fooling around with the toolset and I edited my save file to change my armor materials from steel-8 to veridium-4 mostly for appearance sake, I wanted to make my armor match the Proving Helmet a little better. Anyways, I reloaded the game and my armor base was unchanged from the steel.
No problem, I thought -- it just changed the look of the armor and now the descriptions are wrong since its really just steel armor that looks like veridium right? Wrong! The game modified my character's base armor modifier somehow so that when I removed all my armor, saved, and loaded the file in my toolset, I had a armor modifier (thats property #10) of around negative 3.
This change persisted. I could put on a pair of boots and take them off and my armor stayed at zero because my character still had negative armor value.
To fix it, I removed all armor, saved, edited property 10 modifier back to zero, saved in the toolkit, and then reloaded the game. This seems to have fixed it and now the armor values add up properly like they are supposed to.
So beware if you are thinking about tinkering around with your character's equipped armor type, it has some non-intuitive persistent side effects.
Side effects from changing save file armor material!
Débuté par
The_Dougster
, nov. 16 2009 09:30
#1
Posté 16 novembre 2009 - 09:30
#2
Posté 17 novembre 2009 - 06:05
I just made a script that lets you alter the material tier of any armor/weapon you equip rather than edit saved game files. It seems to work just fine, with no side effects. All you do is go into the console, type runscript scriptname tier, with scriptname being the script name you want and tier being the material tier you want (1 for iron, 3 for steel, 7 for dragonbone for metal, for example). This edits the equipped items of the currently selected character.
It's a little long (since I wanted to make sure armor got the armor materials, weapons got the weapon materials, wood, leather, and metal all got the correct materials, etc), but it works:
int GetMatByclass(int itemType, int matType, int matclass);
int GetMetalWoodHide(int material);
int GetWeapShieldArm(int material);
void SetItemMatTypeByclass(object item, int class);
void main()
{
object oTarget = GetMainControlled();
string sParams = GetLocalString(GetModule(),"RUNSCRIPT_VAR");
int class = StringToInt(sParams);
object item;
item = GetItemInEquipSlot(INVENTORY_SLOT_MAIN);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_CHEST);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_OFFHAND);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_BOOTS);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_GLOVES);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_HEAD);
SetItemMatTypeByclass(item,class);
}
void SetItemMatTypeByclass(object item, int class)
{
int mat = GetItemMaterialType(item);
int itemType = GetWeapShieldArm(mat);
int matType = GetMetalWoodHide(mat);
int newMat = GetMatByclass(itemType, matType, class);
if(newMat == 0)
return;
SetItemMaterialType(item,newMat);
}
// Returns 1 if armor, 2 if shield, 3 if weapon, 0 if invalid
int GetWeapShieldArm(int material)
{
switch(material)
{
case 0: return 0;
case 61: return 0;
case 62: return 0;
case 63: return 0;
case 64: return 0;
case 65: return 0;
case 66: return 0;
case 67: return 0;
case 68: return 0;
case 69: return 0;
case 70: return 0;
case 71: return 0;
case 72: return 0;
case 73: return 0;
case 74: return 0;
case 75: return 0;
case 76: return 0;
case 77: return 0;
case 78: return 0;
case 82: return 0;
case 83: return 0;
case 84: return 0;
case 85: return 0;
case 86: return 0;
case 20: return 0;
case 22: return 0;
case 23: return 0;
case 24: return 0;
case 25: return 0;
case 26: return 0;
case 27: return 0;
case 18: return 0;
case 21: return 0;
case 14: return 0;
case 12: return 0;
case 16: return 0;
case 19: return 0;
case 53: return 0;
case 54: return 0;
case 55: return 0;
case 56: return 0;
case 57: return 0;
case 58: return 0;
case 59: return 0;
case 87: return 1;
case 88: return 1;
case 80: return 1;
case 1: return 1;
case 2: return 1;
case 8: return 1;
case 4: return 1;
case 5: return 1;
case 3: return 1;
case 6: return 1;
case 60: return 1;
case 28: return 1;
case 29: return 1;
case 30: return 1;
case 31: return 1;
case 17: return 1;
case 32: return 1;
case 47: return 2;
case 48: return 2;
case 49: return 2;
case 81: return 2;
case 50: return 2;
case 51: return 2;
case 52: return 2;
case 79: return 2;
case 9: return 2;
case 11: return 2;
case 15: return 2;
case 13: return 2;
case 7: return 2;
case 10: return 2;
case 40: return 3;
case 41: return 3;
case 43: return 3;
case 42: return 3;
case 44: return 3;
case 45: return 3;
case 46: return 3;
case 33: return 3;
case 34: return 3;
case 35: return 3;
case 36: return 3;
case 37: return 3;
case 38: return 3;
case 39: return 3;
}
return 0;
}
// Returns 1 if metal, 2 if wood, 3 if hide, 0 if invalid
int GetMetalWoodHide(int material)
{
switch(material)
{
case 0: return 0;
case 61: return 0;
case 62: return 0;
case 63: return 0;
case 64: return 0;
case 65: return 0;
case 66: return 0;
case 67: return 0;
case 68: return 0;
case 69: return 0;
case 70: return 0;
case 71: return 0;
case 72: return 0;
case 73: return 0;
case 74: return 0;
case 75: return 0;
case 76: return 0;
case 77: return 0;
case 78: return 0;
case 82: return 0;
case 83: return 0;
case 84: return 0;
case 85: return 0;
case 86: return 0;
case 20: return 1;
case 22: return 1;
case 23: return 1;
case 24: return 1;
case 25: return 1;
case 26: return 1;
case 27: return 1;
case 18: return 2;
case 21: return 2;
case 14: return 2;
case 12: return 3;
case 16: return 3;
case 19: return 3;
case 53: return 3;
case 54: return 3;
case 55: return 3;
case 56: return 3;
case 57: return 3;
case 58: return 3;
case 59: return 3;
case 87: return 0;
case 88: return 0;
case 80: return 1;
case 1: return 1;
case 2: return 1;
case 8: return 1;
case 4: return 1;
case 5: return 1;
case 3: return 1;
case 6: return 1;
case 60: return 3;
case 28: return 3;
case 29: return 3;
case 30: return 3;
case 31: return 3;
case 17: return 3;
case 32: return 3;
case 47: return 1;
case 48: return 1;
case 49: return 1;
case 81: return 1;
case 50: return 1;
case 51: return 1;
case 52: return 1;
case 79: return 2;
case 9: return 2;
case 11: return 2;
case 15: return 2;
case 13: return 2;
case 7: return 2;
case 10: return 2;
case 40: return 1;
case 41: return 1;
case 43: return 1;
case 42: return 1;
case 44: return 1;
case 45: return 1;
case 46: return 1;
case 33: return 2;
case 34: return 2;
case 35: return 2;
case 36: return 2;
case 37: return 2;
case 38: return 2;
case 39: return 2;
}
return 0;
}
// Returns material of given class
int GetMatByclass(int itemType, int matType, int class)
{
if(itemType == 0)
return 0;
if(matType == 0)
return 0;
if(class == 0)
return 0;
else if(itemType == 1)
{
if(matType == 1)
{
switch(class)
{
case 1: return 1;
case 2: return 2;
case 3: return 8;
case 4: return 4;
case 5: return 5;
case 6: return 3;
case 7: return 6;
}
}
else if(matType == 3)
{
switch(class)
{
case 1: return 60;
case 2: return 28;
case 3: return 29;
case 4: return 30;
case 5: return 31;
case 6: return 17;
case 7: return 32;
}
}
}
else if(itemType == 2)
{
if(matType == 1)
{
switch(class)
{
case 1: return 47;
case 2: return 48;
case 3: return 49;
case 4: return 81;
case 5: return 50;
case 6: return 51;
case 7: return 52;
}
}
else if(matType == 2)
{
switch(class)
{
case 1: return 79;
case 2: return 9;
case 3: return 11;
case 4: return 15;
case 5: return 13;
case 6: return 7;
case 7: return 10;
}
}
}
else if(itemType == 3)
{
if(matType == 1)
{
switch(class)
{
case 1: return 40;
case 2: return 41;
case 3: return 43;
case 4: return 42;
case 5: return 44;
case 6: return 45;
case 7: return 46;
}
}
else if(matType == 2)
{
switch(class)
{
case 1: return 33;
case 2: return 34;
case 3: return 35;
case 4: return 36;
case 5: return 37;
case 6: return 38;
case 7: return 39;
}
}
}
return 0;
}
It's a little long (since I wanted to make sure armor got the armor materials, weapons got the weapon materials, wood, leather, and metal all got the correct materials, etc), but it works:
int GetMatByclass(int itemType, int matType, int matclass);
int GetMetalWoodHide(int material);
int GetWeapShieldArm(int material);
void SetItemMatTypeByclass(object item, int class);
void main()
{
object oTarget = GetMainControlled();
string sParams = GetLocalString(GetModule(),"RUNSCRIPT_VAR");
int class = StringToInt(sParams);
object item;
item = GetItemInEquipSlot(INVENTORY_SLOT_MAIN);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_CHEST);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_OFFHAND);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_BOOTS);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_GLOVES);
SetItemMatTypeByclass(item,class);
item = GetItemInEquipSlot(INVENTORY_SLOT_HEAD);
SetItemMatTypeByclass(item,class);
}
void SetItemMatTypeByclass(object item, int class)
{
int mat = GetItemMaterialType(item);
int itemType = GetWeapShieldArm(mat);
int matType = GetMetalWoodHide(mat);
int newMat = GetMatByclass(itemType, matType, class);
if(newMat == 0)
return;
SetItemMaterialType(item,newMat);
}
// Returns 1 if armor, 2 if shield, 3 if weapon, 0 if invalid
int GetWeapShieldArm(int material)
{
switch(material)
{
case 0: return 0;
case 61: return 0;
case 62: return 0;
case 63: return 0;
case 64: return 0;
case 65: return 0;
case 66: return 0;
case 67: return 0;
case 68: return 0;
case 69: return 0;
case 70: return 0;
case 71: return 0;
case 72: return 0;
case 73: return 0;
case 74: return 0;
case 75: return 0;
case 76: return 0;
case 77: return 0;
case 78: return 0;
case 82: return 0;
case 83: return 0;
case 84: return 0;
case 85: return 0;
case 86: return 0;
case 20: return 0;
case 22: return 0;
case 23: return 0;
case 24: return 0;
case 25: return 0;
case 26: return 0;
case 27: return 0;
case 18: return 0;
case 21: return 0;
case 14: return 0;
case 12: return 0;
case 16: return 0;
case 19: return 0;
case 53: return 0;
case 54: return 0;
case 55: return 0;
case 56: return 0;
case 57: return 0;
case 58: return 0;
case 59: return 0;
case 87: return 1;
case 88: return 1;
case 80: return 1;
case 1: return 1;
case 2: return 1;
case 8: return 1;
case 4: return 1;
case 5: return 1;
case 3: return 1;
case 6: return 1;
case 60: return 1;
case 28: return 1;
case 29: return 1;
case 30: return 1;
case 31: return 1;
case 17: return 1;
case 32: return 1;
case 47: return 2;
case 48: return 2;
case 49: return 2;
case 81: return 2;
case 50: return 2;
case 51: return 2;
case 52: return 2;
case 79: return 2;
case 9: return 2;
case 11: return 2;
case 15: return 2;
case 13: return 2;
case 7: return 2;
case 10: return 2;
case 40: return 3;
case 41: return 3;
case 43: return 3;
case 42: return 3;
case 44: return 3;
case 45: return 3;
case 46: return 3;
case 33: return 3;
case 34: return 3;
case 35: return 3;
case 36: return 3;
case 37: return 3;
case 38: return 3;
case 39: return 3;
}
return 0;
}
// Returns 1 if metal, 2 if wood, 3 if hide, 0 if invalid
int GetMetalWoodHide(int material)
{
switch(material)
{
case 0: return 0;
case 61: return 0;
case 62: return 0;
case 63: return 0;
case 64: return 0;
case 65: return 0;
case 66: return 0;
case 67: return 0;
case 68: return 0;
case 69: return 0;
case 70: return 0;
case 71: return 0;
case 72: return 0;
case 73: return 0;
case 74: return 0;
case 75: return 0;
case 76: return 0;
case 77: return 0;
case 78: return 0;
case 82: return 0;
case 83: return 0;
case 84: return 0;
case 85: return 0;
case 86: return 0;
case 20: return 1;
case 22: return 1;
case 23: return 1;
case 24: return 1;
case 25: return 1;
case 26: return 1;
case 27: return 1;
case 18: return 2;
case 21: return 2;
case 14: return 2;
case 12: return 3;
case 16: return 3;
case 19: return 3;
case 53: return 3;
case 54: return 3;
case 55: return 3;
case 56: return 3;
case 57: return 3;
case 58: return 3;
case 59: return 3;
case 87: return 0;
case 88: return 0;
case 80: return 1;
case 1: return 1;
case 2: return 1;
case 8: return 1;
case 4: return 1;
case 5: return 1;
case 3: return 1;
case 6: return 1;
case 60: return 3;
case 28: return 3;
case 29: return 3;
case 30: return 3;
case 31: return 3;
case 17: return 3;
case 32: return 3;
case 47: return 1;
case 48: return 1;
case 49: return 1;
case 81: return 1;
case 50: return 1;
case 51: return 1;
case 52: return 1;
case 79: return 2;
case 9: return 2;
case 11: return 2;
case 15: return 2;
case 13: return 2;
case 7: return 2;
case 10: return 2;
case 40: return 1;
case 41: return 1;
case 43: return 1;
case 42: return 1;
case 44: return 1;
case 45: return 1;
case 46: return 1;
case 33: return 2;
case 34: return 2;
case 35: return 2;
case 36: return 2;
case 37: return 2;
case 38: return 2;
case 39: return 2;
}
return 0;
}
// Returns material of given class
int GetMatByclass(int itemType, int matType, int class)
{
if(itemType == 0)
return 0;
if(matType == 0)
return 0;
if(class == 0)
return 0;
else if(itemType == 1)
{
if(matType == 1)
{
switch(class)
{
case 1: return 1;
case 2: return 2;
case 3: return 8;
case 4: return 4;
case 5: return 5;
case 6: return 3;
case 7: return 6;
}
}
else if(matType == 3)
{
switch(class)
{
case 1: return 60;
case 2: return 28;
case 3: return 29;
case 4: return 30;
case 5: return 31;
case 6: return 17;
case 7: return 32;
}
}
}
else if(itemType == 2)
{
if(matType == 1)
{
switch(class)
{
case 1: return 47;
case 2: return 48;
case 3: return 49;
case 4: return 81;
case 5: return 50;
case 6: return 51;
case 7: return 52;
}
}
else if(matType == 2)
{
switch(class)
{
case 1: return 79;
case 2: return 9;
case 3: return 11;
case 4: return 15;
case 5: return 13;
case 6: return 7;
case 7: return 10;
}
}
}
else if(itemType == 3)
{
if(matType == 1)
{
switch(class)
{
case 1: return 40;
case 2: return 41;
case 3: return 43;
case 4: return 42;
case 5: return 44;
case 6: return 45;
case 7: return 46;
}
}
else if(matType == 2)
{
switch(class)
{
case 1: return 33;
case 2: return 34;
case 3: return 35;
case 4: return 36;
case 5: return 37;
case 6: return 38;
case 7: return 39;
}
}
}
return 0;
}
Modifié par Mutant Dwarf, 17 novembre 2009 - 06:06 .
#3
Posté 17 novembre 2009 - 06:49
Where would we save this script to? What file extension would this have? The override folder? Thank you for any help.
#4
Posté 17 novembre 2009 - 07:24
That script seems to be exactly what I've been looking for, however it looks like chinese to me. Would you mind explaining a little further what needs to be done in order for this to work properly?
#5
Posté 17 novembre 2009 - 11:40
The script works. Just got it into the game. My only concern would be, to be careful upgrading certain named items that normally would only be one tier level and changing it to a new tier level. But for normal weapons and armor this script works great. Will list a set of instructions in a couple of minutes.
#6
Posté 17 novembre 2009 - 11:46
1. Open the toolset
2. Select File->New->Script
3. Resource name: changetieritem
4.Make sure the checkbox for checkout after creation is checked.
5. Paste the whole script into the new file.
6. File->Save
7. Tools->Export->Export Without Dependent Resources
8. This will now be in your override folder.
9. Now start up the game, open the console and type:
runscript changetieritem 3
3 being the tier. You can choose 1 -> 7. 1 being the lowest and 7 being the highest.
2. Select File->New->Script
3. Resource name: changetieritem
4.Make sure the checkbox for checkout after creation is checked.
5. Paste the whole script into the new file.
6. File->Save
7. Tools->Export->Export Without Dependent Resources
8. This will now be in your override folder.
9. Now start up the game, open the console and type:
runscript changetieritem 3
3 being the tier. You can choose 1 -> 7. 1 being the lowest and 7 being the highest.
#7
Posté 17 novembre 2009 - 11:55
After playing around with this script, I have noticed that the item's value does not change when going up the tiers. Also the rune slots also do not get added to the item. So if you take a iron dagger and change it to a red steel dagger, it still has the cost of the iron dagger and no rune slots.
#8
Posté 18 novembre 2009 - 12:13
i have edited the save file usually it does not change appearance. tho in my recent game i swapped the material on a hat i got to starmetal and for some reason that one changed skin to the glowy silvery appearance. which i did not mind since it goes with the warden commander armor better, but it seems buggy since i did it before on the same hat/suit in the last save game i had and only thing it changed was the base armor level not the looks at all.
#9
Posté 18 novembre 2009 - 12:51
There might be a skin tint on the hat that accidentally got set or was linked to the material before.





Retour en haut






