If the ability being cast is the "Cloak". This check must be performed, otherwise the Behavior is removed instantly as it is applied to the unit.
"Caster Has No Orders" is a default Validator. This returns true if the Caster doesn't have any orders, otherwise it returns false and removes the behavior.
They're combined with an "Or" statement, meaning "If just one of them is true, keep the buff on. If both are false, remove the buff."
This means that even moving (the order "Move") should remove the behavior - but nothing happens. In fact, as soon as you use the "Caster Has No Orders" in any Combine or Condition validators, it doesn't seem to have any effect. To avoid confusion, the "Move" order I mentioned in earlier posts is no longer part of the check. At first I simply want know how to remove the behavior when the unit receives ANY orders.
To recap my wish: I want to remove the Cloak buff whenever the unit is ordered to do anything, besides casting the Cloak ability itself.
The unit must be able to do the following while the Cloak is active, and without the Cloak buff being removed:
Cast the Cloak ability itself (needed, otherwise the behavior is removed instantly as it is applied)
Move
Any other Orders should remove the Cloak buff at any time.
Down the line Orders like "Stop", "Hold Position", and "Patrol" should be allowed as well, but let us keep it simple at first and allow just the two Orders above.
The Validators "Invisibility: Unit Ordered to cast Invisibility" and "Invisibility: Unit Ordered to Move" work. The "Caster Has No Orders", which is a default Validator, doesn't seem to work.
That should work, yes? If the unit has ANY orders in it's queue, and the orders aren't Invisbility or Move, the buff should be removed. However, it does not work. E.g. casting a simple buff on the unit itself does not remove the Invisibility buff. The "Invisibility" and "Move" checks work - I can confirm that much - so the problem seems to lie with the Order Count check.
The thing is, I'm talking about Abilities with no damage component. So listening for a damage component won't work. I want this to work in "Any case", but without eating a bucketload of system resources.
How and where would you attach the "Order Validator", so that it fires in the correct context?
I did end up doing this in the Trigger Editor. However, you can't do a trigger event listening for "Any Ability", so I had to do it with the "A Unit Is Ordered To" event, disallowing orders like "Move", Stop", "Patrol", "Hold Position", etc. in the Conditions. But this will generate a lot of network traffic all the time, as it listens for "Any Unit" and "Any Order". So, my solution was 3 triggers:
Trigger listening for when Invisibility is used. This Trigger will activate Triggers 2 and 3 below, and will start a One-shot Timer (10 sec).
(Initially Turned Off) Event: "Unit is Ordrered" - Conditions: Order != "Move", "Stop", "Hold Position", etc. - Action: Cancel the Invisibility buff.
Whenever a unit uses Invisibility the above triggers will be active for 10 sec, possibly more as they can overlap, restarting the timer at 10 sec. This means the high number of "Unit Was Ordered" checks only occur during this time.
It is still not a rock-solid solution, so I would love to hear if anyone else can think of a better solution.
In line with the Windwalk speculations in this thread. If you copy another of the Blademater's abilities - Mirror Image - the unit will still be cloaked after casting Mirror Image. Obviously, you can add a "Remove Behavior" to the Mirror Image ability, removing the Windwalk buff. But what then if you want to add 10/20/30 more abilities to the same unit? Then you must do the "Remove Windwalk Behavior" on every single ability that doesn't inflict any damage.
It would be great if someone could conjure up some method for removing the Cloak buff - not only when being attacked or attacking - but also when using any ability. Preferably something triggered from the Windwalk (cloak) buff.
@DrSuperEvil: Go
I made an example in the attached map.
I only check for two things on this example:
They're combined with an "Or" statement, meaning "If just one of them is true, keep the buff on. If both are false, remove the buff."
This means that even moving (the order "Move") should remove the behavior - but nothing happens. In fact, as soon as you use the "Caster Has No Orders" in any Combine or Condition validators, it doesn't seem to have any effect. To avoid confusion, the "Move" order I mentioned in earlier posts is no longer part of the check. At first I simply want know how to remove the behavior when the unit receives ANY orders.
To recap my wish: I want to remove the Cloak buff whenever the unit is ordered to do anything, besides casting the Cloak ability itself.
@DrSuperEvil: Go
The unit must be able to do the following while the Cloak is active, and without the Cloak buff being removed:
Any other Orders should remove the Cloak buff at any time.
Down the line Orders like "Stop", "Hold Position", and "Patrol" should be allowed as well, but let us keep it simple at first and allow just the two Orders above.
The Validators (madness!):
The Validators "Invisibility: Unit Ordered to cast Invisibility" and "Invisibility: Unit Ordered to Move" work. The "Caster Has No Orders", which is a default Validator, doesn't seem to work.
@DrSuperEvil: Go
I simply can't get this to work properly using the "Behavior: Validators (Remove)" on the Behavior with the Validators:
Which boils down to (programically):
That should work, yes? If the unit has ANY orders in it's queue, and the orders aren't Invisbility or Move, the buff should be removed. However, it does not work. E.g. casting a simple buff on the unit itself does not remove the Invisibility buff. The "Invisibility" and "Move" checks work - I can confirm that much - so the problem seems to lie with the Order Count check.
@DrSuperEvil: Go
The thing is, I'm talking about Abilities with no damage component. So listening for a damage component won't work. I want this to work in "Any case", but without eating a bucketload of system resources.
How and where would you attach the "Order Validator", so that it fires in the correct context?
@Zolstice: Go
I did end up doing this in the Trigger Editor. However, you can't do a trigger event listening for "Any Ability", so I had to do it with the "A Unit Is Ordered To" event, disallowing orders like "Move", Stop", "Patrol", "Hold Position", etc. in the Conditions. But this will generate a lot of network traffic all the time, as it listens for "Any Unit" and "Any Order". So, my solution was 3 triggers:
Whenever a unit uses Invisibility the above triggers will be active for 10 sec, possibly more as they can overlap, restarting the timer at 10 sec. This means the high number of "Unit Was Ordered" checks only occur during this time.
It is still not a rock-solid solution, so I would love to hear if anyone else can think of a better solution.
(Necro! Google's fault)
In line with the Windwalk speculations in this thread. If you copy another of the Blademater's abilities - Mirror Image - the unit will still be cloaked after casting Mirror Image. Obviously, you can add a "Remove Behavior" to the Mirror Image ability, removing the Windwalk buff. But what then if you want to add 10/20/30 more abilities to the same unit? Then you must do the "Remove Windwalk Behavior" on every single ability that doesn't inflict any damage.
It would be great if someone could conjure up some method for removing the Cloak buff - not only when being attacked or attacking - but also when using any ability. Preferably something triggered from the Windwalk (cloak) buff.