- Joined
- Mar 1, 2013
- Messages
- 555
loop should be .03 not .04
u never reduce the arcaneleafperiod ?
the if condition will never fire.
I did, somewhere near the end. I've found the problem: when I remove the 'set Temp_Int = Temp_Int - 1' then it works. So basically I have to finish the intire index structure to fix the small random 'bugs'.
Why is 0.03 better than 0.04?
Edit: ok my spell is done. Kind of. I still need to turn it off though. I think it has a very bad leak(s) because my pc lag while a spell is running. Some of the Life Rays doesn't get to their destenation and just stands frozen on the map.
-
Arcane leaf loop
-
Events
- Time - Every 0.20 seconds of game time
- Conditions
-
Actions
-
For each (Integer Temp_Int) from 1 to iArcaneLeafindex, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- iArcaneLeafPeriod[Temp_Int] Equal to 0
- (uArcaneLeafT[Temp_Int] is paused) Equal to False
-
Then - Actions
- Set iArcaneLeafCount[Temp_Int] = (iArcaneLeafCount[Temp_Int] - 1)
- Set iArcaneLeafPeriod[Temp_Int] = 25
- Set Temp_Player = (Owner of uArcaneLeafC[Temp_Int])
- Set Temp_Point = (Position of uArcaneLeafT[Temp_Int])
- Set Temp_Real = ((Life of uArcaneLeafT[Temp_Int]) x 0.07)
- Unit - Cause uArcaneLeafC[Temp_Int] to damage uArcaneLeafT[Temp_Int], dealing Temp_Real damage of attack type Spells and damage type Normal
- Set Temp_Goup = (Units within 500.00 of Temp_Point matching (((Owner of (Matching unit)) is an ally of Temp_Player) Equal to True))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Number of units in Temp_Goup) Greater than 0
-
Then - Actions
- Set iLifeRayIndex = (iLifeRayIndex + 1)
- Unit - Create 1 Life seed for Temp_Player at Temp_Point facing Default building facing degrees
- Set uLifeRayC[iLifeRayIndex] = (Last created unit)
- Set uLifeRayT[iLifeRayIndex] = (Random unit from Temp_Goup)
- Set rLifeRayHeal[iLifeRayIndex] = Temp_Real
- Else - Actions
-
If - Conditions
- Custom script: call DestroyGroup(GetLastCreatedGroup())
- Custom script: call RemoveLocation(udg_Temp_Point)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (uArcaneNovaC[Temp_Int] is paused) Equal to False
-
Then - Actions
- Set iArcaneLeafPeriod[Temp_Int] = (iArcaneLeafPeriod[Temp_Int] - 1)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (iArcaneLeafCount[Temp_Int] Equal to 0) or ((uArcaneLeafC[Temp_Int] is dead) Equal to True)
-
Then - Actions
- Set uArcaneLeafC[Temp_Int] = uArcaneLeafC[iArcaneLeafindex]
- Set uArcaneLeafC[iArcaneLeafindex] = No unit
- Set uArcaneLeafT[Temp_Int] = uArcaneLeafT[iArcaneLeafindex]
- Set uArcaneLeafT[iArcaneLeafindex] = No unit
- Set iArcaneLeafCount[Temp_Int] = iArcaneLeafCount[iArcaneLeafindex]
- Set iArcaneLeafCount[iArcaneLeafindex] = 0
- Set iArcaneLeafPeriod[Temp_Int] = iArcaneLeafPeriod[iArcaneLeafindex]
- Set iArcaneLeafPeriod[iArcanePulseIndex] = 0
- Set Temp_Int = (Temp_Int - 1)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- If (iLifeRayIndex Equal to 0) then do (Skip remaining actions) else do (Do nothing)
-
For each (Integer Temp_Int) from 1 to iLifeRayIndex, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (uLifeRayC[Temp_Int] is paused) Equal to False
-
Then - Actions
- Set Temp_Point = (Position of uLifeRayC[Temp_Int])
- Set Temp_Point2 = (Position of uLifeRayT[Temp_Int])
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Distance between Temp_Point and Temp_Point2) Less than 25.00
-
Then - Actions
- Unit - Kill uLifeRayC[Temp_Int]
- Unit - Set life of uLifeRayT[Temp_Int] to ((Life of uLifeRayT[Temp_Int]) + rLifeRayHeal[Temp_Int])
- Set uLifeRayC[Temp_Int] = uLifeRayC[iLifeRayIndex]
- Set uLifeRayC[iLifeRayIndex] = No unit
- Set uLifeRayT[Temp_Int] = uLifeRayT[iLifeRayIndex]
- Set uLifeRayT[iLifeRayIndex] = No unit
- Set rLifeRayHeal[Temp_Int] = rLifeRayHeal[iLifeRayIndex]
- Set rLifeRayHeal[iLifeRayIndex] = 0.00
- Set Temp_Int = (Temp_Int - 1)
-
Else - Actions
- Set Temp_Real = (Angle from Temp_Point to Temp_Point2)
- Custom script: call RemoveLocation(udg_Temp_Point2)
- Set Temp_Point2 = (Temp_Point offset by 10.00 towards Temp_Real degrees)
- Unit - Move uLifeRayC[Temp_Int] instantly to Temp_Point
- Custom script: call RemoveLocation(udg_Temp_Point)
- Custom script: call RemoveLocation(udg_Temp_Point2)
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
For each (Integer Temp_Int) from 1 to iArcaneLeafindex, do (Actions)
-
Events
Last edited: