Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. scope MinedubShot initializer Init
  2.  
  3. globals
  4. private constant integer ABILID = 'A0EH'
  5. private constant string PROJID = "MinedubShot"
  6. endglobals
  7.  
  8. private function HitConditions takes nothing returns boolean
  9. return Projectile_Id == PROJID
  10. endfunction
  11.  
  12. private function HitActions takes nothing returns nothing
  13. local unit u = null
  14. call DestroyEffect(AddSpecialEffect("Abilities\\Weapons\\GyroCopter\\GyroCopterMissile.mdl",Projectile_HitX,Projectile_HitY))
  15. set P = GetOwningPlayer(Projectile_Source)
  16. call GroupEnumUnitsInRange(G2,Projectile_HitX,Projectile_HitY,175,Condition(function AliveFilter))
  17. loop
  18. set u = FirstOfGroup(G2)
  19. exitwhen u == null
  20. call GroupRemoveUnit(G2,u)
  21. if IsUnitEnemy(u,P) then
  22. call Damage_Physical(Projectile_Source,u,GetUnitAbilityLevel(Projectile_Source,ABILID)*15+GetHeroAgi(Projectile_Source,true)*0.5,ELEMENTAL,false,false)
  23. endif
  24. if GetRandomInt(1,100) <= 20 then
  25. if IsUnitType(u,UNIT_TYPE_HERO) then
  26. call AddBuffStun(Projectile_Source,u,0.5,true)
  27. else
  28. call AddBuffStun(Projectile_Source,u,2,true)
  29. endif
  30. endif
  31. endloop
  32. endfunction
  33.  
  34. private function Conditions takes nothing returns boolean
  35. return GetSpellAbilityId() == ABILID
  36. endfunction
  37.  
  38. private function Actions takes nothing returns nothing
  39. local real x = GetSpellTargetX()
  40. local real y = GetSpellTargetY()
  41. local unit hero = GetTriggerUnit()
  42. local real angle = bj_RADTODEG*Atan2(y-GetUnitY(hero),x-GetUnitX(hero))
  43. local integer i = 0
  44. local Projectile p
  45. set P = GetOwningPlayer(GetTriggerUnit())
  46. loop
  47. exitwhen i >= 4
  48. set p = Projectile.create()
  49. set p.collisionKillOnCollide = true
  50. call p.ProjectileSetId(PROJID)
  51. call p.ProjectileCollisionSearch(70,Condition(function EnemyAliveFilter),true)
  52. call p.ProjectileSetModel("Abilities\\Weapons\\GyroCopter\\GyroCopterMissile.mdl",255,255,255,255,1)
  53. call p.ProjectilePointToPoint(hero,GetUnitX(hero)+30*Cos(angle*bj_DEGTORAD),GetUnitY(hero)+30*Sin(angle*bj_DEGTORAD),50,GetUnitX(hero)+400*Cos(((i*20)+(angle-30))*bj_DEGTORAD),GetUnitY(hero)+400*Sin(((i*20)+(angle-30))*bj_DEGTORAD),50,20,0.001)
  54. set i = i + 1
  55. endloop
  56. set hero = null
  57. endfunction
  58.  
  59. private function Init takes nothing returns nothing
  60. local trigger Trig = CreateTrigger()
  61. local trigger Hit = CreateTrigger()
  62. local trigger PowerHit = CreateTrigger()
  63. call TriggerRegisterAnyUnitEventBJ(Trig,EVENT_PLAYER_UNIT_SPELL_EFFECT)
  64. call TriggerAddCondition(Trig,Condition(function Conditions))
  65. call TriggerAddAction(Trig,function Actions)
  66. call TriggerRegisterEventProjectileHit(Hit)
  67. call TriggerAddCondition(Hit,Condition(function HitConditions))
  68. call TriggerAddAction(Hit,function HitActions)
  69. endfunction
  70.  
  71. endscope
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement