Spell manacost

BlueMirage

Trust, but doubt.
Reaction score
39
I'm sure this has been asked tons of times, but I'ma take a different approach.

A lot of people say that the manacost of a skill is something that you can't retrieve when it's been cast. I was wondering if one of these two theories might work?

1: Use "A unit starts the effect of an ability". Save the unit and its mana to some variable, start a zero-timer then measure its mana.

2: For every unit in the map, create a trigger with the event "TriggerRegisterUnitManaEvent()", checking whenever the mana of the unit changes to ">= 0". Save the unit and its current to a hashtable with the parent key being the trigger's HandleId. For the actions, update the mana variable and set another that is equal to the difference between the old mana and the new mana. A "A unit starts the ability of a spell" could then retrieve this difference and it should be equal to the manacost of the skill.

Would any of these two work?
 

tooltiperror

Super Moderator
Reaction score
231
The real question is, why do you need it so bad? Shouldn't you be able to use a hashtable, spell Ids and levels?
 

BlueMirage

Trust, but doubt.
Reaction score
39
I'm not in much need of it, but someone else might be. And I doubt he'd wish to manually do that for every spell and level.

Nevertheless, I found that theory 1 was doable. Still interested in if theory 2 works though.
 

Weep

Godspeed to the sound of the pounding
Reaction score
400
1: Use "A unit starts the effect of an ability". Save the unit and its mana to some variable, start a zero-timer then measure its mana.
Yep, though if the unit's mana is modified by other triggers upon spell casting, this will be affected.

2: For every unit in the map, create a trigger with the event "TriggerRegisterUnitManaEvent()", checking whenever the mana of the unit changes to ">= 0".
I'm pretty sure that event won't fire unless the unit's mana was below 0 :nuts: - it can't "become greater than or equal to 0" if it wasn't ever less than 0. Dynamic triggers that are remade on a period with an event matching the unit's current mana might work.
 

tooltiperror

Super Moderator
Reaction score
231
Weep, [ljass]>=[/ljass] is greater than or equal to. Didn't you learn inequality notation in JASS?
 

tommerbob

Minecraft. :D
Reaction score
110
Yes, you can detect the mana cost of a spell. A while back Glenphir showed me how, using your method of saving to a hashtable and using a zero-timer.

o_O didn't read carefully. You already figured it out. lol. :eek:
 

Weep

Godspeed to the sound of the pounding
Reaction score
400
Weep, [ljass]>=[/ljass] is greater than or equal to. Didn't you learn inequality notation in JASS?
I'm sorry, which part of my post is rendered false because I omitted the phrase "or equal to"? (I'll edit my post anyway.) It still won't fire unless the state has changed from false to true, ie. "becomes greater than or equal to 0" will not fire for a change from 100 to 200 mana.
 

BlueMirage

Trust, but doubt.
Reaction score
39
I'm pretty sure that event won't fire unless the unit's mana was below 0 - it can't "become greater than or equal to 0" if it wasn't ever less than 0. Dynamic triggers that are remade on a period with an event matching the unit's current mana might work.
Doesn't dynamic triggers have a problem with leaks? I mean, you can't remove the events of a trigger.
 

emjlr3

Change can be a good thing
Reaction score
395
have two trigger events

one on_cast, the other on_spell_effect

at on_cast, store mana, at on_spell_effect, compare new mana to old mana

there is obviously a period in time when other things can happen between cast and effect, but its unlikely
 
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