Yes, I need better samples, I haven't made them yet since object editing is a little tiresome on WINE:
Most people may find it more complicated than the caster system, because of the rather alien way to use it, this is the xecast module:

JASS:
local xecast mp = xecast.createA()
set mp.abilityid='Ahpm'
set mp.orderstring="polymorph"
set mp.owningplayer = GetOwningPlayer(GetTriggerUnit())
call mp.castOnAOE(x,y,radius)
Now, what I wanted is more flexibility and things that look similar, this casts AOE polymorph on various points:

JASS:
local xecast mp = xecast.create()
set mp.abilityid='Ahpm'
set mp.orderstring="polymorph"
set mp.owningplayer = GetOwningPlayer(GetTriggerUnit())
call mp.castOnAOE(x,y+500.0,radius)
call mp.castOnAOE(x-500.0,y,radius)
call mp.castOnAOE(x,y,radius)
call mp.castOnAOE(x-500.0,y-500.0,radius)
call mp.destroy()
The real deal is that you don't need to keep creating stuff and worry about struct 'leaks'

JASS:
globals
private xecast mp
endglobals
set mp = xecast.create()
set mp.abilityid='Ahpm'
set mp.orderstring="polymorph"
set mp.owningplayer = GetOwningPlayer(GetTriggerUnit())
call mp.castOnAOE(x,y+500.0,radius)
call mp.castOnAOE(x-500.0,y,radius)
call mp.castOnAOE(x,y,radius)
call mp.castOnAOE(x-500.0,y-500.0,radius)
What if you want to target a unit group instead? you keep everything and just replace mp.castOnAOE(x,y,radius) with mp.castOnGroup(g) ,
And when all the modules are done, it will probably get larger than the caster system. Though very few people will have to implement them all.
And... spells with embedded systems are an abomination, not something 'good' it is terrible and no reason for pride.
I don't really like how xecast works right now, xefx on the other hand...
__________________