Given the following example code, the persistent ID returned in OnStoreLoad is incorrect (doesn't match AfterStoreLoad/OnStoreSave where it is correct):
modded class ItemBase { override bool OnStoreLoad(ParamsReadContext ctx, int version) { if (!super.OnStoreLoad(ctx, version)) return false; int b1, b2, b3, b4; GetPersistentID(b1, b2, b3, b4); Print(ToString() + "::OnStoreLoad - persistent ID <" + b1 + ", " + b2 + ", " + b3 + ", " + b4 + ">"); return true; } override void AfterStoreLoad() { super.AfterStoreLoad(); int b1, b2, b3, b4; GetPersistentID(b1, b2, b3, b4); Print(ToString() + "::AfterStoreLoad - persistent ID <" + b1 + ", " + b2 + ", " + b3 + ", " + b4 + ">"); } override void OnStoreSave(ParamsWriteContext ctx) { super.OnStoreSave(ctx); int b1, b2, b3, b4; GetPersistentID(b1, b2, b3, b4); Print(ToString() + "::OnStoreSave - persistent ID <" + b1 + ", " + b2 + ", " + b3 + ", " + b4 + ">"); } }
Result (excerpt):
SCRIPT : Pliers<b88a7660>::OnStoreLoad - persistent ID <798189327, 1598056803, -557177952, 151747679> SCRIPT : Pliers<b88a7660>::AfterStoreLoad - persistent ID <-1912522676, -515547464, 1276308636, -1871300054> SCRIPT : Pliers<b88a7660>::OnStoreSave - persistent ID <-1912522676, -515547464, 1276308636, -1871300054> ...snip... SCRIPT : CamoNet<b88a5020>::OnStoreLoad - persistent ID <460215492, -918281111, -1071962729, 899361833> SCRIPT : CamoNet<b88a5020>::AfterStoreLoad - persistent ID <-1870548345, -1035170369, 1236795313, -1098884204> SCRIPT : CamoNet<b88a5020>::OnStoreSave - persistent ID <-1870548345, -1035170369, 1236795313, -1098884204>