Good job with the families! I know it's an annoying task converting objects to families, but it will pay off later.
A few more things you can improve -
If you are planning to have more allies, move pathfinding and LOS behaviors to the Allies family.
You can disable them specifically for the player sprite on start of layout.
Also, you can add AllyType variable, so you could use code like this:
Allies have LOS to Enemies
and Allies.AllyType not equals "player" -> (attack enemy)
Same with Enemies family, you can add EnemyType if you need to differentiate your events slightly for different enemies. Say, some enemies can fly over obstacles, others don't etc.
Regarding Reach circles - there is no point in adding them to a container without the player/NPC/enemy.
Unfortunately, you can't add a family to the container.
If you want to use variables instead of these circle sprites, you can try something like this:
On every tick
For each Enemies
.... Pick Allies by evaluating Distance(Enemies.x, Enemies.y, Allies.x, Allies.y)<NoticeRange
On a second thought, a much better solution would be adding several LOS behaviors, name them LOS_Notice, LOS_RangedAttack, LOS_MeleeAttack ect.
Set different range for each behavior, different obstacles.
Here is an example of a very simple AI:
For each Enemies
...If Enemies has LOS_MeleeAttack to Allies -> (melee attack)
...Else If Enemies has LOS_RangedAttack to Allies -> (ranged attack)
...Else If Enemies has LOS_Notice to Allies -> (move closer)
...Else (patrol)
Your NPC animation speed is 0, maybe that's why it's not playing. Open NPC sprite, select animation, you can change its speed in the properties bar on the left.
It's hard to say what's wrong with your AI code as almost all events are disabled.
I recommend you start with a simple AI and then gradually add more features to it.