- 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()))
-
-
- vec2 origin = GetTriggerUnit().getPos()
-
- let uvy = origin.distToVec(target)
-
-
-
- let agi = GetHeroAgi(GetTriggerUnit(),true).toReal()
- let str = GetHeroStr(GetTriggerUnit(),true).toReal()
-
- GetTriggerUnit().addAbility('Amrf')
- GetTriggerUnit().addAbility('A01N')
- GetTriggerUnit().getOwner().setAbilityAvailable('Amrf',false)
-
-
-
-
-
-
-
- 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
-
-
- function setTime()
- time = time - 27
-
-
-
- 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()
-
-
-
-
-
- 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
-
-
select language
-
select style
goto line: