- 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
-
Events
-
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
-
If - Conditions
- Custom script: call RemoveLocation(udg_TBB_CasterLoc)
- Custom script: call RemoveLocation(udg_TBB_TargetLoc)
-
Events
-
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)
-
Loop - Actions
- 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
-
If - Conditions
-
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)
-
Loop - Actions
- Else - Actions
-
If - Conditions
- Custom script: call RemoveLocation(udg_TBB_TempPoint[udg_TBB_Loop])
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
For each (Integer TBB_Loop) from 1 to TBB_Index, do (Actions)
-
Events