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