It seems you need far more than just IDs to change an item into another item. At the least this is true for weapons, but I think any magical item works the same way.
For example, I have over 1000 lines of code that defines a total of 15 items in my save.
If I just change the item ID of something in my save game, even if it is on the ground, it does not actually create that item. It will skin the item right and give it the right name, but it will only have a generic item of that type's qualities.
I have been trying to get the corrosive longbow early so I can kill trolls easier, and it will not work generally.
This defines the bow in full in my old game.
{
"$id": "6126",
"$type": "Kingmaker.Items.ItemEntityWeapon, Assembly-CSharp",
"Second": null,
"m_Blueprint": "1d3e5519d0840ed4d96378d6a07cc9d1",
"m_Count": 1,
"m_InventorySlotIndex": 9,
"m_Enchantments": {
"$id": "6127",
"m_Facts": [{
"$id": "6128",
"$type": "Kingmaker.Blueprints.Items.Ecnchantments.ItemEnchantment, Assembly-CSharp",
"m_ParentContext": null,
"m_CurrentContext": null,
"Blueprint": "c3209eb058d471548928a200d70765e0",
"m_ComponentsData": [{
"$id": "6129",
"ComponentName": "$WeaponDamageMultiplierStatReplacement$0c0776ac-6832-4bc3-bba6-9be70b963566"
}
],
"EndTime": "00:00:00",
"RemoveOnUnequipItem": false,
"Owner": {
"$ref": "6126"
},
"Initialized": true,
"Active": false,
"SourceItem": null,
"SourceCutscene": null
}, {
"$id": "6130",
"$type": "Kingmaker.Blueprints.Items.Ecnchantments.ItemEnchantment, Assembly-CSharp",
"m_ParentContext": null,
"m_CurrentContext": null,
"Blueprint": "d42fc23b92c640846ac137dc26e000d4",
"m_ComponentsData": [{
"$id": "6131",
"ComponentName": "$WeaponEnhancementBonus$f1459788-04d5-4128-ad25-dace4b8dee42"
}
],
"EndTime": "00:00:00",
"RemoveOnUnequipItem": false,
"Owner": {
"$ref": "6126"
},
"Initialized": true,
"Active": false,
"SourceItem": null,
"SourceCutscene": null
}, {
"$id": "6132",
"$type": "Kingmaker.Blueprints.Items.Ecnchantments.ItemEnchantment, Assembly-CSharp",
"m_ParentContext": null,
"m_CurrentContext": null,
"Blueprint": "d0c3002b7efc3b647993df15b3bcb65d",
"m_ComponentsData": [{
"$id": "6133",
"ComponentName": "$WeaponEnergyDamageDice$ee15d70c-0ad3-41e4-ae81-2adca2336751"
}
],
"EndTime": "00:00:00",
"RemoveOnUnequipItem": false,
"Owner": {
"$ref": "6126"
},
"Initialized": true,
"Active": false,
"SourceItem": null,
"SourceCutscene": null
}, {
"$id": "6134",
"$type": "Kingmaker.Blueprints.Items.Ecnchantments.ItemEnchantment, Assembly-CSharp",
"m_ParentContext": null,
"m_CurrentContext": null,
"Blueprint": "d8e1ebc1062d8cc42abff78783856b0d",
"m_ComponentsData": [{
"$id": "6135",
"ComponentName": "$WeaponOversized$4e351706-9aad-4c2b-8d6e-445037d37be9"
}
],
"EndTime": "00:00:00",
"RemoveOnUnequipItem": false,
"Owner": {
"$ref": "6126"
},
"Initialized": true,
"Active": false,
"SourceItem": null,
"SourceCutscene": null
}
],
"Owner": {
"$ref": "6126"
},
"ActiveByDefault": false
},
"m_DescriptionViewed": false,
"m_FactsAppliedToWielder": null,
"m_SkinningSuccessful": false,
"m_IdentifyRolls": [],
"ForceSecondary": false,
"IsSecondPartOfDoubleWeapon": false,
"IsShield": false,
"Collection": {
"$ref": "6"
},
"Wielder": null,
"HoldingSlot": null,
"Time": "40.22:02:37.2440000",
"Ability": null,
"ActivatableAbility": null,
"Charges": 0,
"IsIdentified": true,
"SellTime": null,
"IsNonRemovable": false
},
I tried to put this in my new game save, but something is wrong. I am thinking I need to link things better and change some of the owner statements...