Results in System Error and double frees a dummy unit.
-->
JASS:
loop
set u = FirstOfGroup(bj_lastCreatedGroup)
exitwhen u==null
if not(IsUnitInGroup(u,this.unitsHit)) and u!=this.target and thistype.onCollide(this,u) then
call missileTerminate(this)
endif
call GroupAddUnit(this.unitsHit,u)
call GroupRemoveUnit(bj_lastCreatedGroup,u)
endloop
Nonsense! Execute is never called nor run via execute(), evaluate() or ExecuteFunc() from anywhere.
Reading T32 doesn't solve the problem
-->
JASS:
//***********************************************************************
// This function runs periodically. Can you see the trigger evaluation
// at the end? If you've read T32 then you know exactly what it does.
// The loop above is for cleaning up, the SIZE variable keeps track of
// how many instances have been deallocated by the user, if higher than
// 0 then some of them need to be removed. STACK[SIZE] stores the value
// of the deallocated instances.
private function Execute takes nothing returns nothing
loop
exitwhen SIZE==0
set ACTIVE=ACTIVE-1
set SIZE=SIZE-1
set INSTANCES[STACK[SIZE]]=INSTANCES[STACK[SIZE]]-1
if INSTANCES[STACK[SIZE]]==0 then
call TIMER[STACK[SIZE]].stop()
if ACTIVE==0 then
return
endif
endif
endloop
call TriggerEvaluate(FIRE)
endfunction
Dirac failed to detect, when no missile is allocated
--> Constant Timer Loop32 is never stopped, once started.
--> TriggerEvaluations every 0.03215 for the whole game season.
FIRE does excacly what?
JASS:
private trigger FIRE = CreateTrigger()
Missile is currently far from beeing good. I already re-wrote it for myself.
However I'm using a different LinkedList module and added some extra features.