Why doesn't this work?

Xialian

Member
Reaction score
8
I really don't get this. The ability deals 0 damage, and I don't get why it won't deal any.

Unit - A unit Starts the effect of an ability

(Ability being cast) Equal to Shuriken [Q]
(Unit-type of (Triggering unit)) Equal to Hyperassassin

Set HAAgi = ((Agility of (Triggering unit) (Include bonuses)) x 3)
If ((Level of Shuriken [Q] for (Triggering unit)) Equal to 1) then do (Set TDMGShu = (HAAgi + 30)) else do (Do nothing)
And that's repeated for levels 2-6
Wait 0.13 seconds (the missile speed is fast, but instant damage looks very awkward)
Unit - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing (Real(TDMGShu)) damage of attack type Normal and damage type Normal

Does anybody know why? Help is very appreciated!
 

KaerfNomekop

Swim, fishies. Swim through the veil of steel.
Reaction score
613
Target unit of ability being cast will be lost after the wait. Use a local variable to store it.

Code:
Custom script: local unit ShurikenTarget = GetSpellTargetUnit()
Wait 0.13 seconds
Custom script: set udg_TempUnit = ShurikenTarget
<actions>
set ShurikenTarget = null
 

Xialian

Member
Reaction score
8
Uhm, I might be doing this wrong, as it gives me these three error messages:

"expected 'endif'" local unit ShurikenTarget = GetSpellTargetUnit()
"expected a name" set udg_TempUnit = ShurikenTarget
"expected a varibable name" set ShurikenTarget = null

I created the variable "ShurikenTarget", as I thought that would fix it, but it didn't.
Then I created "TempUnit" (oh god, I am stupid, I think), no fixing.

Why do I have to be so bad at this program...
Oh well, practice makes perfect, right? :D
 

Dameon

"All the power in the world resides in the eyes"
Reaction score
127
Target unit of ability being cast will be lost after the wait. Use a local variable to store it.

Code:
Custom script: local unit ShurikenTarget = GetSpellTargetUnit()
Wait 0.13 seconds
Custom script: set udg_TempUnit = ShurikenTarget
<actions>
set ShurikenTarget = null
not after that short of a wait
change triggering unit to casting unit and see if that fixes it.
Also add some messages to it to make sure it is firing.
 

dracolich

TH.net Regular
Reaction score
15
after ANY wait variables could mess. it works fine only if there are only one trigger per whole map.
here are tons things could went wrong, so better make it instant or ask someone for jassing
 

KaerfNomekop

Swim, fishies. Swim through the veil of steel.
Reaction score
613
Interestingly, I did this, and it works some of the time. Not all, though, so I assume that the wait is still bugging it up.
Trigger:
  • Shuriken Toss Bad
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shuriken Toss
      • (Unit-type of (Triggering unit)) Equal to Caster
    • Actions
      • Set HAAgi = (Agility of (Triggering unit) (Include bonuses))
      • If ((Level of Shuriken Toss for (Triggering unit)) Equal to 1) then do (Set TDMGShu = (HAAgi + 30)) else do (Do nothing)
      • Wait 0.13 seconds
      • Unit - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing (Real(TDMGShu)) damage of attack type Normal and damage type Normal

Instead, I added some custom scripts (tutorial) and it works as intended.
Trigger:
  • Shuriken Toss Good
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shuriken Toss
      • (Unit-type of (Triggering unit)) Equal to Caster
    • Actions
      • Custom script: local unit Target = GetSpellTargetUnit()
      • Custom script: local integer Damage
      • Set HAAgi = (Agility of (Triggering unit) (Include bonuses))
      • If ((Level of Shuriken Toss for (Triggering unit)) Equal to 1) then do (Set TDMGShu = (HAAgi + 30)) else do (Do nothing)
      • Custom script: set Damage = udg_TDMGShu
      • Wait 0.13 seconds
      • Custom script: set udg_TempUnit = Target
      • Custom script: set udg_TDMGShu = Damage
      • Unit - Cause (Triggering unit) to damage TempUnit, dealing (Real(TDMGShu)) damage of attack type Normal and damage type Normal
      • Custom script: set udg_Target = null

The effect is still ugly though, so I would suggest that you use some minor damage detection for the missile hit.
"expected 'endif'" local unit ShurikenTarget = GetSpellTargetUnit()
"expected a name" set udg_TempUnit = ShurikenTarget
"expected a varibable name" set ShurikenTarget = null
Just a note that local variables need to be declared at the started of the trigger. I assume that's the problem.
not after that short of a wait
change triggering unit to casting unit and see if that fixes it.
Also add some messages to it to make sure it is firing.
1. Any length of wait can cause disruption to the event responses. They were supposed to be fixed in one of the later patches, but I hardly think it's worth counting on.
2. Casting unit would be even worse a choice than Triggering unit, which can usually be relied on to bypass waits.
3. Naturally, debug messages are a good idea.
 

Dameon

"All the power in the world resides in the eyes"
Reaction score
127
you can also use hashtables, save that attacking unit as the unit, then the letter u as the parent and the unit id of the triggering unit as the child.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top