Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- scope MinedubShot initializer Init
- globals
- private constant integer ABILID = 'A0EH'
- private constant string PROJID = "MinedubShot"
- endglobals
- private function HitConditions takes nothing returns boolean
- return Projectile_Id == PROJID
- endfunction
- private function HitActions takes nothing returns nothing
- local unit u = null
- call DestroyEffect(AddSpecialEffect("Abilities\\Weapons\\GyroCopter\\GyroCopterMissile.mdl",Projectile_HitX,Projectile_HitY))
- set P = GetOwningPlayer(Projectile_Source)
- call GroupEnumUnitsInRange(G2,Projectile_HitX,Projectile_HitY,175,Condition(function AliveFilter))
- loop
- set u = FirstOfGroup(G2)
- exitwhen u == null
- call GroupRemoveUnit(G2,u)
- if IsUnitEnemy(u,P) then
- call Damage_Physical(Projectile_Source,u,GetUnitAbilityLevel(Projectile_Source,ABILID)*15+GetHeroAgi(Projectile_Source,true)*0.5,ELEMENTAL,false,false)
- endif
- if GetRandomInt(1,100) <= 20 then
- if IsUnitType(u,UNIT_TYPE_HERO) then
- call AddBuffStun(Projectile_Source,u,0.5,true)
- else
- call AddBuffStun(Projectile_Source,u,2,true)
- endif
- endif
- endloop
- endfunction
- private function Conditions takes nothing returns boolean
- return GetSpellAbilityId() == ABILID
- endfunction
- private function Actions takes nothing returns nothing
- local real x = GetSpellTargetX()
- local real y = GetSpellTargetY()
- local unit hero = GetTriggerUnit()
- local real angle = bj_RADTODEG*Atan2(y-GetUnitY(hero),x-GetUnitX(hero))
- local integer i = 0
- local Projectile p
- set P = GetOwningPlayer(GetTriggerUnit())
- loop
- exitwhen i >= 4
- set p = Projectile.create()
- set p.collisionKillOnCollide = true
- call p.ProjectileSetId(PROJID)
- call p.ProjectileCollisionSearch(70,Condition(function EnemyAliveFilter),true)
- call p.ProjectileSetModel("Abilities\\Weapons\\GyroCopter\\GyroCopterMissile.mdl",255,255,255,255,1)
- 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)
- set i = i + 1
- endloop
- set hero = null
- endfunction
- private function Init takes nothing returns nothing
- local trigger Trig = CreateTrigger()
- local trigger Hit = CreateTrigger()
- local trigger PowerHit = CreateTrigger()
- call TriggerRegisterAnyUnitEventBJ(Trig,EVENT_PLAYER_UNIT_SPELL_EFFECT)
- call TriggerAddCondition(Trig,Condition(function Conditions))
- call TriggerAddAction(Trig,function Actions)
- call TriggerRegisterEventProjectileHit(Hit)
- call TriggerAddCondition(Hit,Condition(function HitConditions))
- call TriggerAddAction(Hit,function HitActions)
- endfunction
- endscope
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement