That sounds like a bad idea to me. By sidestepping persistence, you're enabling the game to delete the ObjectReference you're trying to work on, and possibly even reallocate its FormID (which is the only thing you seem to be storing), and with this method it seems you have no way of detecting whether or not that's happened.
A method that I think would work better would be to use a FormList. ObjectReferences can be stored in a FormList (which you would get via a Property like you're currently doing with a GlobalVariable) without being made persistent, and I think if you try to get an ObjectReference that no longer exists from a FormList, you'll be given None instead (even if the FormID has been recycled).
Spoiler FormList Property VictimStorage AutoObjectReference Property Victim Function set(ObjectReference akRef) VictimStorage.Revert() VictimStorage.AddForm(akRef) EndFunction ObjectReference Function get() Return VictimStorage.GetAt(0) EndFunctionEndProperty
Using an ObjectReference[1] might also work, as I'm unsure whether or not array elements force persistence in the same way as variables (and unfortunately I'm also unable to test it at the moment).
Cipscis
What I am storing is the victim and (1) witness's form ID's, (2) the murder weapon, (3) the time the witness saw the player, (4) the form ID of each piece of clothing the player was wearing when seen by the witness, (5) the type of weapons the player had equipped at the time the witness saw the player and (6) the distance between the player and victim (if possible) at the time the witness saw the player. And there can be multiple witnesses too so that is a lot of data! I was considering using formlists but I thought my way might be faster... Can you store floats in formlists?
Anyway, its working now but will the game delete the form ID of a unique actor if that actor is dead? And reallocating form ID's? If so thats bad although at the moment the most important data is (2)-(6). (3), (5) and (6) are safe because they are just floats and ints but the rest.. (1) is for more advanced features I have yet to determine if possible...
@h4event I don't understand your point as I was checking to see if the player and victim were in the same cell before using get distance for the very reasons you stated! However I have changed that condition to If Victim.IsNearPlayer() because the player and victim may be close together but on opposite sides of the border between the two cells. Its working well at the moment but needs more testing.
But thanks again guys for the useful information. At least now if (or more likely when

) something goes wrong I will have some idea what it is (and will use formlists).