RemoveUnit not functioning

Tt112233

TH.net Regular
Reaction score
6
JASS:

scope KingsWrath initializer KingsWrath_Init
globals
    private constant integer SpellID = 'A01Z'
    private constant integer UnitID = 'h015'
    private constant string ImageEffect = "Abilities\\Spells\\Human\\Invisibility\\InvisibilityTarget.mdl"
    private constant integer MaxCount = 15
    private constant real DiameterOfCircle = 1150
    private constant integer KingAOE = 130
    private constant integer KnockoutDuration = 15
    private integer KingUnitDist
    private timer T = CreateTimer()
    private unit array KingDummy
    private unit KingDummySend
endglobals
    function KingsWrath_Filter takes nothing returns boolean
        local unit u = GetFilterUnit()
        if IsUnitType(u, UNIT_TYPE_HERO) == true and udg_Status[GetPlayerId(GetOwningPlayer(u))] == "Active" and IsUnitEnemy(u,udg_ForgottenKing) == true then
            set u = null
            return true
        else
            set u = null
            return false
        endif
    endfunction
    function KingsWrath_MovementCallBack takes nothing returns nothing
        local real X = GetUnitX(KingDummySend)
        local real Y = GetUnitY(KingDummySend)
        local real angle = GetUnitFacing(KingDummySend)
        local group g = CreateGroup()
        local unit u
        call UFSYS_CreateFadeUnitAnimation(UnitID, X, Y, angle, 0.6, "stand", 0.6)
        set X = X + 150 * Cos(angle * bj_DEGTORAD)
        set Y = Y + 150 * Sin(angle * bj_DEGTORAD)
        set KingUnitDist = KingUnitDist + 150
        call SetUnitX(KingDummySend,X)
        call SetUnitY(KingDummySend,Y)
        call GroupEnumUnitsInRange(g,X,Y,KingAOE,Condition(function KingsWrath_Filter))
        loop
            set u = FirstOfGroup(g)
            exitwhen u == null
            call GroupRemoveUnit(g, u)
            set udg_Knockout=udg_ForgottenKing //Set the player dealing knockout
            set udg_KnockoutTarget = u //Set the knockout target to whoever was brought with
            set udg_KnockoutDuration = KnockoutDuration //Normal
            call TriggerExecute(gg_trg_KnockoutJ)
        endloop
        if (KingUnitDist >= 2300) then
            call RemoveUnit(KingDummySend)
            call PauseTimer(T)  
        endif
        set u = null
        call DestroyGroup(g)
        set g = null
    endfunction
    function KingsWrath_Actions takes nothing returns nothing
        local unit caster = GetTriggerUnit()
        local real CenterX = GetRectCenterX(bj_mapInitialPlayableArea)
        local real CenterY = GetRectCenterY(bj_mapInitialPlayableArea)
        local real UnitX
        local real UnitY
        local real angle
        local real mana = GetUnitState(caster,UNIT_STATE_MANA)
        local integer i = 0
        local integer rand = 0
        set udg_KingsWrathCircle = true
        call StartSound(gg_snd_DruidOfTheTalonWarcry1)
        call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl",GetUnitX(caster),GetUnitY(caster)))
        //SetUnitVertexColor
        call ShowUnit(caster,false)
        call TriggerSleepAction(1)
        call TriggerExecute(gg_trg_Kings_Wrath_Circle_Production)
        loop
            exitwhen i == 20
            set UnitX = CenterX + DiameterOfCircle * Cos(18 * i * bj_DEGTORAD)
            set UnitY = CenterY + DiameterOfCircle * Sin(18 * i * bj_DEGTORAD)
            set angle = bj_RADTODEG * Atan2(UnitY-CenterY,UnitX-CenterX)
            set KingDummy<i> = CreateUnit(udg_ForgottenKing,UnitID,UnitX,UnitY,angle + 180)
            call SetUnitVertexColor(KingDummy<i>,255,255,255,130)
            set i = i + 1
        endloop
        set i = 0
        loop
            exitwhen i == MaxCount
            set rand = GetRandomInt(0,19)
            set KingDummySend = CreateUnit(udg_ForgottenKing,UnitID,GetUnitX(KingDummy[rand]),GetUnitY(KingDummy[rand]),GetUnitFacing(KingDummy[rand]))
            call DestroyEffect(AddSpecialEffect(ImageEffect,GetUnitX(KingDummy[rand]),GetUnitY(KingDummy[rand])))
            call SetUnitAnimation(KingDummy[rand],&quot;attack&quot;)
            set KingUnitDist = 0
            call TimerStart(T,0.03,true,function KingsWrath_MovementCallBack)
            call TriggerSleepAction(0.4)
            call RemoveUnit(KingDummySend)
            set KingDummySend = null
            set i = i + 1
        endloop
        set i = 0
        set udg_KingsWrathCircle = false
        loop
            exitwhen i == 20
            call RemoveUnit(KingDummy<i>)
            call DestroyEffect(AddSpecialEffect(&quot;Objects\\InventoryItems\\runicobject\\runicobject.mdl&quot;,GetUnitX(KingDummy<i>),GetUnitY(KingDummy<i>)))
            set KingDummy<i> = null
            set i = i + 1
        endloop
        call TriggerSleepAction(1)
        call ShowUnit(caster,true)
        call SetUnitState(caster,UNIT_STATE_MANA,mana - 70.0)
        set KingDummySend = null
        set caster = null
    endfunction

    function KingsWrath_Conditions takes nothing returns boolean
        return GetSpellAbilityId() == SpellID
    endfunction

//===========================================================================
    function KingsWrath_Init takes nothing returns nothing
        local trigger t = CreateTrigger(  )
        call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_CAST )
        call TriggerAddCondition( t, Condition(function KingsWrath_Conditions))
        call TriggerAddAction(t, function KingsWrath_Actions)
    endfunction
endscope
</i></i></i></i></i></i>


On the code above, you can see couple of RemoveUnit calls being performed. Weird thing is, sometimes it goes in and sometimes it does not. Really, I'm not joking here, it works whenever it "feels" like it.

I might've done something stupid, like unattended leaks or array out of bounds idk, but I can't really seem to spot the issue. What could be causing the above issue??
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top