Why my blink isn't working?

Yamuraiha

Member
This one does work, but if the Casting unit is moving right after using Blink, the dummy unit won't cast Fan of Knife :((

Blink
Events
Unit - A unit Finishes casting an ability
Conditions
(Ability being cast) Equal to Blink
(Level of Fan of Knives for (Casting unit)) Greater than 0
Actions
Set Temp_Point = (Position of (Casting unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Fan of Knives for (Casting unit)) Equal to 3
Then - Actions
Unit - Create 1 Dummy Unit (lvl 3) for (Owner of (Casting unit)) at Temp_Point facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Order (Last created unit) to Night Elf Warden - Fan Of Knives
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Fan of Knives for (Casting unit)) Equal to 2
Then - Actions
Unit - Create 1 Dummy Unit (lvl 2) for (Owner of (Casting unit)) at Temp_Point facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Order (Last created unit) to Night Elf Warden - Fan Of Knives
Else - Actions
Unit - Create 1 Dummy Unit (lvl 1) for (Owner of (Casting unit)) at Temp_Point facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Order (Last created unit) to Night Elf Warden - Fan Of Knives
Custom script: call RemoveLocation (udg_Temp_Point)
 

O.A

Quantum physics rules
Use tags. Can't read, eyes hurt. Must leave.

Use the search to look for 'wc3 tags' and post the trigger again, probably get an answer easier that way.
 

vypur85

Hibernate
This one does work, but if the Casting unit is moving right after using Blink, the dummy unit won't cast Fan of Knife :((

Trigger:
  • Blink
    • Events
      • Unit - A unit Finishes casting an ability
    • Conditions
      • (Ability being cast) Equal to Blink
      • (Level of Fan of Knives for (Casting unit)) Greater than 0
    • Actions
      • Set Temp_Point = (Position of (Casting unit))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Fan of Knives for (Casting unit)) Equal to 3
        • Then - Actions
          • Unit - Create 1 Dummy Unit (lvl 3) for (Owner of (Casting unit)) at Temp_Point facing Default building facing degrees
          • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
          • Unit - Order (Last created unit) to Night Elf Warden - Fan Of Knives
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of Fan of Knives for (Casting unit)) Equal to 2
            • Then - Actions
              • Unit - Create 1 Dummy Unit (lvl 2) for (Owner of (Casting unit)) at Temp_Point facing Default building facing degrees
              • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
              • Unit - Order (Last created unit) to Night Elf Warden - Fan Of Knives
            • Else - Actions
              • Unit - Create 1 Dummy Unit (lvl 1) for (Owner of (Casting unit)) at Temp_Point facing Default building facing degrees
              • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
              • Unit - Order (Last created unit) to Night Elf Warden - Fan Of Knives
      • Custom script: call RemoveLocation (udg_Temp_Point)
Please explain what the ability is supposed to do.
Are the dummies spawned? Manually add the dummies into the map and order them cast FoK and see if they cast or not.
And, change all the 'Casting unit' to 'Triggering unit'.
 

death_knight

Dark is the heart of a corrupted man.
Two Things:

First, why are you getting the dummy unit to cast the 'Fan of Knives' skill? Why aren't you getting the triggering unit to do it?

And second, using that finite timer as well as 'Last created unit' I reckon is really dangerous here, simply because other triggers and processes (training units, etc) might mess around with it. You're better off storing the dummy unit in a unit variable and then referring the the unit variable instead of 'Last created unit'.
 

death_knight

Dark is the heart of a corrupted man.
@jonas: It just seems to me that it would make more sense to remove that timer, then simply keep the order to cast FoK, add a 'Wait' command that gives the unit just enough time to cast the ability, then kill/remove the unit. And as I said, the 'Last created unit' thing can be messed with by a number of other things. For example, consider a trigger that creates a unit while this trigger is running. This trigger will then stop referring to the dummy unit and instead refer to the other created unit.
 

jonas

Ultra Cool Member
@jonas For example, consider a trigger that creates a unit while this trigger is running...
There are no interleavings. The Wc3 scripting engine makes sure that there is at most one "current thread" and that this thread only changes at certain interleaving points, e.g., a trigger sleep action and the end of the trigger (I forgot if TriggerExecute and the ExecuteFunc may also interleave, but I don't think so... I am nearly positive that those are the only two). Since adding an expiration timer is not one of them, there is no concern.

If you feel uncomfortable anyway, just switch the position of the statements that add the expiration timer and cause the ability.
 

jonas

Ultra Cool Member
@Yamuraiha

Either way, if there is a problem with the above code it is that the event is bad. I think "starts the effect of an ability" was the right even to use, but I haven't done such stuff in years.
Also there is valuable information that is not very clear to me. Is the unit created, but doesn't cast fan of knives? Does it work if you don't move?

By the way, I suggest you to change to a table driven approach...
 

Shadow

TH.net Regular
In your condition

(Level of Fan of Knives for (Casting unit)) Greater than 0

I believe your casting unit does not have this ability therefore the conditions are not met and the trigger will not fire.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

    Members online

    Affiliates

    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.
    Top