init registerSpellEffectEvent('A01M',function spellCast) timerIterateSpell.startPeriodic(0.03,function spellLoop) timerIterateSpell2.startPeriodic(0.03,function spellLoop2)

function spellCast() vec2 target = vec2(GetLocationX(GetSpellTargetLoc()),GetLocationY(GetSpellTargetLoc())) //print(target.toString())

vec2 origin = GetTriggerUnit().getPos()

let uvy = origin.distToVec(target)

//print(uvy.toString())

let agi = GetHeroAgi(GetTriggerUnit(),true).toReal()
let str = GetHeroStr(GetTriggerUnit(),true).toReal()

GetTriggerUnit().addAbility('Amrf')
GetTriggerUnit().addAbility('A01N')
GetTriggerUnit().getOwner().setAbilityAvailable('Amrf',false)

//let u = createUnit(GetTriggerUnit().getOwner(),'n011',GetTriggerUnit().getPos(),origin.angleTo(target))

//print(u.getName())
//GetTriggerUnit().issuePointOrder("move",target)
//u.setVertexColor(255,255,255,155)
//u.setTimeScale(3.5)
let lev = GetTriggerUnit().getAbilityLevel('A01M').toReal()
spellList.add(new Spell(GetTriggerUnit(),agi,str,lev,uvy,GetTriggerUnit(),vec2(0,0).polarOffset(origin.angleTo(target),27)))

function spellLoop2() for x in spellList2 x.setTime()

function spellLoop()
for x in spellList x.setTime()

public class Spell

real time

real xtime
real agi
real str
real lvl
unit u    
unit caster
vec2 veloc

construct(unit c,real a,real g,real b,real d,unit cast,vec2 velo)
    time = d
    xtime = d
    u = c
    agi = a
    str = g
    lvl = b
    caster = cast
    veloc = velo
    //i = 0

function setTime()
    time = time - 27
    //SetUnitAnimation(u, "walk")
    //u.setVertexColor(255,255,255,(time/4.71).toInt())

    u.setFlyHeight(((time)*(xtime-time))/500,0)
    u.setXY(u.getPos()+veloc)
    if time <= 0
        u.setFlyHeight(0,0)
        u.removeAbility('Amrf')
        u.removeAbility('A01N')
        if caster.isAlive()
            //caster.setPos(u.getPos())
            //u.kill()



            g.enumUnitsInRange(u.getPos(),200)
        while TRUE
            iter = FirstOfGroup(g)
            if iter == null
                break
            if IsPlayerEnemy(iter.getOwner(),u.getOwner())
                caster.damageTarget(iter,100)
                spellList2.add(new Spell2(vec2(0,0).polarOffset(caster.getPos().angleTo(iter.getPos()),24),iter))
            g.removeUnit(iter)
        let m = "Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl"
        DestroyEffect(AddSpecialEffect(m,caster.getX(),caster.getY()))


        spellList.remove(this)
        destroy this

goto line:
Compare with:
text copy window edit this code post new code