wingdnosring
New Member
- Reaction score
- 16
I know that title was rather vague, but I'm having a very strange problem here, which I'm hoping somebody can guide me through. I have a fairly large triggered ability (Dummy Cast Effect, all actions performed through behaviors and triggers) with two Wait actions in it.
I have another ability which orders all units in a unit group to use the first ability. In theory, that should work...as each unit is issued the order, it SHOULD run through the first trigger for each of them, the same as if they'd each used it on their own.
Here's the weird part: This ability works absolutely flawlessly if I order the units to use it directly in-game. If I use this 'proxy ability' (for lack of a better term) it either a) works, b) performs the actions before the first Wait and then stops, or c) performs the actions before the second Wait and then stops. There doesn't seem to be any pattern to whether it works or not. I'd say the three options happen rather evenly (roughly 33% of the time).
Why would the Waits be messing up the ability? I thought about trying to make the ability a custom action instead with the Create Thread option enabled, but that's a real pain to do at this point. Anybody else had this problem? If so, what was your solution?
Here's the ability:
and here's the 'proxy ability':
This ability is absolutely essential to my game, so a speedy response would be appreciated
.
I have another ability which orders all units in a unit group to use the first ability. In theory, that should work...as each unit is issued the order, it SHOULD run through the first trigger for each of them, the same as if they'd each used it on their own.
Here's the weird part: This ability works absolutely flawlessly if I order the units to use it directly in-game. If I use this 'proxy ability' (for lack of a better term) it either a) works, b) performs the actions before the first Wait and then stops, or c) performs the actions before the second Wait and then stops. There doesn't seem to be any pattern to whether it works or not. I'd say the three options happen rather evenly (roughly 33% of the time).
Why would the Waits be messing up the ability? I thought about trying to make the ability a custom action instead with the Create Thread option enabled, but that's a real pain to do at this point. Anybody else had this problem? If so, what was your solution?
Here's the ability:
Code:
Fall Back/Advance
Events
Unit - Any Unit uses Fall Back at Effect3 - Cast stage (Ignore shared abilities)
Unit - Any Unit uses Advance at Effect3 - Cast stage (Ignore shared abilities)
Local Variables
Unit = No Unit <Unit>
Destination Point = No Point <Point>
Conditions
Actions
Variable - Set Unit = (Triggering unit)
General - If (Conditions) then do (Actions) else do (Actions)
If
(Triggering ability) == Fall Back
Then
General - If (Conditions) then do (Actions) else do (Actions)
If
(Unit has Advance Status) == true
Then
Variable - Set Destination Point = ((Position of Unit) offset by 6.0 towards 0.0 degrees)
Unit - Add 1 Fall/Advance Pos Long to Unit from Unit
Unit - Remove 1 Advance Status from Unit
Else
Variable - Set Destination Point = ((Position of Unit) offset by 3.0 towards 0.0 degrees)
Unit - Add 1 Fall/Advance Pos to Unit from Unit
Unit - Add 1 Fall Back Status to Unit from Unit
General - Wait for (Conditions), checking every 0.1 Game Time seconds
Conditions
Or
Conditions
(Unit has Fall/Advance Pos) == true
(Unit has Fall/Advance Pos Long) == true
General - If (Conditions) then do (Actions) else do (Actions)
If
(Spider Bot - Blink count for player (Owner of Unit), counting Complete) >= 1
(Unit type of Unit) == Spider Bot
Then
Unit - Order Unit to (Spider Bot - Blink targeting Destination Point) (Replace Existing Orders)
Else
Unit - Order Unit to ( Move targeting Destination Point) (Replace Existing Orders)
General - Wait for (Conditions), checking every 0.2 Game Time seconds
Conditions
(Position of Unit) == Destination Point
General - If (Conditions) then do (Actions) else do (Actions)
If
(Unit has Fall/Advance Pos) == true
Then
Unit - Remove 1 Fall/Advance Pos from Unit
Else
Unit - Remove 1 Fall/Advance Pos Long from Unit
Unit - Disable the Fall Back ability for Unit
Unit - Enable the Advance ability for Unit
Unit - Enable the Regroup ability for Unit
Else
General - If (Conditions) then do (Actions) else do (Actions)
If
(Unit has Fall Back Status) == true
Then
Variable - Set Destination Point = ((Position of Unit) offset by 6.0 towards 180.0 degrees)
Unit - Add 1 Fall/Advance Pos Long to Unit from Unit
Unit - Remove 1 Fall Back Status from Unit
Else
Variable - Set Destination Point = ((Position of Unit) offset by 3.0 towards 180.0 degrees)
Unit - Add 1 Fall/Advance Pos to Unit from Unit
Unit - Add 1 Advance Status to Unit from Unit
General - Wait for (Conditions), checking every 0.1 Game Time seconds
Conditions
Or
Conditions
(Unit has Fall/Advance Pos) == true
(Unit has Fall/Advance Pos Long) == true
General - If (Conditions) then do (Actions) else do (Actions)
If
(Spider Bot - Blink count for player (Owner of Unit), counting Complete) >= 1
(Unit type of Unit) == Spider Bot
Then
Unit - Order Unit to (Spider Bot - Blink targeting Destination Point) (Replace Existing Orders)
Else
Unit - Order Unit to ( Move targeting Destination Point) (Replace Existing Orders)
General - Wait for (Conditions), checking every 0.2 Game Time seconds
Conditions
(Position of Unit) == Destination Point
General - If (Conditions) then do (Actions) else do (Actions)
If
(Unit has Fall/Advance Pos) == true
Then
Unit - Remove 1 Fall/Advance Pos from Unit
Else
Unit - Remove 1 Fall/Advance Pos Long from Unit
Unit - Disable the Advance ability for Unit
Unit - Enable the Fall Back ability for Unit
Unit - Enable the Regroup ability for Unit
Code:
Ranger Group
Events
Unit - Any Unit uses Rangers Advance at Effect3 - Cast stage (Ignore shared abilities)
Unit - Any Unit uses Rangers Regroup at Effect3 - Cast stage (Ignore shared abilities)
Unit - Any Unit uses Rangers Retreat at Effect3 - Cast stage (Ignore shared abilities)
Local Variables
TempGroup = (Empty unit group) <Unit Group>
RangerGroup = (Empty unit group) <Unit Group>
Conditions
Actions
(I have many, many lines of adding specific unit types to RangerGroup here, which I've edited out for you)
Unit Group - Pick each unit in RangerGroup and do (Actions)
Actions
General - If (Conditions) then do (Actions) else do (Actions)
If
(Triggering ability) == Rangers Retreat
Then
Unit - Order (Picked unit) to ( Fall Back) (Replace Existing Orders)
Else
General - If (Conditions) then do (Actions) else do (Actions)
If
(Triggering ability) == Rangers Regroup
Then
Unit - Order (Picked unit) to ( Regroup) (Replace Existing Orders)
Else
General - If (Conditions) then do (Actions) else do (Actions)
If
(Triggering ability) == Rangers Advance
Then
Unit - Order (Picked unit) to ( Advance) (Replace Existing Orders)
Else