• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[GUI] Thirsty Focus (X Mark the Spot)

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Info

=> Leakfree (I think)
=> MUI, MPI
=> Bugfree
Thirsty Focus

Learn Thirsty Focus - [Q]

In a sublime moment. A brand is created in the target and a static connection decreases or increases the vitality of the target for a few seconds, then pulls it to the brand. If the target is dead when pulled all the enemies around 300AoE of the brand will receive the same max damage. If the target is dead when pulled all the enemies around 300AoE of the brand will receive the same max damage.

Level 1 - Up to 2 seconds, 66 damage/heal.
Level 2 - Up to 3 seconds, 99 damage/heal.
Level 3 - Up to 4 seconds, 132 damage/heal.
Level 4 - Up to 5 seconds, 165 damage/heal.

Cooldown : 15.5
Mana Cost : 90/100/110/120

  • Thirsty Focus cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Thirsty Focus
    • Actions
      • -------- Get units ID --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • TF_Integer Greater than or equal to 999
        • Then - Actions
          • Set TF_Integer = 0
        • Else - Actions
      • Set TF_Integer = (TF_Integer + 1)
      • -------- Setup Triggering Units --------
      • Set TF_Caster[TF_Integer] = (Triggering unit)
      • Set TF_Target[TF_Integer] = (Target unit of ability being cast)
      • Special Effect - Create a special effect attached to the origin of TF_Target[TF_Integer] using Abilities\Spells\NightElf\Tranquility\TranquilityTarget.mdl
      • Set TF_Target_SFX[TF_Integer] = (Last created special effect)
      • Set TF_Damage[TF_Integer] = (((Level of Thirsty Focus for TF_Caster[TF_Integer]) x 33) + 33)
      • -------- Setup Point of Triggering Units --------
      • Set TF_Target_Point = (Position of TF_Target[TF_Integer])
      • -------- Setup Dummy --------
      • Set TF_Dummy_Lifetime = ((Level of Thirsty Focus for TF_Caster[TF_Integer]) + 1)
      • Set TF_Counter_Max[TF_Integer] = 33
      • Set TF_Counter_Min[TF_Integer] = 0
      • Set TF_Counter[TF_Integer] = TF_Dummy_Lifetime
      • Unit - Create 1 global_dummy for (Owner of TF_Caster[TF_Integer]) at TF_Target_Point facing Default building facing degrees
      • Set TF_Dummy = (Last created unit)
      • Set TF_Dummy_Point = (Position of TF_Dummy)
      • Special Effect - Create a special effect attached to the origin of TF_Dummy using Abilities\Spells\Undead\Darksummoning\DarkSummonTarget.mdl
      • Set TF_Dummy_SFX[TF_Integer] = (Last created special effect)
      • Unit - Set the custom value of TF_Dummy to TF_Integer
      • Unit - Add a (Real(TF_Dummy_Lifetime)) second Generic expiration timer to TF_Dummy
      • -------- Lightning --------
      • Lightning - Create a Drain Life lightning effect from source TF_Dummy_Point to target TF_Target_Point
      • Set TF_Lightning_Effect[TF_Integer] = (Last created lightning effect)
      • -------- Toggle Loop Actions --------
      • Unit Group - Add TF_Dummy to TF_Dummy_Group
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in TF_Dummy_Group) Greater than 0
        • Then - Actions
          • Trigger - Turn on Thirsty Focus loop <gen>
          • Trigger - Turn on Thirsty Focus ends <gen>
        • Else - Actions
      • -------- Destroy some Leaks --------
      • Custom script: call RemoveLocation(udg_TF_Target_Point)
      • Custom script: call RemoveLocation(udg_TF_Dummy_Point)
  • Thirsty Focus loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in TF_Dummy_Group and do (Actions)
        • Loop - Actions
          • Set TF_Dummy_Point = (Position of (Picked unit))
          • Set TF_Target_Point = (Position of TF_Target[(Custom value of (Picked unit))])
          • Lightning - Move TF_Lightning_Effect[(Custom value of (Picked unit))] to source TF_Dummy_Point and target TF_Target_Point
          • Animation - Change TF_Target[(Custom value of (Picked unit))]'s vertex coloring to (0.00%, (Real(TF_Counter_Min[(Custom value of (Picked unit))]))%, 0.00%) with (Real(TF_Counter_Min[(Custom value of (Picked unit))]))% transparency
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (TF_Counter_Min[(Custom value of (Picked unit))] Less than or equal to TF_Counter_Max[(Custom value of (Picked unit))]) and (TF_Counter[(Custom value of (Picked unit))] Greater than 0)
            • Then - Actions
              • Set TF_Counter_Min[(Custom value of (Picked unit))] = (TF_Counter_Min[(Custom value of (Picked unit))] + 1)
            • Else - Actions
              • Set TF_Counter_Min[(Custom value of (Picked unit))] = 0
              • Set TF_Counter[(Custom value of (Picked unit))] = (TF_Counter[(Custom value of (Picked unit))] - 1)
              • Floating Text - Create floating text that reads (String((TF_Counter[(Custom value of (Picked unit))] - 1))) at TF_Dummy_Point with Z offset 0.00, using font size 10.00, color (0.00%, 100.00%, 0.00%), and 0.00% transparency
              • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
              • Floating Text - Change (Last created floating text): Disable permanence
              • Floating Text - Change the fading age of (Last created floating text) to 2.00 seconds
              • Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
              • Custom script: call RemoveLocation(udg_TF_Target_Point)
              • Custom script: call RemoveLocation(udg_TF_Dummy_Point)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Owner of TF_Target[(Custom value of (Picked unit))]) Equal to (Owner of (Picked unit))
            • Then - Actions
              • Unit - Set life of TF_Target[(Custom value of (Picked unit))] to ((Life of TF_Target[(Custom value of (Picked unit))]) + 1.00)
              • Animation - Change TF_Target[(Custom value of (Picked unit))]'s size to ((100.00 + (Real(TF_Counter_Min[(Custom value of (Picked unit))])))%, (100.00 + (Real(TF_Counter_Min[(Custom value of (Picked unit))])))%, (100.00 + (Real(TF_Counter_Min[(Custom value of (Picked unit))])))%) of its original size
            • Else - Actions
              • Unit - Cause TF_Caster[(Custom value of (Picked unit))] to damage TF_Target[(Custom value of (Picked unit))], dealing 1.00 damage of attack type Spells and damage type Normal
              • Animation - Change TF_Target[(Custom value of (Picked unit))]'s size to ((100.00 - (Real(TF_Counter_Min[(Custom value of (Picked unit))])))%, (100.00 - (Real(TF_Counter_Min[(Custom value of (Picked unit))])))%, (100.00 - (Real(TF_Counter_Min[(Custom value of (Picked unit))])))%) of its original size
  • Thirsty Focus ends
    • Events
      • Unit - A unit Dies
    • Conditions
      • ((Triggering unit) is in TF_Dummy_Group) Equal to True
    • Actions
      • Set TF_End_Point = (Position of (Triggering unit))
      • Animation - Change TF_Target[(Custom value of (Triggering unit))]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
      • Animation - Change TF_Target[(Custom value of (Triggering unit))]'s size to (100.00%, 100.00%, 100.00%) of its original size
      • Special Effect - Create a special effect at TF_End_Point using Objects\Spawnmodels\Undead\UCancelDeath\UCancelDeath.mdl
      • Special Effect - Destroy (Last created special effect)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (TF_Target[(Custom value of (Triggering unit))] is alive) Not equal to True
        • Then - Actions
          • Unit Group - Pick every unit in (Units within 300.00 of TF_End_Point matching ((((Matching unit) is A structure) Not equal to True) or ((((Matching unit) is Magic Immune) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True)))) and do (Actions)
            • Loop - Actions
              • Unit - Cause TF_Caster[(Custom value of (Triggering unit))] to damage (Picked unit), dealing (Real(TF_Damage[(Custom value of (Triggering unit))])) damage of attack type Spells and damage type Normal
              • Set TF_Float_Point = (Position of (Picked unit))
              • Special Effect - Create a special effect at TF_Float_Point using Abilities\Spells\Demon\DarkConversion\ZombifyTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Custom script: call RemoveLocation (udg_TF_Float_Point)
        • Else - Actions
      • Unit - Turn collision for TF_Target[(Custom value of (Triggering unit))] Off
      • Unit - Move TF_Target[(Custom value of (Triggering unit))] instantly to TF_End_Point
      • Unit - Turn collision for TF_Target[(Custom value of (Triggering unit))] On
      • Lightning - Destroy TF_Lightning_Effect[(Custom value of (Triggering unit))]
      • Special Effect - Destroy TF_Dummy_SFX[(Custom value of (Triggering unit))]
      • Special Effect - Destroy TF_Target_SFX[(Custom value of (Triggering unit))]
      • Unit Group - Remove (Triggering unit) from TF_Dummy_Group
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in TF_Dummy_Group) Equal to 0
        • Then - Actions
          • Trigger - Turn off Thirsty Focus loop <gen>
          • Trigger - Turn off (This trigger)
        • Else - Actions
      • Custom script: call RemoveLocation(udg_TF_End_Point)


Changelog

* Eyecandy (Target Scaling)
* What was said by Maker
* Starts an effect of an ability
* Casting/ Dying Unit (Fix to Triggering Unit)
* I think this weird indexing works 100%. The custom value of the dummy does not affect anything, because it is a removable unit.
Keywords:
X, Mark, Spot, Link, Nether, Green, Orb, Chain, Life, Health, Cosmic, Energy, Spirit, Pull, Return, Point, Buster, Ghost, Banish, Ethereal, Sublime.
Contents

Thirsty Focus (Map)

Reviews
http://www.hiveworkshop.com/forums/spells-569/identify-system-1-00-a-183934/?prev=r%3D20%26status%3Dr2%26page%3D4112:21, 4th Mar 2011 Bribe: Read the comment I left.

Moderator

M

Moderator

http://www.hiveworkshop.com/forums/spells-569/identify-system-1-00-a-183934/?prev=r%3D20%26status%3Dr2%26page%3D4112:21, 4th Mar 2011
Bribe:

Read the comment I left.
 
Level 19
Joined
Feb 25, 2009
Messages
2,004
  • Then - Actions
    • Trigger - Turn on Thirsty Focus loop <gen>
    • Trigger - Run Thirsty Focus loop <gen> (checking conditions)
What the heck is this?

* Custom Value is not an acceptable type of indexing
* Spell can be exploited with the current event of execute
* (Triggering Unit) is much faster than the ones you are using

Please consider to use hashtables or normal indexing system.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
  • Custom script: call RemoveLocation(udg_TF_Target_Point)
  • Custom script: call RemoveLocation(udg_TF_Dummy_Point)
^Those should be inside the loop in Thirsty Focus loop.
You could consider turning the end trigger on/off. No reason to have it on while there's no active instance of the spell.
 

Bribe

Code Moderator
Level 50
Joined
Sep 26, 2009
Messages
9,464
(Custom value of (Picked unit)) and (Custom value of (Triggering unit)) are immensely spammed. These need to be set into a variable if used more than once, and since you use them... 5000 times it per second in that 0,03 second trigger... this has to be "Rejected until updated". Especially since Custom value conflicts with a lot of other systems.
 
Top