- Joined
- May 13, 2012
- Messages
- 68
Hey I'm trying to learn spell triggering so I decided to go with the easiest using plain indexing. For some reason the spell is not MUI where multiple unit cast results in this: the first cast resolves fine. But the 2nd cast freezes.
But once the first cast resolves, subsequent casts are fine. So what's causing this to screw up? I may have made a fundamental mistake.

But once the first cast resolves, subsequent casts are fine. So what's causing this to screw up? I may have made a fundamental mistake.

-
TBB Setup
-
Events
-
Map initialization
-
-
Conditions
-
Actions
-
Set TBB_speed[1] = 12.00
-
Set TBB_speed[2] = 24.00
-
Set TBB_speed[3] = 36.00
-
Set TBB_detection[1] = 300.00
-
Set TBB_detection[2] = 300.00
-
Set TBB_detection[3] = 300.00
-
Set TBB_refugees[1] = 1
-
Set TBB_refugees[2] = 3
-
Set TBB_refugees[3] = 5
-
-
-
TBB Cast
-
Events
-
Unit - A unit Starts the effect of an ability
-
-
Conditions
-
(Ability being cast) Equal to Turn Back the Boats
-
-
Actions
-
Set TBB_CasterLoc = (Position of (Triggering unit))
-
Set TBB_TargetLoc = (Target point of ability being cast)
-
Set TBB_Index = (TBB_Index + 1)
-
Set TBB_Caster[TBB_Index] = (Triggering unit)
-
-------- Creating Boat Dummy --------
-
Set TBB_Angle[TBB_Index] = (Angle from TBB_CasterLoc to TBB_TargetLoc)
-
Unit - Create 1 Human Transport Ship for (Triggering player) at TBB_CasterLoc facing TBB_Angle[TBB_Index] degrees
-
Set TBB_Dummy[TBB_Index] = (Last created unit)
-
Unit - Set level of AOE damage upon death (boat) for TBB_Dummy[TBB_Index] to (Level of Turn Back the Boats for TBB_Caster[TBB_Index])
-
Set TBB_distance[TBB_Index] = 0.00
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
TBB_Index Equal to 1
-
-
Then - Actions
-
Trigger - Turn on TBB Loop <gen>
-
-
Else - Actions
-
-
Custom script: call RemoveLocation(udg_TBB_CasterLoc)
-
Custom script: call RemoveLocation(udg_TBB_TargetLoc)
-
-
-
TBB Loop
-
Events
-
Time - Every 0.02 seconds of game time
-
-
Conditions
-
Actions
-
For each (Integer TBB_Loop) from 1 to TBB_Index, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
TBB_distance[TBB_Loop] Greater than or equal to (400.00 + (400.00 x (Real((Level of Turn Back the Boats for TBB_Caster[TBB_Loop])))))
-
-
Then - Actions
-
Set TBB_TempPoint[TBB_Loop] = (Position of TBB_Dummy[TBB_Loop])
-
Unit Group - Pick every unit in TBB_Group[TBB_Loop] and do (Actions)
-
Loop - Actions
-
Unit - Move (Picked unit) instantly to TBB_TempPoint[TBB_Loop]
-
Unit - Unhide (Picked unit)
-
-
-
Unit - Add a 0.00 second Generic expiration timer to TBB_Dummy[TBB_Loop]
-
Custom script: call RemoveLocation(udg_TBB_TempPoint[udg_TBB_Loop])
-
Custom script: call DestroyGroup(udg_TBB_Group[udg_TBB_Loop])
-
-------- Recycling Indexes --------
-
Set TBB_Index = (TBB_Index - 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
TBB_Index Equal to 0
-
-
Then - Actions
-
-------- Nulling Variables --------
-
Set TBB_Angle[TBB_Loop] = 0.00
-
Set TBB_distance[TBB_Loop] = 0.00
-
Set TBB_Caster[TBB_Loop] = No unit
-
Set TBB_Dummy[TBB_Loop] = No unit
-
Trigger - Turn off (This trigger)
-
-
Else - Actions
-
-
-
Else - Actions
-
-------- Moving the Boat --------
-
Set TBB_TempPoint[TBB_Loop] = (Position of TBB_Dummy[TBB_Loop])
-
Set TBB_TempPoint[TBB_Loop] = (TBB_TempPoint[TBB_Loop] offset by TBB_speed[(Level of Turn Back the Boats for TBB_Caster[TBB_Loop])] towards TBB_Angle[TBB_Loop] degrees)
-
Set TBB_distance[TBB_Loop] = (TBB_distance[TBB_Loop] + TBB_speed[(Level of Turn Back the Boats for TBB_Caster[TBB_Loop])])
-
Unit - Move TBB_Dummy[TBB_Loop] instantly to TBB_TempPoint[TBB_Loop]
-
-------- Picking Units within Boat Detection Range --------
-
Set TBB_Group[TBB_Loop] = (Units within TBB_detection[(Level of Turn Back the Boats for TBB_Caster[TBB_Loop])] of TBB_TempPoint[TBB_Loop] matching ((((Matching unit) belongs to an enemy of (Owner of TBB_Caster[TBB_Loop])) Equal to True) and ((((Matching unit) is alive) Equal to True)
-
Custom script: call RemoveLocation(udg_TBB_TempPoint[udg_TBB_Loop])
-
-------- To make sure loading event occurs only once per index. --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(TBB_Group[TBB_Loop] is empty) Equal to True
-
-
Then - Actions
-
Set TBB_TempPoint[TBB_Loop] = (Position of TBB_Dummy[TBB_Loop])
-
-------- Setting a cap on number of units (refugees) loaded to 1/3/5 based on level of ability --------
-
Set TBB_Group[TBB_Loop] = (Random TBB_refugees[(Level of Turn Back the Boats for TBB_Caster[TBB_Loop])] units from TBB_Group[TBB_Loop])
-
Unit Group - Pick every unit in TBB_Group[TBB_Loop] and do (Actions)
-
Loop - Actions
-
Floating Text - Create floating text that reads Refugee intercepted... above (Picked unit) with Z offset 100.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
-
Floating Text - Change (Last created floating text): Disable permanence
-
Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
-
Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
-
Unit - Hide (Picked unit)
-
-
-
-
Else - Actions
-
-
Custom script: call RemoveLocation(udg_TBB_TempPoint[udg_TBB_Loop])
-
-
-
-
-
-