I used to have a section of code in TakeNItems that would reset the item skill modifiers for a character when you get/lose any items.
To fix this one too, I made that into its own function:
Code:
void UpdateSkillModifierFromItem(ref _refCharacter, string itemName)
{
aref arItm;
Items_FindItem(itemName,&arItm);
if(CheckAttribute(arItm, "skill"))
{
for(int sn = 0; sn < 10; sn++)
{
string skillName = GetSkillName(sn);
if (CheckAttribute(arItm, "skill." + skillName))
{
ResetSkillModifier(_refCharacter, skillName);
}
}
}
}
This is now called additionally from
RemoveCharacterEquip and
EquipCharacterByItem (for both old AND new items).
Extract attached file to PROGRAM\Characters to try. As far as I can tell, this works as intended now.
On
@jsv's savegame, just de-equip the Compass and equip it again to update the number correctly.