These aliases are set to fill Type: "Unique Actor" [None] (I want them to initialize to none...not entirely sure of the best way to do it)
I then have a scripted spell for the purposes of forcing these aliases.
The Script:
Spoiler
ReferenceAlias property ZombieAlias1 autoReferenceAlias property ZombieAlias2 autoReferenceAlias property ZombieAlias3 autoReferenceAlias property ZombieAlias4 autoReferenceAlias property ZombieAlias5 autoReferenceAlias property ZombieAlias6 autoReferenceAlias property ZombieAlias7 autoReferenceAlias property ZombieAlias8 autoReferenceAlias property ZombieAlias9 autoReferenceAlias property ZombieAlias10 autoSpell property csdconjReanimateSingle autoGlobalVariable property csdDecayLimit autoFaction property csdconjDecayFaction autoBool ZombieOpenEvent OnEffectStart(Actor akTarget, Actor akCaster) if akTarget.GetFactionRank(csdconjDecayFaction) >= (csdDecayLimit.GetValue() as int) Debug.Notification("That corpse is too decayed to be of use.") Return endif if ZombieAlias1 == none || ZombieAlias2 == none || ZombieAlias3 == none || ZombieAlias4 == none || ZombieAlias5 == none || ZombieAlias6 == none || ZombieAlias7 == none || ZombieAlias8 == none || ZombieAlias9 == none || ZombieAlias10 == none ZombieOpen = True endif if ZombieOpen csdconjReanimateSingle.Cast(akCaster, akTarget) else Debug.Notification("You are unable to control any more zombies.") endif EndEventThe Problem: ZombieOpen is never true. The quest is started, I can check its stage. Why aren't any of my aliases == none?

), I think his problem is that they are NEVER none, they are all comparing as filled.
There's something satisfying about using reference aliases in an array property and churning 'em through a while loop with a custom function. Yay, Papyrus!
as setting up an array property sounds like it takes about as much work as setting up all those individual properties took. Had this been suggested before I set up all my properties...