• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

[Spell] Fix for the following library in Reforged [JASS]

Status
Not open for further replies.
Level 12
Joined
May 16, 2020
Messages
660
Hi all,

I'm trying to use this library from PurgeandFire to play around with the vertex coloring of units, but I'm getting an error when pasting it into my map (Cold debuff with variable slow).

The error is:
"dur is not a member of VertexColor" (refers to a line almost at the end of the code)

Can someone with JASS knowledge please help fix this?



JASS:
/**
    A simple library to handle vertex coloring.

    The most recently applied vertex color effect is the one that shows up.
    When that effect expires, the next one in line appears (if any).

    function RegisterDefaultVertexColor(typeId, red, green, blue, alpha)
        - If a unit has a default vertex color other than (255, 255, 255, 255), then
          you should use this function to register the appropriate values. You only have
          to do this once per unit type, preferably on initialization.

    VertexColor.create(unit, red, green, blue, alpha, duration) returns VertexColor
        - Applies a vertex color effect to a unit using the given values for
          'duration' seconds. If you want the effect applied indefinitely, input
          a value of -1 for duration.

    vertexColorInstance.destroy()
        - You can destroy an instance of a vertex color at any time.

*/

library VertexColor

    globals
        private hashtable ht = InitHashtable()
    endglobals

    /**
        If a unit-type has a default vertex color other than (255, 255, 255, 255),
        register those values on initialization through this function.
    */
    function RegisterDefaultVertexColor takes integer typeId, integer r, integer g, integer b, integer a returns nothing
        call SaveInteger(ht, typeId, 0, r)
        call SaveInteger(ht, typeId, 1, g)
        call SaveInteger(ht, typeId, 2, b)
        call SaveInteger(ht, typeId, 3, a)
    endfunction

    struct VertexColorEffect
        private unit base
        readonly integer red
        readonly integer green
        readonly integer blue
        readonly integer alpha
        readonly thistype next
        readonly thistype prev

        method destroy takes nothing returns nothing
            local integer typeId = GetUnitTypeId(this.base)
            local integer id = GetHandleId(this.base)

            /* If this is the front node, we must alter vertex colors */
            if this == LoadInteger(ht, id, 0) then

                /* If there are no more effects, reset the color */
                if this.next == 0 then
                    if HaveSavedInteger(ht, typeId, 0) then
                        call SetUnitVertexColor(this.base, LoadInteger(ht, typeId, 0), /*
                            [I]/    LoadInteger(ht, typeId, 1), /[/I]
                            [I]/    LoadInteger(ht, typeId, 2), /[/I]
                            */  LoadInteger(ht, typeId, 3))
                    else
                        call SetUnitVertexColor(this.base, 255, 255, 255, 255)
                    endif
                    call RemoveSavedInteger(ht, id, 0)
                else
                    call SetUnitVertexColor(this.base, this.next.red, this.next.green, this.next.blue, this.next.alpha)
                    call SaveInteger(ht, id, 0, this.next)
                endif

                set this.next = 0
                set this.prev = 0
            else
                set this.next.prev = this.prev
                set this.prev.next = this.next
            endif
            call this.deallocate()
        endmethod

        static method create takes unit u, integer r, integer g, integer b, integer a returns thistype
            local thistype this = thistype.allocate()
            local integer id = GetHandleId(u)
            set this.base  = u
            set this.red   = r
            set this.green = g
            set this.blue  = b
            set this.alpha = a

            /*
                Add this instance to a list.
            */
            set this.next.prev = this
            set this.next = LoadInteger(ht, id, 0)
            call SaveInteger(ht, id, 0, this.next)
            call SetUnitVertexColor(u, r, g, b, a)
            return this
        endmethod
    endstruct

    struct VertexColor
        private VertexColorEffect fx
        private timer time
       
        method destroy takes nothing returns nothing
            if this.time != null then
                call PauseTimer(this.time)
                call DestroyTimer(this.time)
                set this.time = null
            endif
            call fx.destroy()
        endmethod

        private static method finish takes nothing returns nothing
            local thistype this = LoadInteger(ht, GetHandleId(GetExpiredTimer()), 1)
            call this.destroy()
        endmethod

        static method create takes unit u, integer r, integer g, integer b, integer a, real duration returns thistype
            local thistype this = thistype.allocate()
            set this.fx  = VertexColorEffect.create(u, r, g, b, a)
            set this.dur = duration
            if duration == -1 then
                set this.time = null
            else
                set this.time = CreateTimer()
                call SaveInteger(ht, GetHandleId(this.time), 1, this)
                call TimerStart(this.time, duration, false, function thistype.finish)
            endif
            return this
        endmethod
    endstruct

endlibrary
[/code=jass]
 
Level 12
Joined
May 16, 2020
Messages
660
Thank you, that worked! But now I have troubles actually using the system...

I tried the following (according to the instructions at the beginning) but getting an error. What am I doing wrong?

  • Eye of Skadi
    • Events
      • Game - DamageModifierEvent becomes Less than 1.00
    • Conditions
      • (DamageEventSource has an item of type Eye of Skadi) Equal to True
      • (DamageEventTarget is A structure) Equal to False
      • (DamageEventTarget is A Hero) Equal to True
    • Actions
      • Custom script: function VertexColor.create(udg_DamageEventTarget, 150, 150, 255, 255, 3.0) returns VertexColor
      • Set VariableSet HealReduction_CV = (Custom value of DamageEventTarget)
      • Set VariableSet HealReduction_Multiplier[HealReduction_CV] = 0.40
      • Set VariableSet HealReduction_Time[HealReduction_CV] = 15
      • Set VariableSet HealReduction_Buff[HealReduction_CV] = Slowed
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget is in HealReduction_Group.) Equal to False
        • Then - Actions
          • Unit Group - Add DamageEventTarget to HealReduction_Group
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Heal Reduction <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Heal Reduction <gen>
        • Else - Actions
 
Level 12
Joined
May 16, 2020
Messages
660
Mmm it does change the vertex color of the damaged enemy to blue. But the enemy doesn't turn back to its default color.

I even added the following line (as suggested in the instructions), even though I think for this it should not be necessary (O000 is the unit which I'm damaging):

  • Map Vertex Color
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Custom script: call RegisterDefaultVertexColor('O000', 255, 255, 255, 255)
I'm attaching the map, just so you can confirm yourself. The trigger is under Item triggers > Eye of Skadi > Eye of Skadi
The unit with the item is the Pig in the middle (the vertex coloring only works on enemy heroes)
 

Attachments

  • Land of Legends v0.1.89.w3m
    79.8 MB · Views: 23

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,876
I think I found the issue, see in the destroy method this line of code that resets the registered unit's color:
JASS:
                    if HaveSavedInteger(ht, typeId, 0) then
                        call SetUnitVertexColor(this.base, LoadInteger(ht, typeId, 0), /*
                            [I]/    LoadInteger(ht, typeId, 1), /[/I]
                            [I]/    LoadInteger(ht, typeId, 2), /[/I]
                            */  LoadInteger(ht, typeId, 3))
                    else
It looks like it's commenting out the blue/green values.

Try rewriting "call SetUnitVertexColor()" so it looks like this:
JASS:
if HaveSavedInteger(ht, typeId, 0) then
    call SetUnitVertexColor(this.base, LoadInteger(ht, typeId, 0), LoadInteger(ht, typeId, 1), LoadInteger(ht, typeId, 2), LoadInteger(ht, typeId, 3))
else
 
Last edited:
Level 12
Joined
May 16, 2020
Messages
660
Hi Uncle, unfortuantely still not turning the unit back to the original color.
This is the code after the adjustment:

JASS:
/**
    A simple library to handle vertex coloring.

    The most recently applied vertex color effect is the one that shows up.
    When that effect expires, the next one in line appears (if any).

    function RegisterDefaultVertexColor(typeId, red, green, blue, alpha)
        - If a unit has a default vertex color other than (255, 255, 255, 255), then
          you should use this function to register the appropriate values. You only have
          to do this once per unit type, preferably on initialization.

    VertexColor.create(unit, red, green, blue, alpha, duration) returns VertexColor
        - Applies a vertex color effect to a unit using the given values for
          'duration' seconds. If you want the effect applied indefinitely, input
          a value of -1 for duration.

    vertexColorInstance.destroy()
        - You can destroy an instance of a vertex color at any time.

*/

library VertexColor

    globals
        private hashtable ht = InitHashtable()
    endglobals

    /**
        If a unit-type has a default vertex color other than (255, 255, 255, 255),
        register those values on initialization through this function.
    */
    function RegisterDefaultVertexColor takes integer typeId, integer r, integer g, integer b, integer a returns nothing
        call SaveInteger(ht, typeId, 0, r)
        call SaveInteger(ht, typeId, 1, g)
        call SaveInteger(ht, typeId, 2, b)
        call SaveInteger(ht, typeId, 3, a)
    endfunction

    struct VertexColorEffect
        private unit base
        readonly integer red
        readonly integer green
        readonly integer blue
        readonly integer alpha
        readonly thistype next
        readonly thistype prev

        method destroy takes nothing returns nothing
            local integer typeId = GetUnitTypeId(this.base)
            local integer id = GetHandleId(this.base)

            /* If this is the front node, we must alter vertex colors */
            if this == LoadInteger(ht, id, 0) then

                /* If there are no more effects, reset the color */
                if this.next == 0 then
                    if HaveSavedInteger(ht, typeId, 0) then
                            call SetUnitVertexColor(this.base, LoadInteger(ht, typeId, 0), LoadInteger(ht, typeId, 1), LoadInteger(ht, typeId, 2), LoadInteger(ht, typeId, 3))
                else
                        call SetUnitVertexColor(this.base, 255, 255, 255, 255)
                    endif
                    call RemoveSavedInteger(ht, id, 0)
                else
                    call SetUnitVertexColor(this.base, this.next.red, this.next.green, this.next.blue, this.next.alpha)
                    call SaveInteger(ht, id, 0, this.next)
                endif

                set this.next = 0
                set this.prev = 0
            else
                set this.next.prev = this.prev
                set this.prev.next = this.next
            endif
            call this.deallocate()
        endmethod

        static method create takes unit u, integer r, integer g, integer b, integer a returns thistype
            local thistype this = thistype.allocate()
            local integer id = GetHandleId(u)
            set this.base  = u
            set this.red   = r
            set this.green = g
            set this.blue  = b
            set this.alpha = a

            /* Add this instance to a list.    */

            set this.next.prev = this
            set this.next = LoadInteger(ht, id, 0)
            call SaveInteger(ht, id, 0, this.next)
            call SetUnitVertexColor(u, r, g, b, a)
            return this
        endmethod
    endstruct

    struct VertexColor
        private VertexColorEffect fx
        private timer time
        private real dur
        
        method destroy takes nothing returns nothing
            if this.time != null then
                call PauseTimer(this.time)
                call DestroyTimer(this.time)
                set this.time = null
            endif
            call fx.destroy()
        endmethod

        private static method finish takes nothing returns nothing
            local thistype this = LoadInteger(ht, GetHandleId(GetExpiredTimer()), 1)
            call this.destroy()
        endmethod

        static method create takes unit u, integer r, integer g, integer b, integer a, real duration returns thistype
            local thistype this = thistype.allocate()
            set this.fx  = VertexColorEffect.create(u, r, g, b, a)
            set this.dur = duration
            if duration == -1 then
                set this.time = null
            else
                set this.time = CreateTimer()
                call SaveInteger(ht, GetHandleId(this.time), 1, this)
                call TimerStart(this.time, duration, false, function thistype.finish)
            endif
            return this
        endmethod
    endstruct

endlibrary
 
Level 12
Joined
May 16, 2020
Messages
660
You mean like this?

  • Map Vertex Color
    • Events
      • Time - Elapsed game time is 2.00 seconds
    • Conditions
    • Actions
      • Custom script: call RegisterDefaultVertexColor('O000', 255, 255, 255, 255)
  • Eye of Skadi
    • Events
      • Game - DamageModifierEvent becomes Less than 1.00
    • Conditions
      • (DamageEventSource has an item of type Eye of Skadi) Equal to True
      • (DamageEventTarget is A structure) Equal to False
      • (DamageEventTarget is A Hero) Equal to True
    • Actions
      • Custom script: call VertexColor.create(udg_DamageEventTarget, 150, 150, 255, 255, 3)
      • Set VariableSet HealReduction_CV = (Custom value of DamageEventTarget)
      • Set VariableSet HealReduction_Multiplier[HealReduction_CV] = 0.40
      • Set VariableSet HealReduction_Time[HealReduction_CV] = 15
      • Set VariableSet HealReduction_Buff[HealReduction_CV] = Slowed
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget is in HealReduction_Group.) Equal to False
        • Then - Actions
          • Unit Group - Add DamageEventTarget to HealReduction_Group
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Heal Reduction <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Heal Reduction <gen>
        • Else - Actions
The vertex color unfortunately stays the same (blueish) for the DamageEventTarget (which is O000)...
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,876
Yeah, that's what I meant.

Anyway, the system doesn't actually need you to register a default vertex color in the first place. 255/255/255 will be used by default otherwise it'll use whatever colors you registered for that unit-type.

This leads me to believe that you're missing something important like a system requirement. That or there's another mistake somewhere in the code.
Where exactly did you find this system?

Edit: From that post Purge said "So I went ahead and created (2) because I thought it was an interesting problem. This is untested and probably has syntax errors, but this is probably how I'd approach it:"

So he never actually tested to see if the code worked.
 
Level 12
Joined
May 16, 2020
Messages
660
Yeah, seems to be the case unfortunately. I will go ahead and make my own system I guess. Thanks anyhow you two for trying.

Just FYI: I don't like that cold attack is fixed at -X attack and -Y movement speed specified in the gameplay constants. Hence I want to create my own "cold" effect, where I can specify my own values. That is why I searched and found Purge's code.
 
Level 12
Joined
May 16, 2020
Messages
660
I created an own system in the meantime, not sure how efficient it is compared to Purge's, but works from what I experimented so far:

Core system to change units back to the original vertex color:
  • Vertex Coloring Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set VariableSet Vertex_ColorUnitType[1] = Terror of the Tides
      • Set VariableSet Vertex_ColorR[1] = 230.00
      • Set VariableSet Vertex_ColorG[1] = 230.00
      • Set VariableSet Vertex_ColorB[1] = 255.00
      • Set VariableSet Vertex_ColorUnitType[2] = Vengeful Spirit
      • Set VariableSet Vertex_ColorR[2] = 100.00
      • Set VariableSet Vertex_ColorG[2] = 0.00
      • Set VariableSet Vertex_ColorB[2] = 0.00
      • Set VariableSet Vertex_ColorUnitType[3] = Bloodseeker
      • Set VariableSet Vertex_ColorR[3] = 255.00
      • Set VariableSet Vertex_ColorG[3] = 230.00
      • Set VariableSet Vertex_ColorB[3] = 230.00
      • Set VariableSet Vertex_ColorUnitType[4] = Demon Witch
      • Set VariableSet Vertex_ColorR[4] = 200.00
      • Set VariableSet Vertex_ColorG[4] = 230.00
      • Set VariableSet Vertex_ColorB[4] = 230.00
      • Set VariableSet Vertex_ColorUnitType[5] = Enigma
      • Set VariableSet Vertex_ColorR[5] = 160.00
      • Set VariableSet Vertex_ColorG[5] = 160.00
      • Set VariableSet Vertex_ColorB[5] = 160.00
      • Set VariableSet Vertex_ColorUnitType[6] = Lycan
      • Set VariableSet Vertex_ColorR[6] = 255.00
      • Set VariableSet Vertex_ColorG[6] = 200.00
      • Set VariableSet Vertex_ColorB[6] = 200.00
      • Set VariableSet Vertex_ColorUnitType[7] = Shadowfiend
      • Set VariableSet Vertex_ColorR[7] = 25.00
      • Set VariableSet Vertex_ColorG[7] = 25.00
      • Set VariableSet Vertex_ColorB[7] = 25.00
      • Set VariableSet Vertex_ColorUnitType[8] = Skeleton King
      • Set VariableSet Vertex_ColorR[8] = 140.00
      • Set VariableSet Vertex_ColorG[8] = 150.00
      • Set VariableSet Vertex_ColorB[8] = 180.00
      • Set VariableSet Vertex_ColorUnitType[9] = Lycanthrope (Wolf)
      • Set VariableSet Vertex_ColorR[9] = 120.00
      • Set VariableSet Vertex_ColorG[9] = 120.00
      • Set VariableSet Vertex_ColorB[9] = 120.00
      • Set VariableSet Vertex_ColorUnitType[10] = The Northwind
      • Set VariableSet Vertex_ColorR[10] = 215.00
      • Set VariableSet Vertex_ColorG[10] = 255.00
      • Set VariableSet Vertex_ColorB[10] = 255.00
  • Vertex Coloring
    • Events
      • Time - Vertex_Timer expires
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Vertex_Group and do (Actions)
        • Loop - Actions
          • Set VariableSet Vertex_Unit = (Picked unit)
          • Set VariableSet Vertex_CV = (Custom value of Vertex_Unit)
          • Set VariableSet Vertex_Time[Vertex_CV] = (Vertex_Time[Vertex_CV] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Vertex_Delay[Vertex_CV] Equal to True
            • Then - Actions
              • Set VariableSet Vertex_Delay[Vertex_CV] = False
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • Vertex_Time[Vertex_CV] Equal to 0
                      • (Vertex_Unit has buff Vertex_Buff[Vertex_CV]) Equal to False
                • Then - Actions
                  • -------- --------
                  • Unit - Remove Vertex_Ability[Vertex_CV] from Vertex_Unit
                  • Unit - Remove Vertex_Buff[Vertex_CV] buff from Vertex_Unit
                  • -------- --------
                  • Set VariableSet Vertex_Index = 1
                  • Set VariableSet Vertex_Boolean[Vertex_CV] = False
                  • Custom script: loop
                  • Custom script: exitwhen udg_Vertex_Index > 10
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Unit-type of Vertex_Unit) Equal to Vertex_ColorUnitType[Vertex_Index]
                    • Then - Actions
                      • Set VariableSet Vertex_Boolean[Vertex_CV] = True
                      • Custom script: exitwhen true
                    • Else - Actions
                  • Set VariableSet Vertex_Index = (Vertex_Index + 1)
                  • Custom script: endloop
                  • Unit Group - Remove Vertex_Unit from Vertex_Group.
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Vertex_Boolean[Vertex_CV] Equal to True
                    • Then - Actions
                      • Animation - Change Vertex_Unit's vertex coloring to (Vertex_ColorR[Vertex_Index]%, Vertex_ColorG[Vertex_Index]%, Vertex_ColorB[Vertex_Index]%) with 0.00% transparency
                    • Else - Actions
                      • Animation - Change Vertex_Unit's vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                • Else - Actions
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Vertex_Group) Equal to 0
        • Then - Actions
          • Game - Display to (All players) the text: OFF
          • Countdown Timer - Pause Vertex_Timer
          • Trigger - Turn off (This trigger)
        • Else - Actions

Changing the vertex color + faking the "slow" (based on your technique that you showed me in Axe's Battle Hunger :-D)
  • Eye of Skadi
    • Events
      • Game - DamageModifierEvent becomes Less than 1.00
    • Conditions
      • (DamageEventSource has an item of type Eye of Skadi) Equal to True
      • (DamageEventTarget is A structure) Equal to False
    • Actions
      • Set VariableSet HealReduction_CV = (Custom value of DamageEventTarget)
      • Set VariableSet HealReduction_Multiplier[HealReduction_CV] = 0.40
      • Set VariableSet HealReduction_Time[HealReduction_CV] = 15
      • Set VariableSet HealReduction_Buff[HealReduction_CV] = Slowed
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget is in HealReduction_Group.) Equal to False
        • Then - Actions
          • Unit Group - Add DamageEventTarget to HealReduction_Group
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Heal Reduction <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Heal Reduction <gen>
        • Else - Actions
      • -------- --------
      • Set VariableSet Vertex_CV = (Custom value of DamageEventTarget)
      • Set VariableSet Vertex_Time[Vertex_CV] = 15
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget is in Vertex_Group.) Equal to False
        • Then - Actions
          • Unit Group - Add DamageEventTarget to Vertex_Group
          • Set VariableSet Vertex_Ability[Vertex_CV] = Freeze (Undispellable)
          • Set VariableSet Vertex_Buff[Vertex_CV] = Slowed (Undispellable)
          • Set VariableSet Vertex_Delay[Vertex_CV] = True
          • -------- --------
          • Animation - Change DamageEventTarget's vertex coloring to (55.00%, 80.00%, 85.00%) with 0.00% transparency
          • -------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (DamageEventSource is A melee attacker) Equal to True
            • Then - Actions
              • Unit - Add Freeze (Undispellable) to DamageEventTarget
              • Unit - Remove Slowed (Undispellable) buff from DamageEventTarget
              • Ability - Set Ability: (Unit: DamageEventTarget's Ability with Ability Code: Freeze (Undispellable))'s Real Level Field: Movement Speed Increase (%) ('Oae1') of Level: 0 to (1.00 x -0.50)
              • Ability - Set Ability: (Unit: DamageEventTarget's Ability with Ability Code: Freeze (Undispellable))'s Real Level Field: Attack Speed Increase (%) ('Oae2') of Level: 0 to (1.00 x -0.50)
              • Unit - For DamageEventTarget, Ability Freeze (Undispellable), Disable ability: True, Hide UI: False
              • Unit - For DamageEventTarget, Ability Freeze (Undispellable), Disable ability: False, Hide UI: False
            • Else - Actions
              • Unit - Add Freeze (Undispellable) to DamageEventTarget
              • Unit - Remove Slowed (Undispellable) buff from DamageEventTarget
              • Ability - Set Ability: (Unit: DamageEventTarget's Ability with Ability Code: Freeze (Undispellable))'s Real Level Field: Movement Speed Increase (%) ('Oae1') of Level: 0 to (1.00 x -0.25)
              • Ability - Set Ability: (Unit: DamageEventTarget's Ability with Ability Code: Freeze (Undispellable))'s Real Level Field: Attack Speed Increase (%) ('Oae2') of Level: 0 to (1.00 x -0.25)
              • Unit - For DamageEventTarget, Ability Freeze (Undispellable), Disable ability: True, Hide UI: False
              • Unit - For DamageEventTarget, Ability Freeze (Undispellable), Disable ability: False, Hide UI: False
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Vertex Coloring <gen> is on) Equal to False
        • Then - Actions
          • Countdown Timer - Start Vertex_Timer as a Repeating timer that will expire in 0.20 seconds
          • Trigger - Turn on Vertex Coloring <gen>
        • Else - Actions
 
Status
Not open for further replies.
Top