I need some help with my spell...

Ostrze

New Member
Reaction score
0
I need some help with my chain heal spell...The problem i have is that, it heals up to 16 units, but it doesn't show up the special effect for more than 3...Can any1 tell me how to fix that?
Here is the spell code:
JASS:
function Cond takes nothing returns boolean
    return GetSpellAbilityId() == 'A002'
endfunction

function ChainHeal takes nothing returns nothing
    local unit cast = GetTriggerUnit()
    local unit prevtarg
    local unit targ = GetSpellTargetUnit()
    local unit nexttarg
    local location p = GetUnitLoc(targ)
    local group postargets = GetUnitsInRangeOfLocAll( 500.00 , p)
    local group donetargets = CreateGroup()
    local integer noofdone = 0
    local integer heroint = GetHeroStatBJ(bj_HEROSTAT_INT, cast, true)
    local real x1 = GetUnitX(cast)
    local real y1 = GetUnitY(cast)
    local real x2 = GetUnitX(targ)
    local real y2 = GetUnitY(targ)
    local lightning lightA
    local lightning lightB
    
    if IsPlayerAlly(GetOwningPlayer(targ), GetOwningPlayer(cast)) == true and IsUnitInGroup( targ , donetargets ) == false then
            set lightA = AddLightning("HWPB" , true , x1, y1 , x2 , y2 )
            set lightB = AddLightning("HWSB" , true , x1, y1 , x2 , y2 )
            call SetUnitLifeBJ(targ , ( GetUnitStateSwap(UNIT_STATE_LIFE, targ) + ( 3 * heroint)))
    endif
    set nexttarg = GroupPickRandomUnit(postargets)
    call RemoveLocation(p)
    set p = GetUnitLoc(nexttarg)
    set postargets = GetUnitsInRangeOfLocAll(500.00, p)
    call GroupAddUnitSimple( targ, donetargets )
    call GroupRemoveGroup( donetargets, postargets )
    set prevtarg = targ
    set targ = nexttarg
    set heroint = ( ( heroint * 3 ) / 4 )
    set x1 = GetUnitX(prevtarg)
    set y1 = GetUnitY(prevtarg)
    set x2 = GetUnitX(targ)
    set y2 = GetUnitY(targ)
    call TriggerSleepAction(0.01) 
    if lightA != null then
        call DestroyLightning ( lightA )
    endif
    if lightB != null then
        call DestroyLightning ( lightB )
    endif
    set lightA = null 
    set lightB = null  
        
    loop
        exitwhen noofdone == 16 or targ == null or heroint == 0
        if IsPlayerAlly(GetOwningPlayer(targ), GetOwningPlayer(cast)) == true and IsUnitInGroup( targ , donetargets ) == false then
                set lightA = AddLightning("HWPB" , true , x1, y1 , x2 , y2 )
                set lightB = AddLightning("HWSB" , true , x1, y1 , x2 , y2 )
                call SetUnitLifeBJ(targ , ( GetUnitStateSwap(UNIT_STATE_LIFE, targ) + ( 3 * heroint)))
        endif
        set nexttarg = GroupPickRandomUnit(postargets)
        call RemoveLocation(p)
        set p = GetUnitLoc(nexttarg)
        set postargets = GetUnitsInRangeOfLocAll(500.00, p)
        call GroupAddUnitSimple( targ, donetargets )
        call GroupRemoveGroup( donetargets, postargets )
        set prevtarg = targ
        set targ = nexttarg
        set heroint = ( ( heroint * 3 ) / 4 )
        call TriggerSleepAction(0.01)
        if lightA != null then
            call DestroyLightning ( lightA )
        endif
        if lightB != null then
            call DestroyLightning ( lightB )
        endif
        set lightA = null 
        set lightB = null
    endloop
    
    set cast = null
    set targ = null
    set prevtarg = null
    set nexttarg = null
    set p = null
    set postargets = null
    set donetargets = null
endfunction   
    
function InitTrig_ChainHeal takes nothing returns nothing
    set gg_trg_ChainHeal = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_ChainHeal, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_ChainHeal, Condition(function Cond))
    call TriggerAddAction( gg_trg_ChainHeal, function ChainHeal)
endfunction


If you have found any leaks or other bugs than i mentioned, pls tell me what are they and how to fix them...
 

Ostrze

New Member
Reaction score
0
Any1 can help me? I want it to show the speciall effect everytime it jums from a target to target. I want the spell heal good amount of units(it heals the right amount of units now) AND show the special effect everytime it heals a unit(it doesn't do that, dunno why).
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top