1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. The Lich King demands your service! We've reached the 19th edition of the Icon Contest. Come along and make some chilling servants for the one true king.
    Dismiss Notice
  5. The 4th SFX Contest has started. Be sure to participate and have a fun factor in it.
    Dismiss Notice
  6. The poll for the 21st Terraining Contest is LIVE. Be sure to check out the entries and vote for one.
    Dismiss Notice
  7. The results are out! Check them out.
    Dismiss Notice
  8. Don’t forget to sign up for the Hive Cup. There’s a 555 EUR prize pool. Sign up now!
    Dismiss Notice
  9. The Hive Workshop Cup contest results have been announced! See the maps that'll be featured in the Hive Workshop Cup tournament!
    Dismiss Notice
  10. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

[GUI] Thirsty Focus (X Mark the Spot)

Submitted by War_Golum
This bundle is marked as substandard. It may contain bugs, not perform optimally or otherwise be in violation of the submission rules.
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


Codes

  • 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
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.
  1. 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.
     
  2. baassee

    baassee

    Joined:
    Nov 14, 2008
    Messages:
    3,220
    Resources:
    17
    Spells:
    14
    Tutorials:
    3
    Resources:
    17
    -Weird indexing

    -Change casting unit / dying unit into triggering unit

    -Change event to starts an effect of an ability

    -Have nothing more to say.
     
  3. MortAr

    MortAr

    Joined:
    Feb 25, 2009
    Messages:
    1,768
    Resources:
    7
    Icons:
    6
    Packs:
    1
    Resources:
    7
    • 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.
     
  4. Nightmare Moon

    Nightmare Moon

    Joined:
    Apr 16, 2010
    Messages:
    575
    Resources:
    9
    Icons:
    2
    Spells:
    7
    Resources:
    9
    Spell is very nice. But it needs more documentation, i think.
    3/5
     
  5. Maker

    Maker

    Joined:
    Mar 6, 2006
    Messages:
    9,181
    Resources:
    17
    Maps:
    2
    Spells:
    14
    Tutorials:
    1
    Resources:
    17
    • 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.
     
  6. Bribe

    Bribe

    Joined:
    Sep 26, 2009
    Messages:
    8,051
    Resources:
    25
    Maps:
    3
    Spells:
    10
    Tutorials:
    3
    JASS:
    9
    Resources:
    25
    "Custom value of units" will conflict with many, many other systems, this should use a hashtable or, even better, a unit-indexing library.
     
  7. Bribe

    Bribe

    Joined:
    Sep 26, 2009
    Messages:
    8,051
    Resources:
    25
    Maps:
    3
    Spells:
    10
    Tutorials:
    3
    JASS:
    9
    Resources:
    25
    (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.