In do_order I suggest to change:
for( och = ch->in_room->first_person; och; och = och_next )
och_next = och->next_in_room;
for ( och = ch->in_room->last_person; och; och = och_next )
och_next = och->prev_in_room;
1) evocate more than one charmies followers
2) give at one of them more than one projectile (five for example).
3) type: "order all fire object north"
I some case the mob with projectiles fires not only one time but repeat the fire because the in_room order change with fire.
I don't know if the problem is only my, or if the fix can generate problems and has a bad interact with other order commands.
It's only a idea: probably there is a better solution.