Foro especializado en Warcraft III y su editor
 
BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarseGrupos de Usuarios
Eventos Actuales
¡ Bienvenido Invitado!

Editar Perfil

Tus temas
Tus Mensajes ()

Enlaces rápidos








Comparte | .
 

 [Jass] Dark Terror Spell Pack

Ver el tema anterior Ver el tema siguiente Ir abajo 
Ir a la página : Precedente  1, 2
AutorMensaje
MuSe

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 216
Reputación Reputación : 46
Monedas de oro : 2587
Monedas de Platino : 5

Inventario :



Mensaje(#) Tema: [Jass] Dark Terror Spell Pack Jue Jul 25, 2013 11:45 pm

Recuerdo del primer mensaje :

Ahora les traigo las spells del Faceless del Dota .3.

Requiere Timers de muZk

Chronosphere:

[jass]scope Chronosphere initializer OnInit
  globals
     private constant integer CP_SPELLID = 'A004'
     private constant integer CP_DUMMYID = 'h000'
     private constant real CP_AOE = 400
     private player Owner
     private unit U
  endglobals
     
        private function CP_SpellCondi takes nothing returns boolean
                return GetSpellAbilityId() == CP_SPELLID
        endfunction
       
        private function Filt takes nothing returns boolean
                set U = GetFilterUnit()
                return IsUnitEnemy(U,Owner) and not (GetUnitTypeId(U) == CP_DUMMYID)
        endfunction
       
        private function OnLoop takes nothing returns nothing
                local timer t = GetExpiredTimer()
                local integer id = GetHandleId(t)
                local group g = GetHandleGroup(id,"Group_Affected")
                local unit dummy = GetHandleUnit(id,"Dummy")
                local group g2 = NewGroup()
                local unit u
               
                set Owner = GetOwningPlayer(dummy)
                call GroupEnumUnitsInRange(g2,GetUnitX(dummy),GetUnitY(dummy),CP_AOE,Filter(function Filt))

                loop
                   set u = FirstOfGroup(g)
                   exitwhen u == null
                   call GroupRemoveUnit(g,u)
                   if not IsUnitInGroup(u,g2) or GetWidgetLife(dummy) < 0.405 then
                   call PauseUnit(u,false)
                   call SetUnitTimeScale( u, 1.00 )
                   else
                   call PauseUnit(u,true)
                   call SetUnitTimeScale( u, 0.00 )
                   endif
                endloop
               
                call ReleaseGroup(g)
               
                call SetHandleHandle(id,"Group_Affected",g2)
                if GetWidgetLife(dummy) < 0.405 then
                    call ReleaseTimerEx()
                    call ReleaseGroup(g2)
                    call FlushHandleLocals(id)
                endif
             
               
                set u = null
                set dummy = null
                set t = null
                set g = null
                set g2 = null
             
        endfunction
 
        private function CP_Apply takes nothing returns nothing
                local timer t = NewTimer()
                local integer id = GetHandleId(t)
                local unit dummy = CreateUnit(GetTriggerPlayer(),CP_DUMMYID,GetSpellTargetX(),GetSpellTargetY(),0)
                local group g = NewGroup()
                set Owner = GetTriggerPlayer()
                call GroupEnumUnitsInRange(g,GetUnitX(dummy),GetUnitY(dummy),CP_AOE,Filter(function Filt))
                call TimerStart(t,0.01,true,function OnLoop)
                call UnitApplyTimedLife(dummy,'btlf',2+(1*GetUnitAbilityLevel(GetTriggerUnit(),CP_SPELLID)))
                call SetHandleHandle(id,"Dummy",dummy)
                call SetHandleHandle(id,"Group_Affected",g)
               
                set dummy = null
                set t = null
                set g = null
        endfunction
       
        private function CP_Cast takes nothing returns boolean
       
                if CP_SpellCondi() then
                   call CP_Apply()
                endif
               
                return false
        endfunction
       
        private function OnInit takes nothing returns nothing

               local trigger t  = CreateTrigger()
               call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
               call TriggerAddCondition( t, Condition (function CP_Cast) )
               set t = null
 
       endfunction
endscope[/jass]

Back Track
[jass]scope BackTrack initializer OnInit
  globals
     private constant string BACKTRACK_EFFECT = "Abilities\\Weapons\\WingedSerpentMissile\\WingedSerpentMissile.mdl"
     private constant integer BACKTRACK_SPELLID = 'A000'
  endglobals
 
private function Spell_Cond takes nothing returns boolean
  return GetUnitAbilityLevel(GetTriggerUnit(),BACKTRACK_SPELLID) > 0
endfunction

private function Spell_Chance takes integer lvl returns integer
  return 5 + 5 * lvl
endfunction

private function Conditions takes nothing returns boolean
       local unit u
       local integer l
       if Spell_Cond() then
            set u = GetTriggerUnit()
            set l = GetUnitAbilityLevel(u,BACKTRACK_SPELLID)
           
            if GetRandomInt(1,100) <= Spell_Chance(l) then
           
               call DestroyEffect(AddSpecialEffectTarget(BACKTRACK_EFFECT,u,"overhead"))
               call Damage_BlockAll()
               
            endif
           
            set u = null
       endif
 return false
endfunction

private function OnInit takes nothing returns nothing
      local trigger t  = CreateTrigger()
      call Damage_RegisterEvent(t)
      call TriggerAddCondition(t, Condition(function Conditions))
      set t = null
endfunction

endscope[/jass]

Time Look
[jass]scope TimeLook initializer OnInit
  globals
    private constant string  TIMELOOK_EFFECT = "Abilities\\Spells\\Undead\\AbsorbMana\\AbsorbManaBirthMissile.mdl"
    private constant integer TIMELOOK_BUFFID = 'B000'
  endglobals
 
  private function TimeLookBuff takes unit u returns boolean
         return GetUnitAbilityLevel(u, TIMELOOK_BUFFID) > 0
  endfunction
 
  private function TimeLookEffect takes nothing returns nothing
       local unit u = GetTimerUnit(GetExpiredTimer())
       if not TimeLookBuff(u) then
           call SetUnitTimeScale(u,1.00)
           call ReleaseTimerEx()
       else
           call SetUnitTimeScale(u,0)
           call DestroyEffect(AddSpecialEffectTarget(TIMELOOK_EFFECT,u,"chest"))
       endif
       set u=null
  endfunction

 
  private function TimeLookCondi takes nothing returns boolean
          local unit u = GetEventDamageSource()
          local unit t = GetTriggerUnit()
          if TimeLookBuff(t) and Damage_IsAttack() then
           
             call SetUnitTimeScale( t, 0.00 )
             call TimerStart(NewTimerUnit(t),0.06,true,function TimeLookEffect)
           
          endif
   
          set u = null
          set t = null
         
          return false
  endfunction
 
  private function OnInit takes nothing returns nothing
 
      local trigger t  = CreateTrigger()
      call Damage_RegisterEvent(t)
      call TriggerAddCondition(t,Condition (function TimeLookCondi))
      set t = null
     
  endfunction
 
endscope[/jass]

Time Walk

[jass]scope TimeWalk initializer OnInit
           globals
                private constant integer TIMEWALK_SPELLID = 'A002'
                private constant integer TIMEWALK_DUMMYID = 'u000'
                private constant integer TIMEWALK_SPELLDID = 'A003'
                private constant string TIMEWALK_ORDER = "thunderclap"
           endglobals
       
       private function TimeWalk_SpellCond takes nothing returns boolean
               return GetSpellAbilityId() == TIMEWALK_SPELLID
       endfunction
       
       private function Angle takes real x1,real y1,real x2, real y2 returns real
               return Atan2(y2 - y1, x2 - x1)
       endfunction
       
       private function Distance takes real xa, real ya, real xb, real yb returns real
               local real dx = xb - xa
               local real dy = yb - ya
               return SquareRoot(dx * dx + dy * dy)
       endfunction
       
       private function OnLoop takes nothing returns nothing
               local timer t = GetExpiredTimer()
               local integer id = GetHandleId(t)
               local unit dummy
               local unit u = GetHandleUnit (id,"Caster")
               local real d = GetHandleReal (id,"MaxDistance")
               local real a = GetHandleReal (id,"Angle")
               local real xc = GetUnitX(u)
               local real yc = GetUnitY(u)
       
               set xc = xc + 60. * Cos(a)
               set yc = yc + 60. * Sin(a)
               
               call SetUnitPosition(u,xc,yc)
               call SetHandleReal (id,"MaxDistance",d-60)
       
               if d <= 0 then
               
                  call SetUnitPathing( u, true )
                  call SetUnitVertexColor( u, 255, 255, 255, 255 )
                 
                  set dummy = CreateUnit( GetOwningPlayer(u),TIMEWALK_DUMMYID, xc,yc, 0 )
         
                  call UnitAddAbility(dummy,TIMEWALK_SPELLDID)
                  call SetUnitAbilityLevel(dummy,TIMEWALK_SPELLDID,GetUnitAbilityLevel(u,TIMEWALK_SPELLID))
                  call IssueImmediateOrder(dummy,TIMEWALK_ORDER)
                  call UnitApplyTimedLife(dummy,'btlf',1)
                  call SetUnitTimeScale( u, 1)
                  call SetUnitAnimation( u, "stand" )
                  call PauseUnit( u, false )
                  call SetUnitInvulnerable( u, false )
                  call IssueImmediateOrder( u, "stop" )
                  call PauseTimer(t)
                  call DestroyTimer(t)
                 
                  set dummy = null
                 
                  call FlushHandleLocals(id)
                 
               endif
               
               set t = null
               set u = null
       
       endfunction
       
       private function TimeWalk_Apply takes nothing returns nothing
               local unit u = GetTriggerUnit()
               local real xt = GetSpellTargetX()
               local real yt = GetSpellTargetY()
               local real xc = GetUnitX(u)
               local real yc = GetUnitY(u)
               local real a = Angle(xc,yc,xt,yt)
               local real d = Distance(xc,yc,xt,yt)
               local timer t = CreateTimer()
               local integer id = GetHandleId(t)
                 
               call SetUnitPathing( u, false )
               call PauseUnit( u, true)
               call SetUnitInvulnerable( u, true )
               call SetUnitTimeScale(u, 0.75)
               call SetUnitAnimation( u, "spell" )
               call SetUnitVertexColor(u, 0, 0, 0, 255)
                 
               call SetHandleHandle (id,"Caster",u)
               call SetHandleReal (id,"MaxDistance",d)
               call SetHandleReal (id,"Angle",a)
               call TimerStart(t,0.03125,true,function OnLoop)
               
               set u = null
               set t = null
               
       endfunction
       
       private function TimeWalk_Cast takes nothing returns boolean
               
               if TimeWalk_SpellCond() then
               
                      call TimeWalk_Apply()
                 
               endif
               
               return false
   
       endfunction
       
       private function OnInit takes nothing returns nothing

               local trigger t  = CreateTrigger()
               call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
               call TriggerAddCondition( t, Condition (function TimeWalk_Cast) )
               set t = null
 
       endfunction

endscope[/jass]

Comentar para descargar.

Volver arriba Ir abajo

AutorMensaje
KaelthaZz
Aprendiz


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 16
Reputación Reputación : 2
Monedas de oro : 79
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: [Jass] Dark Terror Spell Pack Jue Jul 13, 2017 7:16 pm

nice, buen hero
Volver arriba Ir abajo
nerox89
Aprendiz
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 18
Reputación Reputación : 0
Monedas de oro : 38
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: [Jass] Dark Terror Spell Pack Dom Jul 23, 2017 11:16 am

comento para descargar
Volver arriba Ir abajo
PENSATIVO197
Aprendiz
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 25
Reputación Reputación : 3
Monedas de oro : 68
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: [Jass] Dark Terror Spell Pack Vie Mayo 25, 2018 5:47 pm

Xd WEN spell
Volver arriba Ir abajo
Contenido patrocinado




Mensaje(#) Tema: Re: [Jass] Dark Terror Spell Pack

Volver arriba Ir abajo
 

[Jass] Dark Terror Spell Pack

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 2 de 2.Ir a la página : Precedente  1, 2

Permisos de este foro:No puedes responder a temas en este foro.
Warcraft III - WorldEditor :: Aportes :: Spells JASS :: Spells Aprobados-