Quote
On a related note, my development revealed that OnInit() events of global characters were fired multiple times in rapid succession (I noted 3 to >10, depending on PC) when a new playthrough begins

Good to know for some cases where execution amount matters.

Quote
So these variables are saved permanently, yet they appear to always be reinitialized on level load. I've had a few cases during development where this became a problem, because there is no way to maintain a "flag" variable within a local object's script (that will at some point be walked away from).

Note sure if I understand you right. Can you elaborate a bit?

Quote
Originally Posted By: Abraxas*
Local characters can't be addressed and are completely unresponsive if the player isn't in the same level.

Ameranth:
More specifically, I believe a player needs to be within a short range of local characters (roughly 35 meters?) to have their scripts function.

From my testings this only applies to the character's BEHAVIOUR (and that function of the engine which the OnActivate / OnDeactivate comments call the 'script controller': controlling priorities, usage, conditions, execution etc.). The EVENTS section remains ready to receive events and execute actions, regardless of if the character is active (in player range) or not.
Local characters, as long as the player is in the same level, are able to answer events, e. g. ('LUC_MineQuarrel_Cultist_02' is a local character, the event is added to the 'Base' char script):
Code
EVENT Test
ON
	OnCharacterStatus(CHARACTER:Player1_dac1443f-a866-4ab3-b240-e705c0b20ec5,STUNNED)
ACTIONS
	IF "c1"		
		IsEqual(__Me,CHARACTER:LUC_MineQuarrel_Cultist_02_57249666-411c-4a7f-8b57-aa5e15cbeebc)
	THEN			
		CharacterApplyStatus(CHARACTER:Player1_dac1443f-a866-4ab3-b240-e705c0b20ec5,WEAK,3,1)
		CharacterAddToInventory(CHARACTER:Player1_dac1443f-a866-4ab3-b240-e705c0b20ec5,"FOOD_Pumpkin_C",1)
	ENDIF


LUC_MineQuarrel_Cultist_02 always applies WEAK on Player1 and adds a pumpkin (to make sure no other character answered), no matter how far away he is in the level. Global characters answer from every point of the world, regardless of the level.

Quote

I'm interested to know if removing the object via a scripted Destroy() (I think it's called Destroy) call will remove the variables from the save. Likewise, does death or being offstage affect this whatsoever? I'm relatively sure that death does not, as I've tested that scripts continue to function from the corpses of deceased characters.

Thanks for the Destroy hint. I regarded it for testing and, indeed, it makes a big difference! Details in the following post (can't add it to the initial post without losing the ability to edit it; I hope this obstacle will be changed in the nearer future!).


My mods for DOS 1 EE: FasterAnimations - QuietDay - Samaritan