Giving a unit Aloc also makes it invulnerable and it also removes its pathing, so aren't these two lines useless?
call SetUnitPathing(dummy, false)
call UnitAddAbility(dummy, 'Avul')
Aside from that, I see no downsides and nothing wrong with this system, plus the demo map works, FWIW. If you remove those lines or explain why they're necessary I'll approve this.