» Fri Dec 02, 2011 9:27 am
I suppose the original purpose was just what the name of the flag, "RunOnActivateBlock", implies: to be able to activate an object with a choice of running or not running its OnActivate block.
But the function came out buggy and causes the problem you experienced if you tell it not to run the OnActivate block and there is no OnActivate block in the first place (or no script at all).
My guess is that, by skipping the non-existing OnActivate block processing, the engine also skips some other process that should not be skipped (like some code to put some internal things back in place or some data cleanup code), therefore leaving some dirty/wrong data behind, which will cause problems the next time it is needed (like doors and containers not opening or NPCs not responding).
Using RunOnActivateBlock = 1 has no problems, as far as I know.
So, the recommendation is ALWAYS use this flag set to 1, unless, of course, you actually need its original purpose, i.e., for some reason you don't want AN EXISTING OnActivate code to run.
One legitimate reason we use all the time is the plain "Activate" (the flag defaults to 0) used within the OnActivate block. In this case, the OnActivate block always exists and there is no bug involved.