GUI Stack Timer?

Juno**

Member
Reaction score
6
Hey Guys, I need to make a passive spell that every time my hero is hit, it automatically gives +1 bonus hp regen that lasts for 5 seconds (duration does not stack). The problem is that I don't know how to make and can't find a stack timer system which is in gui. Can you guys give me a good one? it doesn't really need to be MUI..

EDIT:
this is pretty similar to what I wanted to do

Reactive Armor
What doesn't kill ya makes ya stronger! Every physical attack made on Rizzrak increases his armor and gives him bonus hp regen. Each stack lasts for 16 seconds.
 

Solu9

You can change this now in User CP.
Reaction score
216
You could make the ability from an ability that give HP regen, fx Roar.
Set the level count of Roar to the max amount of stacks you want.

When your unit takes a hit make a dummy unit cast Roar.
You want to check if your unit already has the Roar buff and the level (stack) count.
If the unit has the buff, remove it, set Roar level to stacks +1 and make the dummy recast Roar.
 

Imp Midna

Active Member
Reaction score
52
Timer aint really GUI friendly. You could try to keep it GUI but you will certanly need to use some kind of jass unless you use a periodic event. And making it all MUI will become a major pain in the butt i fear.

Just to give you an impression of how this GUI-Jass mix would look like, heres a working example:
Trigger:
  • Healthregn
    • Events
    • Spieler - Spieler 1 (Rot) types a chat message containing -test as Exakte Ãœbereinstimmung
    • Conditions
    • Actions
      • Custom script: local timer udg_Timer
      • Custom script: set udg_Timer = CreateTimer()
      • Countdown Timer - Start Timer as a Einmalig timer that will expire in 0.25 seconds
      • Countdown Timer - Pause Timer
      • Custom script: call TimerStart(udg_Timer, 0.25, false, function aUniqueNameHere)
      • Skip remaining actions
      • Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • Custom script: endfunction
          • Custom script: function aUniqueNameHere takes nothing returns nothing
          • Custom script: local timer udg_Timer
          • Set tmpReal = (Remaining time for (Expiring timer))
          • Set tmpUnit = Paladin 0000 <gen>
          • Unit - Set life of tmpUnit to ((Leben of tmpUnit) + 25.00)
          • Set tmpReal = (tmpReal + 0.25)
          • Custom script: call DestroyTimer(GetExpiredTimer())
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • tmpReal Less than or equal to 5.00
            • Then - Actions
              • Custom script: set udg_Timer = CreateTimer()
              • Countdown Timer - Start Timer as a Einmalig timer that will expire in tmpReal seconds
              • Countdown Timer - Pause Timer
              • Custom script: call TimerStart(udg_Timer, 0.25, false, function aUniqueNameHere)
            • Else - Actions


This creates a 0.25 second-timer until the total amount of 5 seconds have been passed and heals the unit "Paladin 0000" for 25 every time the timer expires.

Note the shittons of tricks i had to use:
- Skip remaining action to prevent the pick every unit from beeing executed
- Using the Pick every unit to create a function
-> instantly canceling it by writing Custom script: enfunction
-> creating a function with a name we know (in this example its "aUniqueNameHere", you will have to replace it by a more sensefull name)
- local variables for the timer
-> you will have to note at this point that you have to replace the udg_Timer in the "Custom Script: local timer udg_Timer" parts by your real variable name
- I started the timer with tempReal, paused it and started it again. On this way, the remaining Time of the Timer after it expired will actually be tempReal, which is a neat trick to pass information to such an event
- i used Paladin 0000<gen> for tmpUnit. If its MUI, you will somehow have to find that out, which will be far more complex.

If that didnt make you flinch, Hats off, but i guess the solution from Solu9 might be easier :D
 

Juno**

Member
Reaction score
6
This creates a 0.25 second-timer until the total amount of 5 seconds have been passed and heals the unit "Paladin 0000" for 25 every time the timer expires.

Note the shittons of tricks i had to use:
- Skip remaining action to prevent the pick every unit from beeing executed
- Using the Pick every unit to create a function
-> instantly canceling it by writing Custom script: enfunction
-> creating a function with a name we know (in this example its "aUniqueNameHere", you will have to replace it by a more sensefull name)
- local variables for the timer
-> you will have to note at this point that you have to replace the udg_Timer in the "Custom Script: local timer udg_Timer" parts by your real variable name
- I started the timer with tempReal, paused it and started it again. On this way, the remaining Time of the Timer after it expired will actually be tempReal, which is a neat trick to pass information to such an event
- i used Paladin 0000<gen> for tmpUnit. If its MUI, you will somehow have to find that out, which will be far more complex.
:confused: Yup, you're right.. I'll go with Solu9's solution..:p
 
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