Oh, I see.
I'm currently working on a GUI spell pack that uses my easyMUI system, it's mean to encourage GUI users to use my system. I've actually finished the first spell; classic falling rocks from the sky:
Perdition
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Perdition
Actions
Set u = (Triggering unit)
Set EMS_IndexSize = (EMS_IndexSize + 1)
Custom script: set udg_EM_integer1 = udg_EMS_IndexSize
Custom script: set EMS_Index[udg_EMS_IndexSize] = EMS_Perdition_Flush
Custom script: set udg_EM_interval = 0.03125 // 1/32
-------- unit 1 = caster --------
Custom script: call SetUnit(1, udg_u)
-------- real 0 = interval of rock spawning --------
Custom script: call SetReal(0, .1)
-------- integer 0 = amount of rocks --------
Custom script: call SetInteger(0,GetUnitAbilityLevel(udg_u,GetSpellAbilityId())*20)
-------- real 1 = range --------
Custom script: call SetReal(1, 200+GetUnitAbilityLevel(udg_u,GetSpellAbilityId())*50)
-------- real 2 = target x --------
Custom script: call SetReal(2, GetSpellTargetX())
-------- real 3 = target y --------
Custom script: call SetReal(3, GetSpellTargetY())
-------- player 0 = owner of caster --------
Custom script: call SetPlayer(0, GetOwningPlayer(udg_u))
Custom script: //! runtextmacro easyMUI_start("i","Perdition")
Custom script: set udg_r = GetReal(0)-udg_EM_interval
Custom script: set udg_i = GetInteger(0)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
r Less than or equal to 0.00
Then - Actions
Custom script: call SetReal(0, .1)
Set i = (i - 1)
Set MS_free = False
Set r2 = (Random angle)
Custom script: set udg_MS_u = CreateUnit(GetPlayer(0),udg_P_DUMMY_ID,GetReal(2)+GetRandomReal(0,GetReal(1))*Cos(udg_r2*bj_DEGTORAD),GetReal(3)+GetRandomReal(0,GetReal(1))*Sin(udg_r2*bj_DEGTORAD),235)
Custom script: call SetUnitZ(udg_MS_u,udg_P_START_HEIGHT)
Custom script: set udg_P_pUNIT[GetUnitIndex(udg_MS_u)]=GetUnit(1)
Set MS_x = -2.00
Set MS_y = -2.00
Set MS_z = -11.00
Set MS_endfunc = Perdition_Impact
Set MS_bounce = 0.00
Custom script: call GUIMotion()
Else - Actions
Custom script: call SetReal(0, udg_r-udg_EM_interval)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(u is dead) Equal to True
i Less than or equal to 0
Then - Actions
Custom script: call EMS_Index[udg_EMS_IndexSize].evaluate()
Custom script: //! runtextmacro easyMUI_stop("i")
Else - Actions
Custom script: call SetInteger(0,udg_i)
Custom script: //! runtextmacro easyMUI_end("i","Perdition")
Custom script: endfunction
Custom script: function Perdition_TargetFilter takes nothing returns boolean
Custom script: return UnitAlive(GetFilterUnit()) and IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_MS_u))
Custom script: endfunction
Custom script: function Perdition_Impact takes nothing returns nothing
Custom script: local real x = GetUnitX(udg_MS_u)
Custom script: local real y = GetUnitY(udg_MS_u)
Custom script: call DestroyEffect(AddSpecialEffect("Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdl" , x, y))
Custom script: set udg_ug = CreateGroup()
Custom script: call GroupEnumUnitsInRange(udg_ug, x, y, udg_P_BOULDER_AOE, Condition(function Perdition_TargetFilter))
Unit Group - Pick every unit in ug and do (Actions)
Loop - Actions
Unit - Cause P_pUNIT[(Custom value of MS_u)] to damage (Picked unit), dealing P_BOULDER_DMG damage of attack type Spells and damage type Normal
Set P_pUNIT[(Custom value of MS_u)] = No unit
Unit - Remove MS_u from the game
Custom script: call DestroyGroup(udg_ug)
Yeah I included whole GUI spell in one trigger