I won't comment on the Combat discussion because, as I said earlier, I have no Combat experience, not even as a player.
I am, like some other earlier posters inclined toward, wondering about the difference in processing drain between this and the normal radiantAI packages? The drain the AI system puts on the CPU seems excessive; one of the main concerns for me is how many NPC are getting processed, as too many makes gameplay a slideshow.
EDIT - Eh, well the real question was if there would be a gain to replace as much of the original packages as possible with this instead. END EDIT
What I am doing is superseding the vanilla mechanism of selecting AI packages with an external (scripted), more flexible one. My implementation is very light on CPU and I would bet that I could handle a couple of hundred NPCs without any performance effect. (not all in the same cell, of course)
On the other hand, I would guess that the original package selection algorithm is also very light on CPU, as it only runs when the NPC reevaluates his packages (not that often).
So, it should not be any difference in performance, either way.
I suppose that what really drains performance are the things mentioned by the http://cs.elderscrolls.com/constwiki/index.php/SetSceneIsComplex and its three companion functions.
Ahh yes ofcourse. That
would make alot more sense. :facepalm: In theory it could work with RunBatchScript but each and every parameter would need (atleast) one (quest)variable. And with such a complex structure the practicle use is very low for this mod.

I suppose one could create one BatchScript file per NPC and run one to populate the quest variables, run a script to move the values to the NPC array, run the next BatchScript, and so forth. Not sure it is worth the trouble.
Anyways, a couple of questions:
#1. You mentioned the OnPackageDone blocks are required but it could also work with tokens (apart from the, awesome, no gamemode approach) and distance checks. Well I'd like to ask for such an option/alternative for scripts on NPCs.
I've been thinking about it and I think it will work. I will do some tests when I am done with this mod.
But, distance alone is not enough. E.g., when an NPC is following another (which is his 'destination') they may be within distance, but it needs some additional checks to see if the leader has reached his destination.
#2. Forgetting the above, are the scripts that are added to the NPCs generic ones? With a couple of blocks for a couple of standard AI packages (for the various stages of each activity)? Or are the AI packages very specific to an NPCs? I'm guessing it's the former and that you are changing the destination of an AI package through script just before it's added to the NPC. I recall reading something about NPCs using/sticking with whatever the destination or target was when they were assigned the AI package, instead of switching/updating to the new target when you change it by script again.
Yes, all actors share the same script. As it is now, it has 100+ onpackageend blocks.
While experimenting with ways of making the NPCs go here and there, I settled for two alternatives:
1) One Travel package per destination - many NPCs sharing the same package
2) One Travel package per actor - Destination being a reference that is moved to the desired spot
One factor for choosing one or the other is whether you have more destinations than actors or vice-versa.
I am using the second option. I have about 30 travel packages whose destinations are 30 different references (barrels scaled to .01 - I like barrels). When I want the actor to go to the Bar, I move the barrel to the bar and add the package to the actor. I have found that the game engine handles very well these 'moving targets'. Never had any problems.
Note that OBSE's SetPackageTarget function changes the package Target, not the Location. Travel packages use Location, not Targets, so this is not an option.
I also have 30 Find packages to the same 30 little barrels and 40+ Travel-to-NPC packages (used to make one NPC follow another)
#3. About the Voters, will it be possible to create new/extra voters put them on the list (I assume there is a list somewhere) of Voters the mod will use?
Very easily. The Activity Selection script has a number of Call lines calling each voter's function.
It is just a matter of writing a new voter function and adding a Call to the Activity Selection script.
#4. From what I've read it will be relatively simple to create new types of activities? As each activity might be stored/defined as various stages?
Yes. Here is a sample from the Activities initialization script:
;==============================let sName := zAcquirePartnerBar;==============================let arrActivities [sName] := ar_construct stringmaplet arrActivities [sName] [zStages] := arr := ar_construct arraylet arrActivities [sName] [zsLocation] := zBarlet arr [ar_size arr] := call zvBuildStage zGotoBar 20 0 0 zzActionGotoBar let arr [ar_size arr] := call zvBuildStage zAcquirePartner 5 0 0 zzActionAcquirePartnerlet arr [ar_size arr] := call zvBuildStage zProposeDrink 5 0 0 zzActionProposeDrink
zvBuildStage is just a function to format, populate (with the arguments provided) and return the Stage array .
The arguments are: Stage name + Duration + Duration variation + Flag + Function that handles the stage.
Words prefixed with a single 'z' are strings (zBar = "zBar")
Stage functions may be used by more than one activity.
The hardest part is writing the Stage function, as some may require new AI packages, new NPC attributes, etc.