[Spell] Temporarily changing unit color

Level 8
Joined
May 13, 2023
Messages
111
I'm trying to change unit's vertex/tinting color temporarily but unfortunately have no luck with it, bcz getter function for Tinting Color Integer Field works but the setter doesnt so i have to use Animation Vertex color change function. This works but with drawbacks setting the value back to 100%/100%/100% alters the unit's original tinting color values meaning if it was 255/0/50 it will return to 255/255/255. Tried to store units tinting with hashtables but when saving the values it always saves 0 and loads 0 even though i altered it after saving?. Would appreciate any assistance.
  • Iron Curtain Init
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Iron Curtain
    • Actions
      • Set VariableSet AA_POS7 = (Target point of ability being cast)
      • Unit - Create 1 Dummy (Iron Curtain) for (Owner of (Triggering unit)) at AA_POS7 facing Default building facing degrees
      • Unit - Add a 0.80 second Generic expiration timer to (Last created unit)
      • Set VariableSet IronCurtainINDEX = (IronCurtainINDEX + 1)
      • Set VariableSet IronCurtainCaster[IronCurtainINDEX] = (Triggering unit)
      • Set VariableSet IronCurtainCounter[IronCurtainINDEX] = 0
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Level of Iron Curtain for IronCurtainCaster[IronCurtainINDEX]) Equal to 1
              • (Level of Iron Curtain for IronCurtainCaster[IronCurtainINDEX]) Equal to 2
        • Then - Actions
          • Set VariableSet IronCurtainPos[IronCurtainINDEX] = 400.00
          • Set VariableSet IronCurtainMaxCounter[IronCurtainINDEX] = 4
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Level of Iron Curtain for IronCurtainCaster[IronCurtainINDEX]) Equal to 3
                  • (Level of Iron Curtain for IronCurtainCaster[IronCurtainINDEX]) Equal to 4
            • Then - Actions
              • Set VariableSet IronCurtainPos[IronCurtainINDEX] = 500.00
              • Set VariableSet IronCurtainMaxCounter[IronCurtainINDEX] = 5
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (Level of Iron Curtain for IronCurtainCaster[IronCurtainINDEX]) Equal to 5
                      • (Level of Iron Curtain for IronCurtainCaster[IronCurtainINDEX]) Equal to 6
                • Then - Actions
                  • Set VariableSet IronCurtainPos[IronCurtainINDEX] = 600.00
                  • Set VariableSet IronCurtainMaxCounter[IronCurtainINDEX] = 6
                • Else - Actions
      • Unit Group - Pick every unit in (Units within IronCurtainPos[IronCurtainINDEX] of AA_POS7.) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is A structure) Equal to False
              • ((Picked unit) belongs to an ally of (Owner of IronCurtainCaster[IronCurtainINDEX]).) Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 99 of (Key (Picked unit).) from IronCurtainTable.) Equal to False
                • Then - Actions
                  • Hashtable - Save (Unit: (Picked unit)'s Integer Field: Tinting Color 1 (Red) ('uclr')) as 1 of (Key (Picked unit).) in IronCurtainTable.
                  • Hashtable - Save (Unit: (Picked unit)'s Integer Field: Tinting Color 2 (Green) ('uclg')) as 2 of (Key (Picked unit).) in IronCurtainTable.
                  • Hashtable - Save (Unit: (Picked unit)'s Integer Field: Tinting Color 3 (Blue) ('uclb')) as 3 of (Key (Picked unit).) in IronCurtainTable.
                  • Hashtable - Save True as 99 of (Key (Picked unit).) in IronCurtainTable.
                • Else - Actions
              • Animation - Change (Picked unit)'s vertex coloring to (0.00%, 0.00%, 0.00%) with 0.00% transparency
              • Unit - Make (Picked unit) Invulnerable
              • Unit Group - Add (Picked unit) to IronCurtainGroup[IronCurtainINDEX]
            • Else - Actions
      • Custom script: call RemoveLocation(udg_AA_POS7)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • IronCurtainINDEX Equal to 1
        • Then - Actions
          • Trigger - Turn on Iron Curtain End <gen>
        • Else - Actions
  • Iron Curtain End
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer IronCurtainLOOP) from 1 to IronCurtainINDEX, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • IronCurtainCounter[IronCurtainLOOP] Less than or equal to IronCurtainMaxCounter[IronCurtainLOOP]
            • Then - Actions
              • Set VariableSet IronCurtainCounter[IronCurtainLOOP] = (IronCurtainCounter[IronCurtainLOOP] + 1)
            • Else - Actions
              • Unit Group - Pick every unit in IronCurtainGroup[IronCurtainLOOP] and do (Actions)
                • Loop - Actions
                  • Set VariableSet IronCurtainVertex[0] = (Load 1 of (Key (Picked unit).) from IronCurtainTable.)
                  • Set VariableSet IronCurtainVertex[1] = (Load 2 of (Key (Picked unit).) from IronCurtainTable.)
                  • Set VariableSet IronCurtainVertex[2] = (Load 3 of (Key (Picked unit).) from IronCurtainTable.)
                  • Animation - Change (Picked unit)'s vertex coloring to ((((Real(IronCurtainVertex[0])) / 255.00) x 100.00)%, (((Real(IronCurtainVertex[1])) / 255.00) x 100.00)%, (((Real(IronCurtainVertex[2])) / 255.00) x 100.00)%) with 0.00% transparency
                  • Unit - Make (Picked unit) Vulnerable
              • Set VariableSet IronCurtainCaster[IronCurtainLOOP] = IronCurtainCaster[IronCurtainINDEX]
              • Set VariableSet IronCurtainMaxCounter[IronCurtainLOOP] = IronCurtainMaxCounter[IronCurtainINDEX]
              • Set VariableSet IronCurtainPos[IronCurtainLOOP] = IronCurtainPos[IronCurtainINDEX]
              • Set VariableSet IronCurtainCounter[IronCurtainLOOP] = IronCurtainCounter[IronCurtainINDEX]
              • Set VariableSet IronCurtainGroup[IronCurtainLOOP] = IronCurtainGroup[IronCurtainINDEX]
              • Set VariableSet IronCurtainINDEX = (IronCurtainINDEX - 1)
              • Set VariableSet IronCurtainLOOP = (IronCurtainLOOP - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • IronCurtainINDEX Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
 
Back
Top