• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!

passing local variable in JASS? Channeled effects with JASS?

Status
Not open for further replies.
Level 2
Joined
Jan 30, 2006
Messages
12
I'm looking to make timed effects for channeled spells in JASS. Namely, a channeled dummy spell is activated or being channeled, which will fulfill a condition. The condition, when true, will cause something to happen every x seconds, until the spell is no longer being channelled, at which point the condition is false. I could do this with three regular triggers, but that would require a global variable.

So, how could this be done? And can local variable be passed from function to function in JASS?
 
Level 11
Joined
Jul 20, 2004
Messages
2,760
That's pretty simple...

The first thing is to use a local trigger that takes place when the caster stops casting any spell (which will obviously be our channeling spell).

local trigger t = CreateTrigger()
call TriggerRegisterUnitEvent(t, GetTriggerUnit(), EVENT_UNIT_SPELL_ENDCAST)

And now, you keep the trigger going until the unit stops casting the spell, like this:

loop
exitwhen GetTriggerEvalCount(t)>0
call TriggerSleepAction(0.10)
endloop

GetTriggerEvalCount(t) counts how many times was trigger t fired. This function ignores the fact that the conditions of the trigger are fulfilled or not, when the event takes place. But that's not a problem in this case.

As for the effect, I would do it inside the loop above (if condition is true, make the dummy do something).

~Daelin
 
Status
Not open for further replies.
Top