1. init
  2. registerSpellEffectEvent('A01M',function spellCast)
  3. timerIterateSpell.startPeriodic(0.03,function spellLoop)
  4. timerIterateSpell2.startPeriodic(0.03,function spellLoop2)
  5. function spellCast()
  6. vec2 target = vec2(GetLocationX(GetSpellTargetLoc()),GetLocationY(GetSpellTargetLoc()))
  7. //print(target.toString())
  8. vec2 origin = GetTriggerUnit().getPos()
  9. let uvy = origin.distToVec(target)
  10. //print(uvy.toString())
  11. let agi = GetHeroAgi(GetTriggerUnit(),true).toReal()
  12. let str = GetHeroStr(GetTriggerUnit(),true).toReal()
  13. GetTriggerUnit().addAbility('Amrf')
  14. GetTriggerUnit().addAbility('A01N')
  15. GetTriggerUnit().getOwner().setAbilityAvailable('Amrf',false)
  16. //let u = createUnit(GetTriggerUnit().getOwner(),'n011',GetTriggerUnit().getPos(),origin.angleTo(target))
  17. //print(u.getName())
  18. //GetTriggerUnit().issuePointOrder("move",target)
  19. //u.setVertexColor(255,255,255,155)
  20. //u.setTimeScale(3.5)
  21. let lev = GetTriggerUnit().getAbilityLevel('A01M').toReal()
  22. spellList.add(new Spell(GetTriggerUnit(),agi,str,lev,uvy,GetTriggerUnit(),vec2(0,0).polarOffset(origin.angleTo(target),27)))
  23. function spellLoop2()
  24. for x in spellList2
  25. x.setTime()
  26. function spellLoop()
  27. for x in spellList
  28. x.setTime()
  29. public class Spell
  30. real time
  31. real xtime
  32. real agi
  33. real str
  34. real lvl
  35. unit u
  36. unit caster
  37. vec2 veloc
  38. construct(unit c,real a,real g,real b,real d,unit cast,vec2 velo)
  39. time = d
  40. xtime = d
  41. u = c
  42. agi = a
  43. str = g
  44. lvl = b
  45. caster = cast
  46. veloc = velo
  47. //i = 0
  48. function setTime()
  49. time = time - 27
  50. //SetUnitAnimation(u, "walk")
  51. //u.setVertexColor(255,255,255,(time/4.71).toInt())
  52. u.setFlyHeight(((time)*(xtime-time))/500,0)
  53. u.setXY(u.getPos()+veloc)
  54. if time <= 0
  55. u.setFlyHeight(0,0)
  56. u.removeAbility('Amrf')
  57. u.removeAbility('A01N')
  58. if caster.isAlive()
  59. //caster.setPos(u.getPos())
  60. //u.kill()
  61. g.enumUnitsInRange(u.getPos(),200)
  62. while TRUE
  63. iter = FirstOfGroup(g)
  64. if iter == null
  65. break
  66. if IsPlayerEnemy(iter.getOwner(),u.getOwner())
  67. caster.damageTarget(iter,100)
  68. spellList2.add(new Spell2(vec2(0,0).polarOffset(caster.getPos().angleTo(iter.getPos()),24),iter))
  69. g.removeUnit(iter)
  70. let m = "Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl"
  71. DestroyEffect(AddSpecialEffect(m,caster.getX(),caster.getY()))
  72. spellList.remove(this)
  73. destroy this

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