1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Find your way through the deepest dungeon in the 18th Mini Mapping Contest Poll.
    Dismiss Notice
  3. A brave new world lies beyond the seven seas. Join the 34th Modeling Contest today!
    Dismiss Notice
  4. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
Hive 3 Remoosed BETA - NOW LIVE. Go check it out at BETA Hive Workshop! Post your feedback in this new forum BETA Feedback.
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Circle of Healing Whispers v1.01

Submitted by Pharaoh_
This bundle is marked as approved. It works and satisfies the submission rules.
Circle of Healing Whispers

The hero practises death magic and gains the ability of manipulating spiritual and living energies. Ally units around the hero will get their hit points or mana healed, up to the point of the circle they step into.

Level 1 - Lasts 5 seconds.
Level 2 - Lasts 10 seconds.
Level 3 - Lasts 15 seconds.

I'm actually very proud of this spell, because I really liked the result.

Please, credit me for my work, if you are going to use it!

Thank you for taking the time to download this resource and test it.

Comments appreciated.

Triggers
  • SL1
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Circle of Healing Whispers
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Load (Key alreadyhealing) of (Key (Triggering unit)) from SL_Hash) Equal to False
        • Then - Actions
          • Set SL_Points[1] = (Position of (Triggering unit))
          • Ubersplat - Create ubersplat at SL_Points[1] of type Undead Uber Splat with color (100.00%, 0.00%, 0.00%) and 0.00% transparency (Enable paused state, Enable skipping birth time)
          • Ubersplat - Change (Last created ubersplat): Enable render always state
          • Hashtable - Save Handle Of(Last created ubersplat) as (Key splat) of (Key (Triggering unit)) in SL_Hash
          • Hashtable - Save True as (Key alreadyhealing) of (Key (Triggering unit)) in (Last created hashtable)
          • Hashtable - Save 320.00 as (Key towards) of (Key (Triggering unit)) in SL_Hash
          • Hashtable - Save 10.00 as (Key distancetick) of (Key (Triggering unit)) in SL_Hash
          • Unit Group - Add (Triggering unit) to SL_Group
          • Custom script: call RemoveLocation (udg_SL_Points[1])
          • Trigger - Turn on SL2 <gen>
          • Trigger - Turn on SL5 <gen>
        • Else - Actions
          • -------- In case you change the cooldown --------
          • Game - Display to (Player group((Owner of (Triggering unit)))) the text: |c00ffcc33The hero ...

  • SL2
    • Events
      • Time - Every 0.70 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (SL_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in SL_Group and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load (Key alreadyhealing) of (Key (Picked unit)) from SL_Hash) Equal to True
                • Then - Actions
                  • Set SL_Points[2] = (Position of (Picked unit))
                  • Set SL_Real = (Load (Key towards) of (Key (Picked unit)) from SL_Hash)
                  • Set SL_DistanceTick = (Load (Key distancetick) of (Key (Picked unit)) from SL_Hash)
                  • -------- Dummy wisps creation --------
                  • For each (Integer SL_PointsInteger) from 1 to 5, do (Actions)
                    • Loop - Actions
                      • Set SL_Points[3] = (SL_Points[2] offset by SL_Real towards (36.00 x (Real(SL_PointsInteger))) degrees)
                      • Unit - Create 1 Dummy (COHW) for (Owner of (Picked unit)) at SL_Points[3] facing (Angle from SL_Points[3] to SL_Points[2]) degrees
                      • Hashtable - Save True as (Key health) of (Key (Last created unit)) in SL_Hash
                      • -------- Adding expiration timer to Dummy. Formula: Distance you choose * 2 (or how many times you want the dummy to move further) --------
                      • -------- / SL_DistanceTick (this affects the offset distance the dummies are moved in the "SL3" trigger = how fast they move) --------
                      • -------- * 0.05 = The time event of "SL3" trigger. --------
                      • -------- So, this formula will calculate in how much time the dummies will move the double distance (SL_Real * 2) --------
                      • Unit - Add a (((SL_Real x 2.00) / SL_DistanceTick) x 0.05) second Generic expiration timer to (Last created unit)
                      • -------- Changing the Wisp's color to green, so as to represent "Health" --------
                      • Unit - Change color of (Last created unit) to Green
                      • -------- Saving the casting unit on the dummy, in order to perform specific actions in "SL3" trigger. --------
                      • Hashtable - Save Handle Of(Picked unit) as (Key mainunit) of (Key (Last created unit)) in SL_Hash
                      • -------- Adding the dummies into the SL_DummyGroup, to keep the moving in "SL3" trigger. --------
                      • Unit Group - Add (Last created unit) to SL_DummyGroup
                      • -------- Saving the path of the models used for the healing effect. --------
                      • Hashtable - Save Abilities\Spells\Items\StaffOfPurification\PurificationTarget.mdl as (Key sfx1) of (Key (Last created unit)) in SL_Hash
                      • Hashtable - Save Abilities\Spells\Items\AIma\AImaTarget.mdl as (Key sfx2) of (Key (Last created unit)) in SL_Hash
                      • -------- Leak removal --------
                      • Custom script: call RemoveLocation (udg_SL_Points[3])
                  • Custom script: call RemoveLocation (udg_SL_Points[2])
                  • Trigger - Turn on SL3 <gen>
                  • Trigger - Turn on SL6 <gen>
                • Else - Actions

  • SL3
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (SL_DummyGroup is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in SL_DummyGroup and do (Actions)
            • Loop - Actions
              • Set SL_DistanceTick = (Load (Key distancetick) of (Key (Load (Key mainunit) of (Key (Picked unit)) in SL_Hash)) from SL_Hash)
              • Set SL_Points[4] = (Position of (Picked unit))
              • Set SL_Points[5] = (Position of (Load (Key mainunit) of (Key (Picked unit)) in SL_Hash))
              • Set SL_Points[6] = (SL_Points[4] offset by SL_DistanceTick towards (Facing of (Picked unit)) degrees)
              • Unit - Move (Picked unit) instantly to SL_Points[6]
              • Set SL_Healer[1] = (Picked unit)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between SL_Points[4] and SL_Points[5]) Less than or equal to (SL_DistanceTick + 2.00)
                • Then - Actions
                  • Unit - Change color of (Picked unit) to Blue
                  • Hashtable - Save False as (Key health) of (Key SL_Healer[1]) in SL_Hash
                • Else - Actions
              • Custom script: call DestroyGroup (udg_SL_HealGroups)
              • Custom script: call RemoveLocation (udg_SL_Points[4])
              • Custom script: call RemoveLocation (udg_SL_Points[5])
              • Custom script: call RemoveLocation (udg_SL_Points[6])

  • SL4
    • Events
      • Unit - A unit Stops casting an ability
      • Unit - A unit Finishes casting an ability
    • Conditions
      • (Load (Key alreadyhealing) of (Key (Triggering unit)) from SL_Hash) Equal to True
    • Actions
      • Ubersplat - Destroy (Load (Key splat) of (Key (Triggering unit)) in SL_Hash)
      • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in SL_Hash

  • SL5
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Dummy (COHW)
    • Actions
      • Unit Group - Remove (Triggering unit) from SL_DummyGroup
      • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in SL_Hash
      • Unit - Remove (Triggering unit) from the game

  • SL6
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (SL_DummyGroup is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in SL_DummyGroup and do (Actions)
            • Loop - Actions
              • Set SL_Points[6] = (Position of (Picked unit))
              • Set SL_Healer[2] = (Picked unit)
              • Set SL_HealGroups = (Units within 128.00 of SL_Points[6] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an ally of (Owner of (Picked unit))) Equal to True) and ((Matching unit) Not equ
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in SL_HealGroups) Not equal to 0
                • Then - Actions
                  • Unit Group - Pick every unit in SL_HealGroups and do (Actions)
                    • Loop - Actions
                      • Set SL_HealthBoolean = (Load (Key health) of (Key SL_Healer[2]) from SL_Hash)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • SL_HealthBoolean Equal to True
                        • Then - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Life of (Picked unit)) Less than (Max life of (Picked unit))
                            • Then - Actions
                              • Set SL_SFXHeal[1] = (Load (Key sfx1) of (Key SL_Healer[2]) from SL_Hash)
                              • Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + 3.00)
                              • Special Effect - Create a special effect attached to the chest of (Picked unit) using SL_SFXHeal[1]
                              • Special Effect - Destroy (Last created special effect)
                            • Else - Actions
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Mana of (Picked unit)) Less than (Max mana of (Picked unit))
                            • Then - Actions
                              • Set SL_SFXHeal[2] = (Load (Key sfx2) of (Key SL_Healer[2]) from SL_Hash)
                              • Unit - Set mana of (Picked unit) to ((Mana of (Picked unit)) + 1.00)
                              • Special Effect - Create a special effect attached to the chest of (Picked unit) using SL_SFXHeal[2]
                              • Special Effect - Destroy (Last created special effect)
                            • Else - Actions
                • Else - Actions
              • Custom script: call DestroyGroup (udg_SL_HealGroups)
              • Custom script: call RemoveLocation (udg_SL_Points[6])


Keywords:
Magic, Summon, Invoke, Death, Heal, Health, Mana, Soul, Blue, Green, Wisp, Circle, Ubersplat
Contents

... (Map)

Reviews
Moderator
12:03, 17th Jun 2010 TriggerHappy: Appeared to be leakless and MUI, nice spell too.
  1. 12:03, 17th Jun 2010
    TriggerHappy:

    Appeared to be leakless and MUI, nice spell too.
     
  2. Maker

    Maker

    Joined:
    Mar 6, 2006
    Messages:
    9,174
    Resources:
    17
    Maps:
    2
    Spells:
    14
    Tutorials:
    1
    Resources:
    17
    The spell looks quite cool and I like the concept.

    Maybe you could separate the "Lasts 5 seconds" in the tooltip from the description. Add two line changes.

    You have one <last created hashtable> in the first trigger.

    Using 0.05 seconds makes the movement of the wisps look jerky to me. Try 0.03.

    Why is this
    • Custom script: call DestroyGroup (udg_SL_HealGroups)

    in SL3 trigger?

    The wisps disappear quite abruptly. Maybe create a special effect, or make them fade away.

    SL4 could be turned on/off too.

    I think this check isn't needed in SL6.
    • (Number of units in SL_HealGroups) Not equal to 0

    If the group is empty, it won't do anything anyway.

    Do you remove the caster from SL_Group?

    Is the "already healing" boolean necessary? Can't you just chech whether the unit is in SL_Group?
     
  3. X-OMG-X

    X-OMG-X

    Joined:
    Nov 10, 2008
    Messages:
    1,940
    Resources:
    16
    Icons:
    1
    Skins:
    3
    Maps:
    2
    Spells:
    8
    Template:
    1
    Tutorials:
    1
    Resources:
    16
    This is really cool. I love the special effects. But as Maker says, the whisps should fade away. It would give the eyecandy a big plus.
     
  4. Kingz

    Kingz

    Joined:
    Jun 5, 2008
    Messages:
    2,470
    Resources:
    6
    Spells:
    5
    Tutorials:
    1
    Resources:
    6
    The special effects are a win.

    However try playing wisp's death animation instead of removing them?

    Other solution is to create a GFX to cover that up(i suggest blink effect or night elf building explosion) which gives a better feeling.

    This spell idea is not only refreshing but the concept is great.
     
  5. Pharaoh_

    Pharaoh_

    Joined:
    Nov 6, 2008
    Messages:
    8,128
    Resources:
    11
    Icons:
    3
    Skins:
    1
    Spells:
    6
    Tutorials:
    1
    Resources:
    11
    Hello, thank you for the feedback.
    I added a death effect to the wisps, I removed the unecessary "call DestroyGroup (udg_HealGroups)", I changed the tooltip (the "Lasts X seconds" part to be lower than the actual tooltip), I now remove the caster from the SL_Group. I also changed it, so that it checks whether the caster is in SL_Group, in order to avoid use of boolean. Changed 0.05 to 0.03.

    Other:
    If I turn on/off SL4, it doesn't work correctly.
    If I don't make this check, suspicious lag comes up.
     
  6. D4RK_G4ND4LF

    D4RK_G4ND4LF

    Joined:
    Feb 4, 2009
    Messages:
    1,196
    Resources:
    20
    Models:
    3
    Spells:
    15
    Tutorials:
    2
    Resources:
    20
    awesome :D
    another person besides me who can use ubersplats :thumbs_up:

    great spell (could be done with 2 triggers but I like it anyway)
     
  7. Bluebay

    Bluebay

    Joined:
    May 7, 2008
    Messages:
    100
    Resources:
    7
    Icons:
    1
    Maps:
    1
    Spells:
    5
    Resources:
    7
    Hi, I think this spell smells pretty good to me.
    Great concept, effects, triggering...
    No wai ! To me it's a 5/5 and a +rep.
    Congratulations
     
  8. Vengeancekael

    Vengeancekael

    Joined:
    Aug 11, 2009
    Messages:
    5,740
    Resources:
    16
    Tools:
    1
    Maps:
    13
    Spells:
    1
    StarCraft II Resources:
    1
    Resources:
    16
    lol the terrain is better than any terrain i made:) i'm not gonna say anything about the triggers, since bugs have already been reported. i like the effects. +rep
     
  9. watermelon_1234

    watermelon_1234

    Joined:
    Nov 18, 2007
    Messages:
    1,066
    Resources:
    10
    Spells:
    9
    JASS:
    1
    Resources:
    10
    Spell idea was pretty nice, and I liked the effects.
    I just have two suggestions for the eye candy of the spell:

    • Make the wisps vanish as soon as the spell ends. (It looks a bit strange to see them still there if the spell abruptly ends.)
    • I felt that it was static to see the healing wisps always came from the front and mana wisps from the bottom of the caster.
      You could make the wisps' offset depend on the caster's facing angle. Or you could make the wisps come in an alternating pattern. (So that the healing circle becomes more colorful and a bit more random)
      Of course, you shouldn't change this if you intended the spell to be like this.
    I'll give this 4/5 for now.
     
  10. emobroken22

    emobroken22

    Joined:
    Mar 3, 2009
    Messages:
    9
    Resources:
    0
    Resources:
    0
    i vote for approval..its quite useful as a spell and a creative and unique idea..^^
     
  11. Spoontoobig

    Spoontoobig

    Joined:
    Nov 3, 2009
    Messages:
    685
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Incredible! Very nice! 5/5 +REP
     
  12. kuchee1

    kuchee1

    Joined:
    Jul 2, 2010
    Messages:
    9
    Resources:
    0
    Resources:
    0
    i tried it, good job!:thumbs_up:
     
  13. Maximum_Evil

    Maximum_Evil

    Joined:
    Nov 28, 2009
    Messages:
    1,529
    Resources:
    4
    Maps:
    4
    Resources:
    4
    though this spell looks awesome, it's almost impossible to edit :S